はじめに
EC2インスタンスへのリモート接続において、未だにSSHキー(.pem)の運用管理や、パブリックサブネットに配置した踏み台サーバーのパッチあて作業に頭を悩まされていませんか?
AWS Systems Manager(SSM)のセッションマネージャーを導入すれば、踏み台サーバーを完全に廃止し、セキュリティグループのSSHポート(22番)を閉じたまま、ブラウザやローカルのターミナルから安全にEC2へ接続できるようになります。本記事では、実務で今すぐ使える具体的な導入手順と設計ベストプラクティスを、ステップバイステップで解説します。
前提知識/必要な理由
従来のSSHや踏み台サーバーによる運用には、鍵の紛失・漏洩リスクや、アクセス元IPアドレス制限のメンテナンスコスト、そして攻撃対象領域(アタックサーフェス)が広がるといった多くのデメリットがあります。
セッションマネージャーを導入すべき主な理由は以下の通りです。
- ポート22の開放が不要:アウトバウンド(HTTPS)の通信のみを利用するため、インバウンドのポートをすべて閉じることが可能です。
- SSH鍵管理の廃止:IAMによる認証・認可と統合されているため、個別のSSHキーを作成・配布する必要がなくなります。
- 強力な監査ログ:誰がいつどのインスタンスで何を実行したかという操作ログを、CloudWatch LogsやS3に自動的に記録・保存できます。
具体的な設定手順・設計方法
ステップ1:EC2用のIAMロール(インスタンスプロフィール)の作成
EC2インスタンスがSSMサービスと通信できるように、IAMロールを作成してアタッチする必要があります。まず、信頼関係(Trust Relationship)にEC2を設定したロールを作成します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
このIAMロールに、AWS管理ポリシーである AmazonSSMManagedInstanceCore をアタッチしてください。
ステップ2:EC2インスタンスへのIAMロールのアタッチ
作成したIAMロールを、対象のEC2インスタンスの「IAMロールの変更」からアタッチします。
ステップ3:ネットワーク通信の確保
EC2インスタンス内のSSM Agent(Amazon Linux 2やAmazon Linux 2023には標準インストール済み)が、AWSのSSMエンドポイントとHTTPS(TCP/443)で通信できる状態にする必要があります。
- パブリックサブネットの場合:インターネットゲートウェイを介してアウトバウンド通信が可能であれば、追加の設定は不要です。
- プライベートサブネットの場合:NATゲートウェイを配置するか、以下の3つのVPCエンドポイント(インターフェイス型)を作成し、EC2が存在するサブネットに関連付けます。
com.amazonaws.[region].ssmcom.amazonaws.[region].ssmmessagescom.amazonaws.[region].ec2messages
ステップ4:ローカルPCからセッションマネージャーでの接続準備
ローカルPCのターミナルから接続する場合は、AWS CLIに加えてSession Manager Pluginの導入が必要です。
【導入手順】Session Manager Pluginのインストール
お使いのOSに合わせて、以下のコマンドでプラグインを導入してください。
# macOS(Homebrewを使用する場合)
brew install --cask session-manager-plugin
# Linux (RHEL/CentOS/Amazon Linux) の場合
curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpm" -o "session-manager-plugin.rpm"
sudo yum install -y session-manager-plugin.rpm
【接続実行】ターミナルからのログイン
プラグイン導入後、以下のAWS CLIコマンドを実行することで、SSHキーを使わずにEC2インスタンスのシェル環境にアクセスできます。
aws ssm start-session --target i-0123456789abcdef0
実務での注意点
- VPCエンドポイントのセキュリティグループ設計:プライベートサブネットでVPCエンドポイントを作成する場合、エンドポイントに紐付けるセキュリティグループにて、EC2インスタンスからの「HTTPS(ポート443)」のインバウンド通信を必ず許可してください。ここが漏れていると接続がタイムアウトします。
- セッションタイムアウトの制御:接続したまま放置されるリスクを防ぐため、Systems Managerの「Session Manager」設定画面(Preferences)から、アイドルタイムアウト時間を「15分」など短めに設定することを推奨します。
- 踏み台としての多段接続(ポートフォワーディング):データベース(RDS)等にプライベート接続したい場合は、セッションマネージャーのポートフォワーディング機能を利用し、ローカルからEC2を経由して安全にRDSへ接続する設計を検討してください。
まとめ
SSMセッションマネージャーは、インフラのセキュリティレベルを劇的に引き上げる、実務で必須のAWS機能です。踏み台サーバーの維持費やパッチ管理コストを削減できるため、新規のシステム設計時はもちろん、既存のレガシーな運用からの移行もぜひ検討してみてください。