こんにちは、イーゴリです!
「プライベートサブネットにあるEC2インスタンスに踏台サーバを使わずにOSログインするにはどうすれば良いの?」と疑問に思う方へ、本日の記事でVPC エンドポイントをご紹介したいと思います。
記事の目標
プライベートサブネットにあるEC2にAWS Systems ManagerのFleet Manager - リモートデスクトップ(RDP)及びセッションマネージャで接続ができるようにする。
解決方法
Systems Manager で管理できるようになるためには、プライベートサブネットにある EC2 インスタンスに対して下記の要件を満たす必要があります。
① 対象のEC2インスタンスにSSMエージェントがインストールされていること(Windows Serverの場合、すでに入っている)→デフォルトでSSM agent が入っている対象OSリストはこちらの記事に書いてあります。
② 対象のEC2インスタンスに適切なIAMロールが付与されていること
③ 適切なVPC エンドポイントが設定されている
①と②は大体どなたでもイメージできると思いますが、③(VPC エンドポイント)について下記で補足致します。
VPC エンドポイントとは?
異なるVPC/リージョンもしくはVPC外にあるAWSサービス同士の通信をインターネットを経由することなくAWSのネットワーク内で繋ぐサービスです。
- 今回のEC2はプライベートサブネットにありますので、VPC外のアクセスはありません。
- AWS Systems ManagerがVPC外にあります
ので、EC2<-->AWS Systems Manager間の通信はありません。
なお、今回のVPC エンドポイントは「Interface」のエンドポイントタイプのため、VPC エンドポイントごとの「Interface」のエンドポイントを作ることで紐付いたサブネットの1つのIPアドレスを取得しますので、ご承知おきください。
今回は3つのVPC エンドポイント(Interfaceタイプ)を作りますので、1つのプライベートのサブネットの中に3つのサブネットのIPが取得されます。
構築
SSM Agentの確認
Windows Serverの場合、SSM Agentがインストールされているので、このステップはスキップしますが、他のOSに関しては下記の公式ページでご確認ください。
IAMロールの付与
「AmazonSSMManagedInstanceCore」というポリシーを対象のEC2のロールに入れます。
ロールがない場合、新規ロールに「AmazonSSMManagedInstanceCore」というポリシーを入れて、作成します。そしてEC2に付与します(アクション>セキュリティ>IAM ロールを変更)。
VPC エンドポイントの作成
要件
エンドポイント
Systems Manager を使用して管理できるようにするには、下記の3つのVPC エンドポイントを作成する必要があります。
- com.amazonaws.[region].ssm
- com.amazonaws.[region].ec2messages
- com.amazonaws.[region].ssmmessages
セッションマネージャを使用するには下記の2つのみのVPC エンドポイントを作成するだけで充分です。
- com.amazonaws.[region].ssm
- com.amazonaws.[region].ssmmessages
参考資料:aws.amazon.com
なお、Session Manager に AWS Key Management Service の暗号化を使用する場合は下記のVPC エンドポイントを作成する必要があります。
- com.amazonaws.region.kms
VPCのDNS有効化
対象のVPCで下記の設定が有効になっていることをご確認ください(下記が有効な状態じゃないとエンドポイントの作成中にエラーが発生します)。
- 「DNS ホスト名」が有効化になっていること
- 「DNS 解決」が有効化になっていること
対象EC2のセキュリティグループ
対象EC2へ通信が届くためには、最低限、EC2のセキュリティグループに下記のアウトバウンドルールを設定する必要があります。
項目 | 設定値 |
---|---|
アウトバウンド | HTTPS (ポート 443) |
ソース | VPC/サブネットのCIDRもしくはVPC エンドポイントのSG |
エンドポイントの作成
[VPC]>[エンドポイント]>[エンドポイントを作成]をクリックします。
[サービスカテゴリ]:[AWS のサービス] [サービス]:[com.amazonaws.<対象リージョン>.ssm]
対象VPCを選択し、どのサブネットに紐づきたいか選択します(今回は1つのプライベートサブネット)。
[セキュリティグループ]:最低限、セキュリティグループに下記のポートを追加する必要があります。
項目 | 設定値 |
---|---|
インバウンド | HTTPS (ポート 443) |
ソース | 対象VPCのサブネット CIDR |
[ポリシー]:今回は[フルアクセス]を選択しますが、[カスタム]を選択しまうとIAMポリシーでルールをカスタマイズできます。
[エンドポイントを作成]をクリックします。
繰り返し、上記と同じように下記のVPC エンドポイントを追加します。
- com.amazonaws.[region].ec2messages
- com.amazonaws.[region].ssmmessages
変更箇所は[サービス]:[com.amazonaws.<対象リージョン>.ec2messages/ssmmessages]のみです。
構築結果は下記となります。
確認方法
対象のEC2がフリートマネージャーに表示されることの確認
[AWS Systems Manager]>[フリートマネージャー]をクリックします。
インスタンスが表示されるまで少し時間がかかる場合もよくありますので、待機します。
対象EC2インスタンスが表示されるようになりました。
Fleet Manager - リモートデスクトップ(RDP)でEC2に接続できることを確認
セッションマネージャでEC2に接続できることを確認
以上、御一読ありがとうございました。
本田 イーゴリ (記事一覧)
カスタマーサクセス部
・2024 Japan AWS Top Engineers (Security)
・AWS SAP, DOP, SCS, DBS, SAA, DVA, CLF
・Azure AZ-900
・EC-Council CCSE
趣味:日本国内旅行(47都道府県制覇)・ドライブ・音楽