プライベートサブネットに配置したEC2にAWS Systems Manager Session Managerを使ってアクセスする

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

コンニチハ、千葉です。

SSMのSession Managerを利用することで、ターミナルにアクセスできます。これは、踏み台をなくすチャンスです。 アクセス対象のEC2は、パブリックサブネットだったり、プライベートサブネットだったりに配置されていると思います。

プライベートサブネットに配置されたEC2へ、Session Managerを利用してアクセスするにはちょっとしたコツが必要です。 基本的には、AWSのAPIエンドポイントはグローバルIPを持っており、インターネット経由でアクセスが必要になります。つまり、デフォルト状態だと、プライベートサブネットに配置されたEC2はインターネット接続できないため、Session Managerも利用できません。NatGatewayを作成することで、インターネット向けの通信を通すことができるのでこれでもいいですが、インターネットアクセスせずに接続する方法があります。

それが、PrivateLinkです。今回は、PrivateLinkを使って、プライベートサブネットに配置されてEC2へ接続してみます。

やってみた

まず、ドキュメントを確認するとSSMを利用するには、以下のVPCエンドポイントが必要だと記載されています

  1. com.amazonaws.region.ssm: Systems Manager サービスのエンドポイント。
  2. com.amazonaws.region.ec2messages: このエンドポイントを通じて、Systems Manager は SSM エージェントから Systems Manager サービスへの呼び出しを行います。
  3. com.amazonaws.region.ec2: Systems Manager を使用して VSS 対応のスナップショットを作成する場合は、EC2 サービスへのエンドポイントがあることを確認します。EC2 エンドポイントが定義されていない場合、アタッチした EBS ボリュームを列挙する呼び出しは失敗し、Systems Manager コマンドが失敗します。Systems Manager を VSS 対応のスナップショットを作成する詳しい方法については、「Run Command を使用して、EBS ボリュームの VSS 有効化されたスナップショットを取得する」を参照してください。
  4. com.amazonaws.region.ssmmessages: This endpoint is required only if you are connecting to your instances through a secure data channel using Session Manager. For more information, see AWS Systems Manager Session Manager.
  5. com.amazonaws.ap-northeast-1.s3:Systems Manager は Amazon S3 出力ログをアップロードし、SSM エージェントを更新します。

今回は、Session Managerの利用のみなので、3以外のVPCエンドポイントを作成しました。合計4つです。

次にEC2を作成します。EC2はプライベートサブネットに配置し、以下をユーザーデータに入れました。これでログインせずにSSMエージェントをインストールします。また、適宜IAMロールにはSSMの権限を付与します。

#!/bin/bash
cd /tmp
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
sudo systemctl start amazon-ssm-agent

実際に、接続できるか確認してみました。Systems Managerの画面から、セッションマネージャーを選択し、開始をクリックします。

プライベートサブネットに配置したEC2が見えています。セッションを開始してみましょう!

セッションを開始してみます。

接続できました!

最後に

プライベートサブネットに配置したEC2へ、Session Managerで接続できることを確認できました。これで、踏み台作らなくても良さそうです!

参考

*英語版で確認してください。最新情報は英語ドキュメントで確認です。テストに出ます。 https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-setting-up-vpc.html - https://aws.amazon.com/jp/premiumsupport/knowledge-center/install-ssm-agent-ec2-linux/