EC2 Instance Connect で SSH キー管理を不要に - ブラウザと CLI からの安全な接続
EC2 Instance Connect によるキーレス SSH 接続、IAM ベースのアクセス制御、Endpoint の活用を解説します。
EC2 Instance Connect の概要
EC2 Instance Connect は SSH キーの事前配布なしに EC2 インスタンスに安全に接続するサービスです。従来の SSH 接続ではキーペアの作成、配布、ローテーション、紛失時の対応が運用負荷でしたが、Instance Connect は一時的な公開鍵を使用し、キー管理を不要にします。
Endpoint とプライベート接続
EC2 Instance Connect Endpoint は VPC 内に作成するエンドポイントで、プライベートサブネットのインスタンスにパブリック IP や踏み台サーバーなしで接続できます。IAM ポリシーで ec2-instance-connect:OpenTunnel アクションを制御し、特定のインスタンスやサブネットへの接続を制限します。接続時に一時的な SSH 公開鍵がインスタンスメタデータに 60 秒間配置され、接続確立後に自動削除されるため、永続的なキーが残りません。
EC2 Instance Connect Endpoint
EC2 Instance Connect Endpoint (EIC Endpoint) を使うと、パブリック IP アドレスや踏み台サーバーなしでプライベートサブネットのインスタンスに SSH/RDP 接続できます。 VPC 内に EIC Endpoint を作成し、 IAM ポリシーで接続を許可するユーザーとターゲットインスタンスを制御します。接続は AWS PrivateLink 経由でトンネリングされるため、インスタンスのセキュリティグループでインバウンド SSH ポートを開放する必要がありません。 CloudTrail で誰がいつどのインスタンスに接続したかを監査でき、 SSH キーの管理も不要です。 1 つの EIC Endpoint で VPC 内の複数サブネットのインスタンスに接続でき、追加料金は発生しません。 SSH 接続について体系的に学びたい方は、関連書籍 (Amazon)も参考になります。
接続方式の比較と選定
EC2 への接続方式は、EC2 Instance Connect、Systems Manager Session Manager、従来の SSH キーペアの 3 つがあります。Instance Connect は一時的な公開鍵をメタデータサービス経由で注入するため、永続的な SSH キーの管理が不要です。Session Manager はエージェントベースで SSH プロトコルを使わず、ポート開放が一切不要な点が最も厳格なセキュリティ要件に適しています。従来の SSH キーペアは既存のワークフローとの互換性が高いものの、キーのローテーションと配布の運用負荷が課題です。開発環境では Instance Connect の手軽さが、本番環境では Session Manager の監査性とセキュリティが適しています。
EC2 Instance Connect の料金
EC2 Instance Connect は無料で利用できます。ブラウザからの SSH 接続、CLI からの接続、Instance Connect Endpoint の利用に追加料金は発生しません。Session Manager (Systems Manager) も無料で、どちらを選んでも接続自体のコストはゼロです。Instance Connect Endpoint を使用すると、パブリック IP アドレスなしでプライベートサブネットのインスタンスに接続でき、NAT Gateway や踏み台サーバーのコストを削減できます。
まとめ
EC2 Instance Connect は SSH キー管理を不要にし、IAM ベースのアクセス制御を提供するサービスです。EIC Endpoint でパブリック IP や踏み台サーバーなしにプライベートサブネットのインスタンスに接続でき、CloudTrail で接続の監査ログを記録します。Session Manager との使い分けで、開発環境と本番環境に適した接続方式を選択できます。