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 は、対応した OS とリージョンで利用できます。Amazon Linux や Ubuntu の標準 AMI には必要なパッケージがあらかじめ含まれており、追加設定なしで使えます。他のディストリビューションでは、接続を受け付けるためのパッケージを手動で導入します。接続時には IAM の権限が評価されるため、利用者のロールに必要なアクションを許可しておきます。一時的な公開鍵がメタデータ経由で短時間だけ注入される仕組みのため、インスタンス側にあらかじめ鍵を配っておく必要がありません。前提を理解しておくと、つまずかずに導入できます。
セキュリティ設計のベストプラクティス
アクセス制御は IAM ポリシーで細かく設計します。接続を許可するアクションを、対象のインスタンスやタグ、サブネット単位に絞り込み、誰がどこへ接続できるかを最小権限で定義します。Instance Connect Endpoint を使う場合は、エンドポイントのセキュリティグループで通信を制御し、インスタンス側のインバウンドポートを開けずに済ませます。接続の記録は CloudTrail に残るため、いつ誰がどのインスタンスへ入ったかを監査できます。鍵の配布や失効に悩まされない分、権限設計とログ監査に注力するのが、この方式のセキュリティの要点です。
運用での活用と他方式との併用
EC2 Instance Connect は、ブラウザやコマンドラインから手軽に接続できるため、開発や調査の場面で重宝します。一方、恒常的な運用作業やポートを一切開けたくない要件には、Systems Manager Session Manager が適します。両者は排他ではなく、用途に応じて併用できます。たとえば日常的な操作は Session Manager に寄せつつ、特定の調査では Instance Connect を使う、といった運用です。緊急時の代替接続経路として複数の手段を用意しておくと、片方が使えない状況でもインスタンスへ到達でき、運用の堅牢性が高まります。
まとめ
EC2 Instance Connect は SSH キー管理を不要にし、IAM ベースのアクセス制御を提供するサービスです。EIC Endpoint でパブリック IP や踏み台サーバーなしにプライベートサブネットのインスタンスに接続でき、CloudTrail で接続の監査ログを記録します。Session Manager との使い分けで、開発環境と本番環境に適した接続方式を選択できます。