【AWS初心者向け】EC2 Instance Connect Endpoint を使用した、パブリック IPv4 アドレスを必要としないインスタンスへの接続


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

どうも、クラ本部の黒田です。
暑くなって来ましたね。
猛暑日が続く中、皆さんはいかがお過ごしでしょうか。
7月クラ本部ジョインの皆さん、よろしくどうぞ!

さて、今回は、VPCエンドポイントを使って、プライベートネットワークの環境で EC2 Instance Connect Endpointの利用手順を解説します。

はじめに

EC2 Instance Connect Endpointとは、パブリック IPv4 アドレスを必要とせずに、セキュアな方法で EC2 インスタンスに接続するための機能となります。

構成図

file


事前準備

実践する前に、以下の事前準備が必要です。

  • VPC のプライベートサブネット上で EC2 インスタンスが起動している準備をしてください。


概要

  1. セキュリティグループ作成
    EC2 Instance Connect Endpoint には、セキュリティグループが必要です。セキュリティグループを作成し、適切なインバウンドルールを設定します。これにより、EC2 インスタンスへの安全な接続が確保されます。
  2. EC2 Instance Connect Endpoint作成
    AWS Management ConsoleVPCエンドポイントを作成します。作成時には、サービスカテゴリをEC2 Instance Connect Endpointを指定し、必要な設定を行います。
  3. EC2 Instance Connect Endpoint を使用したインスタンスの接続
    EC2 インスタンスに接続する際には、SSH クライアントを使用します。SSH クライアントを起動し、EC2 Instance Connect Endpoint を使用してインスタンスに接続します。この方法により、パブリック IPv4 アドレスを持たないプライベートなインスタンスにも安全かつ簡単にアクセスすることができます。
  4. IAM アクセス許可の付与
    EC2 Instance Connect Endpoint を使用するためには、適切な IAM アクセス許可が必要です。IAM ポリシーを作成し、EC2 インスタンスへの接続に必要なアクションをユーザに許可する必要があります。

1. セキュリティグループ作成

  • セキュリティグループのページに移動し、「セキュリティグループの作成」を選択します。
    適切な名前と説明を設定し、インバウンドルールを構成します。
  • EC2 Instance Connect Endpoint に使用されるポート 22(SSH)へのアクセスを許可する必要があります。セキュリティ要件に基づいて、必要なルールを追加します。

EIC セキュリティグループ:

セキュリティグループ プロトコル ポート 送信先
インバウンド なし なし なし
アウトバウンド TCP 22 EC2セキュリティグループ

EC2 セキュリティグループ:

セキュリティグループ プロトコル ポート 送信先
インバウンド TCP 22 EICセキュリティグループ
アウトバウンド すべて すべて 0.0.0.0/0

2. EC2 Instance Connect Endpoint の作成

  • 「VPCエンドポイント」のページに移動し、「VPCエンドポイントの作成」をクリックします。
    「サービスカテゴリ」セクションで、EC2 Instance Connect Endpointを選択します。
    「VPC」セクションで、事前準備したVPCを選択します。
    EICセキュリティグループと関連のプライベートサブネットを選択します。
    設定が完了したら、「エンドポイントの作成」または「作成」をクリックします。


3. EC2 インスタンスの接続

  • EC2 サービスに移動します。
    インスタンスのページに移動し、「接続」を選択します。
    「EC2 Instance Connect エンドポイントを使用して接続する」を選択します。
    前の手順で作成した「EC2 Instance Connect エンドポイント名」を選択し、接続します。

※ エラーメッセージが出て来た場合、次の手順に進んでください。
「Failed to connect to your instance Error establishing SSH connection to your instance. Try again later.」を調べたら、権限がないことが分かりました。

EC2 Instance Connect Endpoint を使用するための IAM アクセス許可の付与

4. IAM アクセス許可の付与

  • IAM サービスに移動します。
    「ポリシーの作成」を選択し、EC2 インスタンスへのアクセスに必要なアクションを許可するポリシーを作成します。適切なポリシー名を設定し、以下のようなポリシードキュメントを構築します。ポリシーを保存し、IAM ユーザーやロールにアタッチします。
{
    "Version": "2012-10-17",
    "Statement": [{
            "Sid": "EC2InstanceConnect",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:region:account-id:instance-connect-endpoint/eice-123456789abcdef",
            "Condition": {
                "NumericEquals": {
                    "ec2-instance-connect:remotePort": "22"
                },
                "IpAddress": {
                    "ec2-instance-connect:privateIpAddress": "10.0.1.0/31"
                },
                "NumericLessThanEquals": {
                    "ec2-instance-connect:maxTunnelDuration": "60"
                }
            }
        },
        {
            "Sid": "Describe",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceConnectEndpoints"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

※ 注意点:region、account-id、eice-123456789abcdef などの値は実際の環境に合わせて適切な値に置き換える必要があります。

接続確認

■ IAMユーザーアクセス許可設定が完了した後、再度「3. EC2 インスタンスの接続」を実施し、接続出来ました!

最後に

以上、EC2 Instance Connect Endpoint を使用してパブリック IPv4 アドレスを必要としないインスタンスへの接続手順の詳細です。これにより、セキュアかつ便利な方法でプライベートなインスタンスに接続することができます。

次回

【[CRONでシェルスクリプトを実行する手順](https://cloud5.jp/logrotate-sh/ ‎ "CRONでシェルスクリプトを実行する手順")】のご紹介

では、皆さん、また次回お会いしましょう。

【初学者用】AWS System Manager(SSM)はどのようなサービスか ~Parameter Store編~
【Terraform×AWS】既存キーペアを利用してEC2インスタンスを起動する記述
【CLI接続のセッションマネージャーの操作ログ】S3バケットに保存する方法
more…

↑↑↑クラ本部メンバーが書いた記事のご紹介 ↑↑↑、合わせてやってみるのもいいかと

Last modified: 2023-08-26

Author