セッションマネージャーでEC2に接続(インターネット経由なし)

AWS

インターネットを経由せずにセッションマネージャーでEC2に接続するテスト。

踏み台サーバの用意、EC2インスタンスへのSSHインバウンド通信許可などが不要となり、よりセキュアなSSH接続が可能となる(権限管理はIAMロールで行う)。

構成

東京リージョン(ap-northeast-1)で実施します。

VPCなどを作成

自動生成:SSM
DNSホスト名:有効
DNS解決:有効

今回はVPCエンドポイント経由で接続するのでインターネット接続はなしでOK(プライベートサブネットのみ作成)。
VPCエンドポイントの名前解決のため、DNSホスト名とDNS解決は有効にします。

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

以下の2つのセキュリティグループを作成。

EC2にアタッチする用

名前:SSM-EC2-sg
インバウンド:許可なし
アウトバウンド:すべて許可

エンドポイントへのHTTPSアウトバウンド通信が許可されている必要がある
※すべて許可に含まれているためOK

エンドポイントにアタッチする用

名前:SSM-Endpoint-sg
インバウンド:HTTPS(443)を許可
アウトバウンド:すべて許可

アウトバウンドはエンドポイントへの通信(HTTPS)が許可されていればよい

EC2インスタンスの作成

名前:SSM-EC2
マシンイメージ:Amazon Linux 2023
インスタンスタイプ:t2micro
キーペア:なしで続行
ネットワーク設定:作成したVPC、サブネットを指定
パブリックIPの自動割り当て:無効化
セキュリティグループ:SSM-EC2-sg

Amazon Linux 2023の場合、SSM Agentが既定でインストール&有効化済み。
セッションマネージャーで接続するためキーペアはなしとする。

VPCエンドポイントを作成

以下のサービス毎に合計2つのエンドポイントを作成。

  • com.amazonaws.ap-northeast-1.ssm
  • com.amazonaws.ap-northeast-1.ssmmessages

タイプ:AWSサービス
VPCサブネット:作成したものを指定
セキュリティグループ:SSM-Endpoint-sg
ポリシー:フルアクセス

SSM Agentのバージョンが「3.3.40.0」より古い場合は「com.amazonaws.ap-northeast-1.ec2messages」のエンドポイントの作成も必要。
https://dev.classmethod.jp/articles/vpcendpoint-ec2messages-not-required/

IAMロールの作成・アタッチ

EC2がSSMと通信できるようIAMロールを作成。

信頼されたエンティティ:AWSのサービス
ユースケース:EC2
許可ポリシー:AmazonSSMManagedInstanceCore
ロール名:SSM-role

作成したIAMロールをEC2にアタッチ。

セッションマネージャーで接続

EC2インスタンスの接続->セッションマネージャーから接続。

無事接続することができた🙂

「SSM エージェントはオンラインではありません」というエラーが発生しEC2から接続できないことがあった。その場合、AWS Systems Manager側のダッシュボードから「セッションの開始」をすることでEC2側からも接続できるようになった。

セッションを開始する - AWS Systems Manager
セッションを開始するには、Systems Manager コンソール、Amazon EC2 コンソール、AWS CLI、または SSH を使用します。

AWS Systems Managerからもセッションが確立されていることが確認できた。

参考

AWS Systems Manager Session Manager - AWS Systems Manager
安全なワンクリックのブラウザベースのインタラクティブシェルまたは AWS CLI を使用してノードを管理します。インバウンドポートを開く必要はありません。
タイトルとURLをコピーしました