💻

【AWS】踏み台サーバは不要?EC2 Instance Connect Endpointのススメ(1)

2023/08/18に公開

こんにちは。川名(亮)です。

AWSを利用する際、インターネットから隔離された閉域環境のEC2インスタンス(サーバ)へログインする方法はいくつかありますが、その中でもEC2 Instance Connect Endpointはお手軽かつ費用を抑えることができる手段です。

本記事ではEC2 Instance Connect Endpointを利用して閉域環境のEC2インスタンスへ接続する手順を紹介します。

目次

  1. 閉域環境への接続方法
  2. EC2 Instance Connect Endpointのメリット
  3. 本記事の構成
  4. 注意
  5. EC2 Instance Connect Endpointのセキュリティグループを作成
  6. 接続先EC2インスタンスのセキュリティグループを修正
  7. EC2 Instance Connect Endpointの作成
  8. EC2インスタンスへのログイン確認
  9. さいごに
  10. 参考URL

閉域環境への接続方法

まず初めにAWSでインターネットからプライベートサブネット(閉域環境)のEC2インスタンスへ接続する方法を3つ挙げてみます。

[1] 踏み台サーバ(Bastion)

公開ネットワークとなるパブリックサブネットにSSH接続できるEC2インスタンスを用意し、そのEC2インスタンスを踏み台としてプライベートサブネットへポートフォワーディングする方法です。とても古くからある方法でAWS環境に関わらずオフィスネットワークやオンプレミス環境への接続にもよく使われます。

外部からの接続制御は入口となる踏み台サーバを中心となるため通信制御が分かりやすく、必要な時だけ起動する運用にすれば普段は外部からの接続ができない状態にすることができ、コストも削減できます。

[2] AWS Systems Manager Session Manager

AWSのリソース管理サービスであるSystems Manager(SSM)の機能です。踏み台サーバと異なり、IAMポリシーベースでアクセスを制御します。AWSマネジメントコンソールやAWS CLIからEC2インスタンスへログインできるため、EC2インスタンスへのログインのために通信制御設定を行う必要がありません。
また、EC2インスタンスへログインする端末にSSH Keyを保存しておく必要がないというメリットがあります。(代わりにIAM認証情報が必要となります)

利用にはいくつか条件があり、ログイン対象のEC2インスタンスにSSM Agentのインストールが必要です。さらに閉域環境で利用する場合にはPrivateLinkが3つ必要となり、高額ではないものの踏み台サーバと比べるとコスト増となります。

[3] EC2 Instance Connect Endpoint


AWSドキュメント から引用

今回紹介するAWSの機能です。もともとEC2 Instance Connectという機能がありましたが、ログイン対象のEC2インスタンスにパブリックIPv4アドレスを割り当てる必要があるため、利用されるケースが少なかったのではないかと思います。

現在はエンドポイントを利用することでパブリックIPv4アドレスを持たない閉域環境のEC2インスタンスへのログインが可能となりました。

接続方法は2種類あります。ひとつは従来のInstance Connectと同じようにAWSマネジメントコンソールから接続する方法。もうひとつはAWS CLIを利用して接続先のEC2インスタンスへのプライベートトンネルを確立する方法です。
また、エンドポイントへの接続にはIAM権限が、EC2インスタンスへの接続にはセキュリティグループの設定が必要となります。

EC2 Instance Connect Endpointのメリット

固定費がかからないことが最大のメリットです。以下の記事によると、EC2 Instance Connect Endpointは費用が発生しないとされています。

https://aws.amazon.com/jp/about-aws/whats-new/2023/06/amazon-ec2-instance-connect-ssh-rdp-public-ip-address/

EIC Endpoint はすべての AWS 商用リージョンおよび AWS GovCloud (米国) リージョンで利用できます。EIC Endpoint の使用に際して、追加コストは発生しません。通常のデータ転送については所定の料金が適用されます。

一部のLinuxに限定されますが、Session Managerと同じようにAWSマネジメントコンソールから接続できるため、SSHの秘密鍵を接続元の端末で管理する必要がなくなることも大きなメリットです。また、AWS CLIでプライベートトンネルを確立する方法の場合は接続元の端末でSSH秘密鍵を管理する必要があるものの、踏み台サーバ(Bastion)のSSHポートフォワーディングと同じような利用方法で接続先のOSに依存せず利用できます。

