EC2 Instance Connect Endpointを使ってみた
AWS re:Inforce 2023にて、EC2 Instance Connectの新機能である「EC2 Instance Connect Endpoint」が発表されました。
簡単に言うとパブリックIPv4アドレスを付与していないプライベートなEC2にSSH,RDP接続できるようになりました。
今回はEC2 Instance Connect Endpointを使ってEC2インスタンスにSSH接続してみます。
- 1. EC2 Instance Connectって何でしたっけ
- 2. 事前に準備するもの
- 2.1. EC2インスタンスの作成
- 2.2. IAM で EC2 Instance Connect Endpoint の作成と接続を許可する
- 3. EC2 Instance Connect Endpoint を設定する
- 3.1. EC2 Instance Connect Endpoint の作成
- 3.2. セキュリティグループの設定
- 4. EC2インスタンスへ接続
- 5. Preserve Client IPの設定をした場合
- 5.1. EC2 Instance Connect Endpointの作成
- 5.2. セキュリティグループの設定
- 6. EC2インスタンスへ接続
- 7. 補足
- 7.1. EC2 Instance Connect Endpoint 作成上限
- 8. 所感
EC2 Instance Connectって何でしたっけ
EC2インスタンスに接続するには4種類の方法があり、そのうちの一つです。
EC2 Instance Connect:鍵設定なしでマネジメントコンソールからEC2へSSH接続が可能です。ただし、パブリックサブネットに配置されたEC2のみが対象です。
EC2 Instance Connect Endpoint:鍵設定なしでマネジメントコンソールからEC2へSSH接続が可能です。プライベートサブネットのEC2(パブリックIPアドレスを付与していない)に対しても対象にできます。 ← New!!
事前に準備するもの
早速EC2 Instance Connect Endpointを使ってみましょう。
- EC2インスタンスを準備する
- IAM で EC2 Instance Connect Endpoint の作成と接続を許可する
EC2インスタンスの作成
動作検証のためプライベートサブネットに配置します。事前準備なので細かい説明は割愛します。
![EC2 Instance Connect Endpoint 作成 事前準備EC2作成](https://syuntech.net/wp-content/uploads/2023/07/6e7776302e5b2b2b126832cf4f9ec5e1-1.png)
IAM で EC2 Instance Connect Endpoint の作成と接続を許可する
IAMアカウントでマネジメントコンソールを利用している場合は、新しい機能を利用する際にIAMの設定が必要です。
EC2 Instance Connect Endpoint を作成や削除を行う際に必要なIAMポリシーはこちら。
- ec2:CreateInstanceConnectEndpoint
- ec2:CreateNetworkInterface
- ec2:CreateTags
- iam:CreateServiceLinkedRole
- ec2:DescribeInstanceConnectEndpoints
- ec2:DeleteInstanceConnectEndpoint
EC2 Instance Connect Endpoint を設定する
準備ができたら設定を進めていきます。設定が必要なのは2点です。
- EC2 Instance Connect Endpoint の作成
- セキュリティグループの設定
EC2 Instance Connect Endpoint はサブネットを指定して設定します。下記の図のようにプライベートサブネットに配置するのが主な用途になります。
サブネットにEC2 Instance Connect Endpoint を配置したら「VPC」「クライアントIPアドレス」のどちらかからプライベートサブネットにアクセスできるようにセキュリティグループを更新します。
![EC2 Instance Connect Endpoint 作成の概要](https://syuntech.net/wp-content/uploads/2023/07/7f1b21a571bc81517bbf8b85b1ef7ccd.png)
それでは具体的な手順に入ってきます。
.EC2 Instance Connect Endpoint の作成
EC2 Instance Connect Endpoint の設定は、「VPC」ダッシュボードの中の「エンドポイント」のメニューにあります。
![EC2 Instance Connect Endpoint 作成 エンドポイント作成](https://syuntech.net/wp-content/uploads/2023/07/9192d4a70e1bc6067c119621a4fa7098-1024x398.png)
ここでエンドポイントを作成します。
サービスカテゴリの中に「EC2 Instance Connect Endpoint」という設定があります。
![EC2 Instance Connect Endpoint 作成 エンドポイント作成](https://syuntech.net/wp-content/uploads/2023/07/3bf7d9a71c32648538ca9bffc420422a-1024x587.png)
EC2 Instance Connect Endpoint はVPCとサブネットを指定して作成する必要があります。
![EC2 Instance Connect Endpoint 作成 VPCの設定](https://syuntech.net/wp-content/uploads/2023/07/65571c29ada60dd91387e9a4b680eccf.png)
追加設定
こちらは EC2 Instance Connect Endpoint への接続を「EC2 Instance Connect Endpoint 作成時のクライアントIPアドレスに制限」するものです。
チェックを外すと「VPCからEC2 Instance Connect Endpointへ接続」する経路になります。
まずはチェックを外してVPCから接続する手順で確認していきます。
![EC2 Instance Connect Endpoint 作成 サブネットの設定](https://syuntech.net/wp-content/uploads/2023/07/5a278dbbc23427cc0c0554de8c60d1bf.png)
これでEC2 Instance Connect Endpoint の設定は完了です。
非常に簡単です。
.セキュリティグループの設定
設定したEC2 Instance Connect Endpoint へ接続するためにセキュリティグループの設定を追加します。
Preserve Clinet IP の設定は行っていないので、VPCのIPアドレスからプライベートサブネットへのインバウンドルールを設定します。
![EC2 Instance Connect Endpoint セキュリティグループの設定追加](https://syuntech.net/wp-content/uploads/2023/07/fa3b2ddebf6cebdb692ef97ef389125b-1024x169.png)
EC2インスタンスへ接続
設定が完了しましたので、EC2インスタンスへの接続テストをしてみます。
![EC2 Instance Connect Endpoint EC2インスタンス一覧](https://syuntech.net/wp-content/uploads/2023/07/dd666fd1ccdbe30e149d213dd5727a12-1024x175.png)
ECインスタンスへの接続は4つの方法があります。
- EC2 Instance Connect
- セッションマネージャー
- SSHクライアント
- E2シリアルコンソール
EC2 Instance Connect Endpoint は EC2 Instance Connect のタブの中から選択できます。
![EC2 Instance Connect Endpoint EC2インスタンスへの接続設定画面](https://syuntech.net/wp-content/uploads/2023/07/97ce54874bdf91e8e4d16e987cf372c2-1024x667.png)
インスタンスにパブリックIPv4アドレスが設定されていないというメッセージが表示されていますね。通常のEC2 Instance Connect ではこのままでは接続できません。
しかし今回作成した EC2 Instance Connect Endpoint を使うとこのまま接続ができます。
![EC2 Instance Connect Endpoint EC2インスタンスへの接続](https://syuntech.net/wp-content/uploads/2023/07/bfb2113e56ab72d1aa292d23c301b33c-1024x926.png)
ユーザ名などの設定を行い、接続すると
![EC2 Instance Connect Endpoint 接続完了](https://syuntech.net/wp-content/uploads/2023/07/a86344728713c743302ab08667545a86.png)
EC2インスタンスへログインできました!
Preserve Client IPの設定をした場合
次にPreserve Client IPの設定を行った場合の動作を確認してみましょう。
Preserve Client IPとは、、
設定時のIPアドレスを保存し、このIPアドレスのみを接続元のクライアントIPアドレスをして許可します。
EC2 Instance Connect Endpoint作成時のクライアントIPアドレスでのみEC2への接続が可能になります。
EC2 Instance Connect Endpointの作成
詳細は再掲になるので割愛します。Preserve Client IPを設定すると赤枠部分が「はい」と表示されるようになります。
どのIPアドレスが設定されているかはマネジメントコンソール上では表示されません。
![EC2 Instance Connect Endpoint の設定内容](https://syuntech.net/wp-content/uploads/2023/07/be22d2c2b20ece51148d871706a55666-1-1024x405.png)
セキュリティグループの設定
クライアント側のIPアドレスを確認します。仮に「106.100.100.100」だとしましょう。
![EC2 Instance Connect Endpoint クライアントIPアドレスの確認](https://syuntech.net/wp-content/uploads/2023/07/65b2dd0464896bfd3ec1b37388fc300e-1024x203.png)
プライベートサブネットのセキュリティグループに上記IPアドレスのインバウンドルールを設定します。
![EC2 Instance Connect Endpoint セキュリティグループの設定 クライアントIPアドレス](https://syuntech.net/wp-content/uploads/2023/07/dfeceb1aa381a48a63b2009a2f33fce0-1024x183.png)
EC2インスタンスへ接続
こちらも無事にアクセスできました。
![EC2 Instance Connect Endpoint 接続完了](https://syuntech.net/wp-content/uploads/2023/07/a86344728713c743302ab08667545a86-1.png)
同じ端末でもIPアドレスを変更してEC2 Instance Connect Endpoint作成時のクライアントIPアドレスと異なる設定にした場合は、アクセスエラーになります。
![EC2 Instance Connect Endpoint 作成時の接続エラー画面](https://syuntech.net/wp-content/uploads/2023/07/error.png)
補足
EC2 Instance Connect Endpoint 作成上限
EC2 Instance Connect Endpointはサブネットに対し1つのみ設定可能なようです。なので「Preserve Client IP 設定あり」「Preserve Client IP 設定なし」など2つのEC2 Instance Connect Endpoint を持つことはできません。
![EC2 Instance Connect Endpoint 作成時の重複エラー画面](https://syuntech.net/wp-content/uploads/2023/07/48e61d0067cefec122a65f8fed67cbfc-1024x56.png)
所感
プライベートサブネットに配置したEC2インスタンスに簡単に接続できる点はとても便利だと思います。
ただし、プライベートサブネットにもセキュリティグループの設定が必要であり「VPC」「クライアントIPアドレス」からのインバウンドルールを設定する必要があります。
セキュリティグループを追加で設定するという点はセキュリティ的には気になるところ。