0
1

VPCエンドポイント経由でのSSMを用いたEC2への接続を図で整理する

Posted at

はじめに

プライベートサブネットに配置したEC2へ、VPCエンドポイント経由でセッションマネージャーを用いて接続する場合の構成を図でまとめました。

構成図

EC2 SSM接続-構成図.png

①EC2(SSMエージェント)からSystems Managerへの接続

SSMエージェントがインストールされたEC2インスタンスは、Systems Managerに接続を試みます。

  • プライベートサブネット内からVPC外部(AWS内部ネットワーク)へ接続する経路としてVPCエンドポイントを作成しています。
  • EC2には、Systems Manager接続のための権限(IAM Role)を割り当てる必要があります。
  • EC2、およびVPCエンドポイントにはセキュリティグループを設定する必要があり、許可する通信を適切に設定する必要があります。

②クライアントからEC2への接続

ユーザーはAWSコンソール画面などのクライアントからセッションマネージャーを用いた接続を開始します。

接続できない場合の確認ポイント

セッションマネージャーを用いてEC2インスタンスへ接続できない場合、以下ポイントを確認しましょう。

  1. EC2インスタンスにSSMエージェントはインストールされているか
  2. EC2インスタンスのIAMロールは適切か
  3. VPCエンドポイントは作成しているか
  4. EC2インスタンスのセキュリティグループでVPCエンドポイントへのアウトバウンドが許可されているか
  5. VPCエンドポイントのセキュリティグループでEC2インスタンスからのインバウンドが許可されているか

EC2 SSM接続-構成図_説明.png

1. EC2インスタンスにSSMエージェントはインストールされているか

EC2インスタンスにSSMエージェントがインストールされていない場合は、インストールを行います。
AWSマネージドのAMIであれば基本的にSSMエージェントはプリインストールされています。
プリインストールされているAMIのリストは以下を参照ください。

2. EC2インスタンスのIAMロールは適切か

EC2インスタンスのIAMロールにAmazonSSMManagedInstanceCoreポリシーを追加します。
その他のポリシーが不要な場合は、同ポリシーのみがセットされた同名のロールもAWSマネージドで用意されています。

EC2 SSM接続-IAM.png

3. VPCエンドポイントは作成しているか

EC2インスタンスがSystems Managerエンドポイントへ接続できるようにするため、以下のVPCエンドポイントが必要です。

  • com.amazonaws.region.ssm
  • com.amazonaws.region.ssmmessages

SSMエージェントのバージョンが3.3.40.0より前の場合、以下も必要です。

  • com.amazonaws.region.ec2messages

最新のAMIであれば基本的に3.3.40.0以降が入っているかと思います。
 →Amazon Linux 2023 の2024/9/7時点の最新のAMI(al2023-ami-2023.5.20240903.0-kernel-6.1-x86_64)は3.3.380.0でした。

4. EC2インスタンスのセキュリティグループにVPCエンドポイントへのアウトバウンドルールが設定されているか

EC2インスタンスに設定したセキュリティグループのアウトバウンドルールにおいて、VPCエンドポイントへのHTTPS(ポート443)が許可されている必要があります。

Interface型のVPCエンドポイントはENI(ネットワークインターフェース)が作成されるため、ENIのプライベートIPアドレスをEC2のセキュリティグループのアウトバウンドルールとして許可します。

EC2 SSM接続-EC2セキュリティグループ.png

5. VPCエンドポイントのセキュリティグループでEC2インスタンスからのインバウンドが許可されているか

VPCエンドポイントに設定したセキュリティグループのインバウンドルールにおいて、EC2インスタンスからのHTTPS(ポート443)が許可されている必要があります。

EC2 SSM接続-エンドポイントセキュリティグループ.png

IPアドレスを表現した構成図

EC2 SSM接続-構成図_IP.png

接続失敗時のエラー

EC2からSystems Managerに接続できない時、EC2のAWSコンソール画面から接続する際には以下エラーが表示されます。

インスタンスはセッションマネージャーに接続されていません。
セッションマネージャーを使用してインスタンスに接続するには、インスタンスがSystems Manager エンドポイントに接続できる必要があります。

エラー.png

以下エラーが表示される場合もあります(おそらくIAMロールが適切でないとき)

SSMエージェントはオンラインではありません
SSMエージェントは Systems Manager エンドポイントに接続して自身をサービスに登録できませんでした。

エラーiamなし.png

ちなみに、セッションマネージャーでの接続が成功している状態でセキュリティグループを編集して接続できない状態にしても、再起動をかけるまでは接続することができました。
EC2インスタンスからSystemsManagerへの接続(構成図の青矢印)は、インスタンス起動時に行われ、SSMエージェントがSystems Managerへ登録を行っているのだと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1