[セッションレポート] 1日でSSHをやめることができた話 〜AWS Systems Manager Session Manager 導入と運用Tips〜 #jawsdays #jawsug #jd2019_e
公開時、登壇者:金井様の所属会社名を誤って記載しておりました。ご指摘を受け修正致しました。
- 誤 : 株式会社JUIBLEE WORKS
- 正 : 株式会社JUBILEE WORKS
関係者の方々にはご迷惑をお掛けし誠に失礼致しました。この場を借りてお詫び致します。
本日開催されている JAWS DAYS 2019 、Eトラックで行われた下記セッションをレポートします。EC2 インスタンスに SSH 接続するのを実際に止め、 AWS Systems Manager Session Manager の利用に移行された際の知見が公開されました。
登壇者の金井さんは株式会社 JUBILEE WORKS 所属とのこと。私事ながら個人的にお世話になっている TimeTree サービスの舞台裏の話を少しだけ伺うことができました。
スピーカー
- 金井 栄喜さん / 株式会社JUBILEE WORKS
最近、AWS Systems Manager Session Managerを導入してSSHを廃止しました。 そこで実際に体験した、具体的な導入方法や導入の際の注意点、運用で工夫したこと、導入したことによるメリットなどを紹介したいと思います。
資料
内容
株式会社 JUBILEE WORKS
- TimeTree サービスの運営
Session Managerとは
- AWS Systems Manager Session Manager - AWS Systems Manager
- SSH で煩わしいこと -> Session Manager でどうなるか
- ユーザ管理 -> IAM
- 鍵管理 -> 証明書不要
- IP許可 -> SG不要
- アクセス履歴 -> ログ(CWLogs, S3)
- (登壇者の環境では)メリットしかなかった
- SSH の煩わしさが全て解消できた
Systems Manager の導入
- 必要なのは以下の 4つ
- インスタンスプロファイル作成(IAMロール
- VPCエンドポイント作成
- Session Managerログ設定
- SSMエージェントインストール
インスタンスプロファイル作成
- IAM ロール
- 単に
AmazonEC2RoleforSSM
をあてることが多い - これだと権限が広い
- カスタムポリシーを作成することをお勧めする
- ログイン可否などをコントロール出来る(詳しくは後述)
- ドキュメント
- ステップ 2: Session Manager アクセス権限を使用して、IAM インスタンスプロファイルロールを確認し、作成する - AWS Systems Manager
VPCエンドポイント作成
- 4 つ作成する
- 各 AZ ごとに
- 東京リージョンにはひとつ作れない AZ がある
- AZ間通信で問題はない
- そのうち作れるようになるのでは
- ドキュメント
- Systems Manager の VPC エンドポイントの設定 - AWS Systems Manager
ログ設定
- これをしないとコマンド履歴が残らない
- 以下の二種類の片方 or 両方
- CloudWatch Logs (直近の検索が簡単)
- S3 (永続的ならこちら)
- マネジメントコンソールがよく出来ているので迷わないのでは
SSMエージェントインストール
- 最近の AMI には最初からはいっている
導入後の運用
- やっておいたほうがいいこと
- CloudWatch Eventsを監視
- StartSession、TerminateSession、ResumeSession
- Slackに通知するようにしている
- イベント名
- 実施したIAMユーザ
- 通知について(通知先)
- イベント実行したユーザにメンション
- なりすましに気付く
- パブリックチャネル
- 誰がいつ何をやっているかが可視化される
- IAMユーザについて
- 誰がなにをやっているか明確にすることが大切
- セッションを開始できるインスタンスを制限することも可能なので、やってきるとよい
- ex)
resourceTag/Env : production
- 本番環境タグがついているインスタンスに対しては拒否、など
- 1日かからないくらいで導入できた
(セッションとしての)まとめ
- メリットしかなかった(ない場合もあるかも、よく考えること
- 基本は公式ドキュメントをみる
- SessionManagerについてはとても読みやすい
- 導入後の運用が大切
おまけ・よりセキュアにするために
- MFAの強制
- ログインだけでなく、リソースへのアクセスもやるとよい
- AWSリソースをソースコードで管理
- TerraForm、CFn
所感
半コマながら、実体験に基づくとても有益なセッションでした。
Session Manager は SSH とは挙動が異なるところがあり、注意が必要な側面もありますが、使いこなせば非常に強力なツールだと思います。まだ使ったことがないという方がいましたら、是非試してみて下さい。