EC2への安全な運用アクセス Session Manager・IMDSv2・EC2 Instance ConnectでSSH鍵と踏み台をなくす
SCS-C02では、EC2の運用アクセスを「SSHポートを開けて鍵を配る」方式から、監査可能で認証情報を持ち回らない方式へ置き換える設計が問われます。インスタンスへの入口を守る3つの仕組みと、インスタンス内部からの認証情報窃取を防ぐIMDSv2を整理します。
覚え方は「入口・鍵・中身」の3つの観点
運用アクセスの設計は、入口=インバウンドポートを開けずに接続できるか、鍵=長期的なSSH鍵を配らずに済むか、中身=インスタンス内の一時認証情報が外部から奪われないか、の3点で整理します。
Session Manager:ポートを開けない・鍵を持たない・記録が残る
Systems Manager Session Managerは、SSM Agentがアウトバウンドでサービスに接続する仕組みなので、インバウンドの22番ポートも踏み台サーバーも不要です。接続はIAMで制御し、誰がいつどのコマンドを実行したかをCloudWatch LogsやS3に記録できます。「SSHポートを閉じたい」「操作ログを監査に提出したい」「プライベートサブネットのサーバーへNATなしで接続したい」という要件はSession Managerが答えで、プライベート接続にはssm、ssmmessages、ec2messagesのVPCエンドポイントを用意します。ポートフォワーディング機能でプライベートなRDSへローカルからアクセスすることもできます。
EC2 Instance Connect:一時的なSSH鍵
EC2 Instance ConnectはSSHは使うものの、IAM権限で60秒間だけ有効な公開鍵をインスタンスにプッシュしてから接続します。長期の鍵配布をなくしつつ既存のSSHワークフローを維持したい場合に選びます。EC2 Instance Connect Endpointを使えば、パブリックIPや踏み台なしでプライベートサブネットへSSHやRDPで接続できます。ただし操作の記録という点ではSession Managerに劣ります。
| 方式 | インバウンドポート | 認証情報 | 操作記録 |
|---|---|---|---|
| SSH+踏み台 | 22番を開放 | 長期の鍵ペアを配布 | サーバー側で自前実装 |
| EC2 Instance Connect | 22番(Endpointならプライベート) | 60秒有効な一時鍵 | 接続ログはCloudTrail |
| Session Manager | 不要 | IAMのみ | セッションログをS3やCloudWatch Logsへ |
IMDSv2で中身の認証情報を守る
インスタンスに付与したIAMロールの一時認証情報はメタデータサービスから取得できるため、SSRFなどでアプリケーションに任意のURLを取得させられると窃取される恐れがあります。IMDSv2はPUTでトークンを取得してからヘッダー付きでアクセスするセッション方式で、単純なGETを送らせるだけの攻撃を防げます。起動テンプレートやアカウント既定でIMDSv2必須(HttpTokens=required)にし、応答ホップ制限を1にすることがベストプラクティスで、AWS Configの管理ルールで非準拠インスタンスを検出できます。
チェックリスト
- ARRAY(0xa002a3a48)
まとめ
運用アクセスは「入口・鍵・中身」で整理し、監査と最小権限を求められたらSession Manager、SSRF対策と聞かれたらIMDSv2必須化と覚えておきましょう。 理解度の確認にはクイズが便利です。試験範囲や申し込みの最新情報はAWS認定 公式ページもあわせて確認してください。
SCS(セキュリティ) におすすめの教材
要点整理から攻略する AWS認定 セキュリティ−専門知識 改訂2版
AWS認定 セキュリティ−専門知識 SCS-C02 練習問題集
AWS認定SCS(SCS-C03)対策トレーニングコース
AWS認定SCS 本番模試(4回分/260問)
本セクションにはAmazonアソシエイト・Udemyアフィリエイトのリンクが含まれます。