Session ManagerでプライベートEC2に接続
今回のテーマ
1つ前のブログでは、EC2 Instance Connect Endpointで、プライベートサブネットに配置したEC2に接続しました。
今回は、それより実務向きと思われるSession Managerでの接続手順を試してみたいと思います。
前提
前回までのブログで用意したプライベートサブネット上のEC2を使います。
手順
ロールを作成
IAMコンソールからロール、「ロールを作成」で進めます。
信頼されたエンティティタイプは「AWSのサービス」、ユースケースは「EC2」とします。
許可ポリシーには「AmazonSSMManagedInstanceCore」を選択します。
以上の設定で「ロールを作成」します。
EC2インスタンスにロールを設定
EC2コンソールから、プライベートEC2を選択し、アクション≫セキュリティ≫IAMロールを変更で、作成したロールを設定します。
VPCエンドポイント用のセキュリティグループを作成
インバウンドルールとして、HTTPS(443)で0.0.0.0/0で作成します。
VPCエンドポイントを作成
今回は3つのエンドポイントが必要になります。
VPCコンソールからエンドポイント、「エンドポイントを作成」で進めます。
サービスカテゴリは「AWSのサービス」で、サービスはそれぞれ以下の3つで作成します。
- 〜.ssm
- 〜.ec2messages
- 〜.ssmmessages
VPCは今回のVPCを選択し、サブネットは該当するプライベートサブネットを全て選択します。
セキュリティグループは先ほどVPCエンドポイントように作成したものを指定します。
以上の設定で「エンドポイントを作成」します。
※同じ手順で3つ作成してください。
プライベートEC2のセキュリティグループ調整
VPCエンドポイントからのトラフィックを受けられるように、インバウンドルールを追加します。
HTTPS(443)で、VPCエンドポイント用のセキュリティグループを許可するインバウンドルールを追加します。
プライベートEC2にセッションマネージャーで接続
EC2コンソールから、対象のプライベートEC2に「接続」します。
接続方法は「セッションマネージャー」を選択します。
CLIの画面に遷移し、接続が確認できました。
まとめ
今回の手順で気になったのはエンドポイントのインバウンドルールが0.0.0.0/0で無制限という点です。
EC2コンソールのセグメントに限定する必要はありそうです。
また、今回の手順はプライベートサブネットのEC2に対するものであったため、VPCエンドポイントが必要でしたが、パブリックなEC2であればIAMロールの適用だけで接続可能なようです。
SSHを使えないなどの要件がある場合は、この方法が活用できると思いました。