EC2 Instance Connectとは
概要
EC2 Instance Connect は、踏み台サーバーや VPN、専用線などで VPC とオンプレミス環境を接続していない場合でも、
プライベートサブネット内の EC2 インスタンスへ安全にアクセスできる仕組みです。
インターネットゲートウェイ経由のルートが存在しないサブネットであっても、
EC2 Instance Connect エンドポイントを経由することでインターネットからインスタンスへ接続できます。
そのため、外出先などからも安全なリモートデスクトップ接続が可能です。

料金
EC2 Instance Connect の利用に追加料金は発生しません。
ただし、エンドポイントを配置するAZ(アベイラビリティーゾーン)と接続先EC2インスタンスのAZが異なる場合、AZ間のデータ転送料金が発生します。
EC2 Instance Connect を使ってEC2(Windows Server)にリモートデスクトップ接続する手順
・IAMポリシー、ユーザーの作成
最小権限の原則に基づき、EC2 Instance Connectでリモートデスクトップ接続する専用のIAMユーザーを作成します。
以下のIAMポリシーを作成し、新たに作成したIAMユーザーにポリシーを付与します。
{
"Version":"2012-10-17",
"Statement": \[{
"Sid": "EC2InstanceConnect",
"Action": "ec2-instance-connect:OpenTunnel",
"Effect": "Allow",
"Resource": "arn:aws:ec2:リージョン:アカウントID:instance-connect-endpoint/\*,
"Condition": {
"NumericEquals": {
"ec2-instance-connect:remotePort": "3389"
},
"IpAddress": {
"ec2-instance-connect:privateIpAddress": "接続するサーバがあるサブネットのCIDR"
},
"NumericLessThanEquals": {
"ec2-instance-connect:maxTunnelDuration": "3600"
}
}
},
{
"Sid": "Describe",
"Action": \[
"ec2:DescribeInstances",
"ec2:DescribeInstanceConnectEndpoints"
],
"Effect": "Allow",
"Resource": "\*"
}
]
}
セキュリティグループの設定
EC2 Instance Connectエンドポイントから接続するEC2へのアウトバウンド通信を許可する必要があります。
そのためエンドポイント用のセキュリティグループのアウトバウンドルールに、
接続するEC2に関連付けられているセキュリティグループを送信先として指定します。

接続するEC2のセキュリティグループには、
EC2 Instance Connect エンドポイントからのインバウンド通信を許可するルールを追加します。

EC2 Instance Connect エンドポイントの作成
AWSマネージメントコンソールでVPCコンソールを開きます。
左ペインの「エンドポイント」を選択し、「エンドポイントの作成」を選択して以下の設定を行います。

AWS CLI のインストール
以下のAWS公式ドキュメントを参考にAWS CLIをインストールします。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html
AWS CLIのインストール後、作成したIAMユーザーのAK/SK(AccessKey・Secret AccessKey)を有効化して、
以下のコマンド(aws configure)をターミナル等で入力してプロファイルを設定します。
$ aws configure AWS Access Key ID \[None]: 作成したユーザーのアクセスキー AWS Secret Access Key \[None]: 作成したユーザーのシークレットアクセスキー Default region name \[None]: リージョン Default output format \[None]: json
- ※定期的にアクセスキーのローテーションをすることを推奨いたします。
- ※可能であればIDプロバイダーとのフェデレーションを使用するとより安全に利用できます。
- ※不要になったアクセスキーは削除してください。
リモートデスクトップ接続
ターミナル等で以下のコマンドを入力し、リモートデスクトップ接続をします。
aws ec2-instance-connect open-tunnel --instance-id 接続するEC2のインスタンスID --remote-port 3389 --local-port any port(13389など)
LocalポートはPCの空きポートを利用します。
また注意事項として、最大のセッション時間は1時間(3600秒)となります。
1時間を過ぎると1度切断され再度接続されます。


まとめ
EC2 Instance Connectを使用したリモートデスクトップ接続について紹介しました。
本ブログのIAMポリシーやコマンドを修正することで、Linuxサーバに対してSSH接続することも可能です。
またリモートデスクトップ接続の方法は今回紹介させていただいたEC2 Instance Connect以外にもあります。
フリートマネージャーを使用した接続の方法については、
弊社のCS課コラムで紹介しておりますので併せて参考にしていただければと思います。
https://biz.nuro.jp/column/cs-section-011/
本ブログは以下のAWS公式ドキュメントを参考にしております。


