はじめに
実務でAWS上のEC2インスタンスを管理する際、従来のSSH接続によるSSHキーの管理や、踏み台サーバー(Bastion)の運用に課題を感じていませんか?セキュリティの観点からインバウンドポート(ポート22など)を開放し続けるのはリスクを伴います。本記事では、これらを不要にし、より安全かつ簡単にEC2へ接続できる「AWS Systems Manager Session Manager(SSMセッションマネージャー)」の設定手順を解説します。
前提知識/必要な理由
AWS Systems Manager Session Managerとは、暗号化された安全なチャネルを介して、ブラウザやAWS CLIから直接EC2インスタンスをリモート管理できるサービスです。Session Managerを採用すべき主な理由は以下の通りです。
- 踏み台サーバーの廃止: 踏み台サーバーを運用・保守するコストとネットワーク管理の手間を削減できます。
- SSHキーペアの管理不要: 個人の公開鍵の登録やキーファイルの紛失リスク、ローテーション管理が不要になります。
- インバウンドポートの閉鎖: セキュリティグループでポート22を開放する必要がなく、インターネットからの不必要なスキャンや攻撃を防げます。
- IAMによる一元管理: 接続権限をIAMポリシーで柔軟に制御でき、操作ログも自動的に取得可能です。
具体的な設定手順・設計方法
Session Managerを使用してEC2インスタンスに接続するための、具体的な設定手順を解説します。今回は、Amazon Linux 2023(SSM Agentプリインストール済み)を使用する前提で手順を進めます。
ステップ1:EC2用のIAMロールの作成
EC2インスタンスがSSMサービスと安全に通信するための権限を付与するIAMロールを作成します。
- AWS管理コンソールのIAMサービスを開きます。
- 「ロールの作成」をクリックし、信頼されたエンティティタイプとして「AWSのサービス」、ユースケースに「EC2」を選択します。
- 許可ポリシーの検索窓に
AmazonSSMManagedInstanceCoreと入力し、チェックを入れて選択します。 - ロール名(例:
EC2-SSM-Access-Role)を入力し、ロールを作成します。
ステップ2:EC2インスタンスへのIAMロールの適用
作成したIAMロールを、接続対象のEC2インスタンスに割り当てます。
- EC2の管理コンソールで、対象のインスタンスを選択します。
- 「アクション」 > 「セキュリティ」 > 「IAMロールを変更」の順に選択します。
- ステップ1で作成した
EC2-SSM-Access-Roleを選択し、「IAMロールの更新」をクリックします。
ステップ3:SSM Agentのセットアップ(必要な場合のみ)
Amazon Linux 2023やUbuntu 22.04 LTSなどの主要なAMIには、標準でSSM Agentがプリインストールされています。しかし、Red Hat Enterprise Linux(RHEL)などの一部のOSでは、自身でエージェントをインストールする必要があります。その場合は、対象インスタンスにログイン後、以下のコマンドを実行してエージェントを導入・有効化してください。
# RHEL 9の場合のSSM Agent導入と起動設定手順
sudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
sudo systemctl enable amazon-ssm-agent
sudo systemctl start amazon-ssm-agent
ステップ4:Session Managerでの接続確認
設定が正常に完了したか確認します。
- EC2コンソールのインスタンス一覧から、対象のインスタンスを選択し「接続」をクリックします。
- 「セッションマネージャー」タブを選択し、「接続」ボタンをクリックします。
- 別タブでブラウザベースのターミナルが起動し、シェル操作が可能になれば接続完了です。
実務での注意点
実務でSession Managerを安全かつ安定して運用するために、設計時に気をつけるべきポイントを2点紹介します。
1. プライベートサブネットでのVPCエンドポイント設計
インターネットへのルート(ルートテーブルの0.0.0.0/0がNAT GatewayやInternet Gatewayに向いていない)がない完全なプライベートサブネット内のEC2と通信する場合、SSM AgentがAWSのSSMサービスエンドポイントと通信できるようにVPCエンドポイントを構築する必要があります。以下の3つのInterface型エンドポイント(AWS PrivateLink)をVPC内に作成し、EC2が所属するサブネットに紐付けてください。
com.amazonaws.[region].ssmcom.amazonaws.[region].ssmmessagescom.amazonaws.[region].ec2messages
2. 操作ログの監査と保存設定
本番環境などでは、誰がどのような操作を行ったかを記録することがセキュリティ監査上必須です。Session Managerでは、実行されたコマンド履歴をAmazon S3やAmazon CloudWatch Logsへ自動転送する設定が可能です。設定は AWS Systems Manager コンソールの「高速セットアップ」または「Session Manager」>「設定」タブから数クリックで有効化できます。運用開始前に必ず設定しておきましょう。
まとめ
Session Managerを導入することで、SSHキー管理の煩雑さや踏み台サーバーの維持コストから解放され、AWSインフラ全体のセキュリティレベルが飛躍的に向上します。設定手順は非常にシンプルで、即座に実務へ適用可能です。新規のEC2導入時だけでなく、既存のインフラ運用のセキュリティ改善策としても、ぜひ導入を推進してください。