本記事の構成

本記事は上記の構成を想定しています。
また以下の通りEC2 Instance Connect Endpoint以外の設定は完了しているものとします。

設定 概要
AWS環境のリージョン ap-northeast-1(Tokyo)
VPC example-prod-vpc(10.0.0.0/16)
プライベートサブネット example-prod-private-subnet-1a(10.0.11.0/24)
接続先EC2インスタンス example-prod-eic-amzlinux-1a-01(Amazon Linux 2023のAMIから作成)
接続先EC2インスタンスのセキュリティグループ example-prod-ssh-sg
EC2 Instance Connect Endpointのセキュリティグループ example-prod-eice-sg
エンドポイント example-prod-eic-vpce(EC2 Instance Connect Endpoint)
接続用IAM許可ポリシー AdministratorAccess

注意

EC2 Instance Connect Endpointのセキュリティグループを作成

  • AWSマネジメントコンソールでEC2のページへ移動
  • 左メニューから「Security Groups」をクリック
  • 右上の「Create security group」をクリック
  • 以下の項目を入力または選択する
項目名
Security group name example-prod-eice-sg
Description example-prod-eice-sg
VPC example-prod-vpc
Inbound rules *** 設定しない ***
Outbound rules 「example-prod-ssh-sg」へのSSH接続許可
  • 「Create security group」をクリック
  • セキュリティグループが作成されていることを確認する

接続先EC2インスタンスのセキュリティグループを修正

  • AWSマネジメントコンソールでEC2のページへ移動
  • 左メニューから「Security Groups」をクリック
  • 一覧にある「example-prod-ssh-sg(接続先EC2インスタンスのセキュリティグループ)」にチェックを入れる
  • 上部メニューの「Actions」->「Edit Inbound rules」をクリック
  • 「example-prod-eice-sg(EC2 Instance Connect Endpointのセキュリティグループ)」からのSSH接続許可ルールを追加
  • 「Save rules」をクリック

EC2 Instance Connect Endpointの作成

  • AWSマネジメントコンソールでVPCのページへ移動
  • 左メニューから「Endpoints」をクリック
  • 右上の「Create endpoint」をクリック
  • 以下の項目を入力または選択する
項目名
Name tag example-prod-eic-vpce
Service category EC2 Instance Connect Endpoint
VPC example-prod-vpc
Security groups example-prod-eice-sg
Subnet example-prod-private-subnet-1a
  • 「Create endpoint」をクリック
  • EC2 Instance Connect Endpointの作成が開始され、「Status」が「Pending」となっていることを確認する
  • 数分後、「Status」が「Available」になること確認する

EC2インスタンスへのログイン確認

  • AWSマネジメントコンソールでEC2のページへ移動
  • 左メニューから「Instances」をクリック
  • 一覧にある「example-prod-eic-amzlinux-1a-01(ログイン対象のEC2インスタンス)」にチェックを入れる
  • 上部メニューの「Connect」をクリック
  • 以下の項目を入力または選択する
項目名
Tab EC2 Instance Connect
Instance ID ログイン対象のInstance ID(変更不可)
Connection Type Connect using EC2 Instance Connect Endpoint
Private IP address ログイン対象のプライベートIPアドレス(変更不可)
User name ec2-user(デフォルト)
Max tunnel duration (seconds) 3600(デフォルト)
EC2 Instance Connect Endpoint example-prod-eic-vpceのIDを選択
  • 「Connect」をクリック
  • Webブラウザにコンソール画面が表示され、ログインが開始される


ログイン後のコンソール画面

さいごに

EC2 Instance Connect Endpointはセキュリティグループの設定とエンドポイントの作成だけで済むため簡単に導入することができます。次回はAWS CLIを利用したプライベートトンネルによる接続予定しています。閉域環境のEC2インスタンスへ接続する方法のひとつとしてご参考下さい。

ご覧いただきありがとうございました。

参考URL

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/Connect-using-EC2-Instance-Connect-Endpoint.html
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/connect-using-eice.html
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instance-connect-prerequisites.html

MEGAZONE株式会社 Tech Blog

Discussion