EC2鍵やAWS_ACCESS_KEYの管理から開放されたいと思ったことはないですか?
僕は毎日思っています。セッションマネージャを使えば、鍵管理不要でセキュアなサーバが作れます。
セッションマネージャとは?
- AWSが2018/9に発表した、EC2を操作できる対話型シェル
セッションマネージャはなにが嬉しいのか?
- SSHがなくてもサーバ作業が可能になる
- EC2鍵管理をなくし、およびSSHポート開放も不要になる
- AWS ACCESS KEYの管理を減らせる可能性がある
- ローカルPCにAWS ACCESS KEYを置いてAWS作業を行っている場合、AWS ACCESS KEY自体を不要にできる。
- 例えば、EC2にIAMロールを付与すれば、AWS ACCESS KEYがなくてもIAMロール権限でAWS CLIやSDKを実行できるが、セッションマネージャからEC2にログインしてAWS作業を行うようにすれば、AWS ACCESS KEYの管理が不要になる
- コマンドログがS3に格納されるので、監査の要件も満たせる
雰囲気
セッションマネージャの使い方
- EC2にSSMエージェントをインストールする(2.3.12以上)
- 本来、Amaxon LinuxにはデフォルトでSSMエージェントがinstallされているが、2018/10/4時点では残念なことにinstallされているバージョンが古いので、upgradeが必要
- AmazonEC2RoleforSSMポリシーを付与したロールを作成し、EC2に付与する
- AWS → SystemManager → セッションマネージャ → セッションの開始
- ログイン後、ec2-userにスイッチすればいつものサーバ作業が可能になる
セキュア風サーバの作り方
- 新規のEC2キーペアを作成する
- 新規のEC2キーペアを用いてEC2を起動する
- お好きなIAMロールを付与する
- UserData等でSSMエージェントをupgradeする。(現状のAmazonLinux2だとSSMエージェントバージョンが古いので更新が必要。AMIがもっと最新になることを期待)
- ローカルに勝手にダウンロードされるEC2キーペアを削除する
- AWS上からもEC2キーペアを削除する
- セッションマネージャからEC2にログインし、SSHデーモンなど不要なプロセスを落とす
- SSHポートも当然付与しない
これでIAMロール権限に沿ったAWS作業が可能になります。
できないこと例
- ファイルアップロードみたいなことはできない。でもgit pullできるようにすればあんまり困らない。
-
Ansible等の構成管理ツールは当てられない- 追記: 最近はSSM + Ansible連携等もできます