AWS Systems Manager でWindows Server にRDPする!
(やりたかったこと)
・プライベートサブネットのEC2(Windows)をRDPでメンテナンスする
・踏み台サーバは作りたくない
(実現方法)
・AWS Systems Manager(SSM)でWindows Server にRDPする
1.マネージドインスタンスにする
2.SSMセッションマネージャーを使う
(はまったこと)
●パブリックサブネットとプライベートサブネットで実現方法が異なっていた
・パブリックサブネットでインターネットにアクセスできれば「SSM」でアクセス可能
・プライベートサブネットでインターネットにアクセスできない環境であれば、「SSM+VPCエンドポイント」でアクセス可能
(前提条件)
・VPC、プライベートサブネット、EC2を事前に作成する
・SSMを利用するAWS用のユーザ(ssmuser)を作成する
・パソコンにAWS CLI、SSMプラグインをインストールする
・SSM用のグループ(AWSSSMaccess-G)を作成、ssmuserを追加する
・AWSSSMaccess-Gに2つのポリシーをアタッチ
・AmazonEC2ReadOnlyAccess
・AmazonSSMFullAccess
(やったこと)
1.マネージドインスタンスにする
①EC2(Windows)にSSM Agentを入れる(大体はデフォルトで入っている)
②SSM APIへの通信経路を確保する。SSM AgentからSSM APIへアウトバウンド通信が発生する。これを確保する。SSM Agentからインターネットにアクセスできない場合、VPCエンドポイントを利用してSSM APIへの経路を確保する。VPCに3つのエンドポイントを追加、EC2からの接続(443)を許可するSGを作成し、エンドポイントにアタッチ。
・com.amazonaws.ap-northeast-1.ssm
・com.amazonaws.ap-northeast-1.ec2messages
・com.amazonaws.ap-northeast-1.ssmmessages
③EC2にIAMロールをアタッチする
・IAMポリシー「AmazonSSMManagedInstanceCore」をEC2用のIAMロールにアタッチ
2.SSMセッションマネージャーを使う(セッションマネージャーで直接アクセス)
①パソコン側の操作
・aws configure、ssmuser のAccess Key ID、Secret Access Key、を入力
・aws ssm start-session --target EC2のインスタンスID --document-name AWS-StartPortForwardingSession --parameters "portNumber=3389, localPortNumber=13389"
・コマンドプロンプト画面で「Waiting for connections...」と表示されれば、RDP画面を起動
・アクセス先を「localhost:13389」とする
・WindowsのID、パスワードを入力する