はじめに
AWSのEC2インスタンスにアクセスする際、従来は「踏み台サーバー(Bastion)」をパブリックサブネットに構築してSSH接続するのが一般的でした。しかし、踏み台サーバーはパッチ適用などの維持管理コストがかかるほか、SSHポート(22番)をインターネットに公開するセキュリティリスクを伴います。
本記事では、踏み台サーバーを完全に排除し、プライベートサブネット内のEC2へ安全に接続できる「AWS Systems Manager(SSM)セッションマネージャー」の設定手順を、初心者にも分かりやすくステップバイステップで解説します。
前提知識/必要な理由
SSMセッションマネージャーを採用すべき理由は、セキュリティと運用の両面に大きなメリットがあるからです。
- ポートの開放が不要:EC2のインバウンドルールでSSH(TCP/22)を開放する必要がありません。
- 踏み台サーバーの廃止:運用コストや脆弱性管理の対象となる踏み台サーバーが不要になります。
- IAMによるアクセス制御:AWS IAMポリシーを用いて、誰がどのインスタンスに接続できるかを一元管理できます。
- 監査ログの取得:ユーザーが実行したコマンド履歴をAmazon S3やAmazon CloudWatch Logsに自動保存できます。
具体的な設定手順・設計方法
プライベートサブネットに配置されたEC2(Amazon Linux 2023)を対象に、セッションマネージャー接続を確立する手順を解説します。
Step 1. EC2用のIAMロール作成と割り当て
EC2がSSMサービスと安全に通信するために、IAMロールを付与します。
- AWS管理コンソールの「IAM」に移動し、信頼されたエンティティの種類として「AWSのサービス」、ユースケースに「EC2」を選択します。
- 許可ポリシーとして、AWS管理ポリシーである「AmazonSSMManagedInstanceCore」を選択してアタッチします。
- 作成したIAMロールを、対象のEC2インスタンスに「IAMインスタンスプロフィール」としてアタッチします。
Step 2. VPCエンドポイントの作成(プライベート環境の場合)
インターネットへのルートを持たない完全なプライベートサブネットからSSMと通信する場合、VPCエンドポイント(インターフェイス型)を3つ作成する必要があります。
VPCのコンソールから、以下の3つのサービス用にエンドポイントを作成し、EC2が所属するサブネットとセキュリティグループ(HTTPS: 443のインバウンドを許可したもの)を紐付けます。
com.amazonaws.[region].ssmcom.amazonaws.[region].ssmmessagescom.amazonaws.[region].ec2messages
Step 3. ローカルPC側の接続環境の準備
AWS CLIを利用してローカルPCから直接接続する場合、AWS CLIに加えて「Session Manager プラグイン」という外部ツールをPCに導入する必要があります。以下に主要なOSでの導入手順を記載します。
macOS(Homebrewを使用する場合):
brew install --cask aws-session-manager-plugin
Windows(PowerShellを使用する場合):
以下を実行してインストーラーをダウンロードし、実行します。
Invoke-WebRequest "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/windows_amd64/awscli-session-manager-plugin.msi" -OutFile "awscli-session-manager-plugin.msi"
Start-Process msiexec.exe -ArgumentList "/i awscli-session-manager-plugin.msi /quiet" -Wait
インストールの確認として、以下のコマンドがエラーなくバージョンを返せば準備完了です。
session-manager-plugin --version
Step 4. セッションマネージャーでの接続テスト
準備が整ったら、ローカルPCのターミナルから以下のAWS CLIコマンドを実行し、EC2へ接続します。
aws ssm start-session --target i-xxxxxxxxxxxxxxxxx
※i-xxxxxxxxxxxxxxxxxには、対象EC2のインスタンスIDを記述します。接続が成功すると、EC2のシェルプロンプトが表示されます。
実務での注意点
- SSM Agentのプリインストール状況:Amazon Linux 2/2023やUbuntu LTSのAMIにはSSM Agentが標準でインストールされています。Red Hat Enterprise Linuxや古いOSを使用する場合は、あらかじめ手動でSSM Agentをインストール・起動しておく必要があります。
- セキュリティグループの設計:VPCエンドポイント側のセキュリティグループにて、EC2インスタンス(またはEC2が属するセキュリティグループ)からの「HTTPS(TCP/443)インバウンド通信」が正しく許可されているかを確認してください。
- 接続できない場合のトラブルシューティング:対象EC2からSSMエンドポイントへの名前解決や通信が通っているかを確認します。疎通確認には、以下のコマンドなどで名前解決ができるかテストするのが有効です。
nslookup ssm.[region].amazonaws.com
まとめ
SSMセッションマネージャーを導入することで、踏み台サーバーの運用コストとセキュリティリスクを同時に削減できます。本番環境の構築においては、今回の手順に加えて「S3への操作ログ集約」や「IAMによる接続制限」などを組み合わせることで、より強固なインフラ設計が実現可能です。ぜひ実務の設計に取り入れてみてください。