はじめに
目的
本ドキュメントは、AWS Systems Manager の Session Manager(以下、Session Manager)の概要と導入手順を分かりやすく説明します。踏み台サーバーを用いずに EC2 やオンプレミスのサーバーへ安全に接続する方法、運用上の利点、技術的な仕組み、導入に必要な準備を順を追って解説します。
Session Manager を一言で言うと
Session Manager は、ブラウザや CLI からサーバーにシェル接続したりコマンドを実行したりできるマネージドサービスです。SSH キーや踏み台サーバーを用いずに接続でき、アクセスの記録(監査ログ)や IAM によるアクセス制御を容易に行えます。例えば、開発者が自宅の端末から直接 EC2 のシェルにアクセスし、操作履歴を確認できるといった使い方ができます。
想定読者
クラウド運用者、セキュリティ担当者、システム管理者、これから Session Manager を利用してサーバー接続の運用を改善したい方を想定しています。初めての方でも理解しやすいように具体例を交えて説明します。
本ドキュメントで学べること
- Session Manager の基本的な機能と利点
- どのように安全性や運用性が向上するかの具体例
- アーキテクチャの概略(後章で詳述)
- 利用に必要な前提条件と導入手順
読み方のポイント
まず本章で概要をつかみ、続く章で機能や仕組み、準備手順を順に読み進めてください。実際の導入は「利用前提条件と準備」章に従うとスムーズです。必要な技術用語は最小限に抑え、例を示しながら説明します。詳細な操作手順や設定例は後半で扱います。
第1章 Session Manager とは何か
概要
AWS Systems Manager の機能の一つである Session Manager は、ブラウザや AWS CLI からサーバーに安全に接続するためのマネージドサービスです。SSH や RDP のポートを開けずに、プライベートサブネット上の EC2、オンプレミスのサーバ、VM、エッジデバイスへ接続できます。SSH キーや踏み台サーバーの管理を減らし、運用を簡素化します。
主な特徴
- ポート開放不要:サーバー側の 22 や 3389 を開放しません。アウトバウンドでの HTTPS 接続のみで動作します。
- ブラウザ/CLI 両対応:コンソールの Web シェルや AWS CLI でセッションを開始できます。
- 操作ログ保存:セッションの入出力を S3 や CloudWatch Logs に保存できます。誰が何を実行したかを確認できます。
- クロスプラットフォーム:Linux と Windows の両方でシェルを利用できます。
代表的な利用例(具体例)
- プライベートサブネット内の EC2 に、管理者がブラウザから一時的にアクセスして設定変更する。
- 社内ネットワーク内のオンプレミスサーバへ、踏み台を使わずに運用担当が接続する。
- ラズベリーパイなどのエッジデバイスへ、リモートでコマンドを実行してログを取得する。
動作のイメージ
- 管理対象ノードに SSM Agent が動作し、AWS のエンドポイントへアウトバウンド接続を維持します。
- 管理者はコンソールや CLI からセッションを要求します。Systems Manager が仲介して接続を確立します。
- セッションはワンクリックで開始・終了でき、操作はログとして保存されます。
ログと監査のポイント
- セッションの入出力を保存すれば、操作履歴を後で追跡できます。
- IAM ポリシーで誰がセッションを開始できるか細かく制御できます。
注意点
- 対象ノードに SSM Agent のインストールと適切な IAM ロールが必要です。
- ネットワークがアウトバウンドで AWS に接続できる必要があります。
第2章 Session Manager を使うメリット
2-1. ネットワーク構成・セキュリティ面のメリット
- 踏み台サーバーが不要になります。インターネット公開された踏み台経由のSSH/RDPを廃止でき、攻撃対象が減ります。
- インバウンドのSSH/RDPポートを開放する必要がありません。これによりファイアウォールの設定が簡素化され、攻撃リスクを低減できます。
- プライベートサブネット内のEC2にパブリックIPを割り当てずに接続できます。例として、外部から直接アクセスせずに管理作業が可能です。
- VPNや専用回線なしでプライベート環境へアクセスできます。これにより接続手順が短くなり運用負荷が下がります。
2-2. 認証・権限管理のメリット
- SSHキーやID/パスワードの配布・管理が不要です。IAMの認証で接続を制御し、キー紛失や漏洩のリスクを減らせます。
- IAMポリシーで細かな権限制御ができます。たとえば、特定のユーザーには特定のインスタンスのみ接続を許可し、特定の操作だけを許可する設定が可能です。
- ロールやグループ単位で権限を付与・変更できるため、移管や人事異動時の対応が楽になります。
2-3. 運用・監査のメリット
- セッションの開始・終了はCloudTrailに自動記録されます。誰がいつ接続したかを確実に把握できます。
- コマンド実行ログやセッションの記録をCloudWatch LogsやS3に保存できます。問題発生時に操作履歴を追跡できます。
- 踏み台サーバーの運用コストや負荷を削減できます。運用担当者は管理対象が減り業務が効率化します。
- Linux/WindowsのEC2だけでなく、オンプレミスやVM、エッジデバイスにも対応します。多様な環境を一元的に管理できます。
第3章 Session Manager の仕組みとアーキテクチャ概要
概要
Session Managerは、管理対象ノード(マネージドノード)上で動くSSM AgentとAWSのSystems Managerサービスがアウトバウンド接続を張る方式で動作します。ユーザーはAWSコンソールやAWS CLIから制御面(コントロールプレーン)を操作し、実際の入出力はSSM Agent経由でやり取りされます。
主な構成要素と役割
- SSM Agent(ノード側): ノード上で常駐し、Systems Managerと通信します。セッションの受け渡しとコマンド実行を仲介します。例: EC2やオンプレのサーバーにインストールされたエージェント。
- Systems Manager(管理側): セッションの制御、認可、ログ収集を行います。ユーザーからの要求を受けて対象ノードと接続を確立します。
- IAM ロール(インスタンスプロファイル): ノードがSystems Managerに接続するための権限を持ちます。代表的なポリシーはAmazonSSMManagedInstanceCoreです。
通信の流れ(概略)
- ユーザーがコンソールやaws ssm start-sessionで接続要求を送ります。2. Systems Managerは対象ノードへの接続指示を出します。3. 対象ノード上のSSM AgentがアウトバウンドでSystems Managerへ接続し、双方向のセッションチャネルを確立します。4. ユーザーの入力とノードの出力はこのチャネルを通じてやり取りされます。
セキュリティ上の特徴
- ノードはアウトバウンド通信のみ行うため、インバウンドポートを開けずに接続できます。これにより攻撃面が小さくなります。
- 通信は暗号化され、必要に応じてセッションログをS3やCloudWatchに保存し、KMSで暗号化できます。
利用イメージ(具体例)
例: 公開IPのないEC2でも、エージェントがアウトバウンドでAWSに接続していれば、ブラウザやCLIから安全にシェル接続できます。
第4章 利用前提条件と準備
4-1 必要な前提条件(共通)
- 対象インスタンスがSSM対応のOSであること
- 例:Amazon Linux、Ubuntu、Windows Serverなど公式でサポートされるOSです。
- インスタンスが起動中(running)であること
- 停止中では接続できません。
- SSM Agentがインストールされ、起動中であること
- Linux: systemctl status amazon-ssm-agent
- Windows: サービスに「Amazon SSM Agent」があるか確認します。
- インスタンスに付与されたIAMロールがSystems Managerの操作を許可していること
- 一般的にAmazonSSMManagedInstanceCoreポリシーをアタッチします。
- インスタンスがSSMエンドポイントへ到達できること
- インターネット経由か、VPCエンドポイント(ssm / ec2messages / ssmmessages)経由のいずれかが必要です。
- 接続するIAMユーザー/ロールがSession Managerの操作権限を持っていること
- Session Manager関連の許可(ssm:StartSession等)を付与します。
4-2 IAMロール作成
- ロール作成の流れ(コンソール例)
- IAMで「ロールを作成」→ ユースケースに「EC2」を選択→ 管理ポリシーで「AmazonSSMManagedInstanceCore」を選択→ ロール名を付けて作成します。
- EC2への適用
- インスタンスを起動時に指定するか、既存インスタンスには「インスタンス設定」→「IAMロールの変更」で割り当てます。
- CLI例: aws ec2 associate-iam-instance-profile –instance-id i-0123456789abcdef0 –iam-instance-profile Name=MySSMRole
- 注意点
- 過度に広い権限は避け、必要最小限のポリシーを付与してください。ネットワーク経路(NATやVPCエンドポイント)が正しいかも確認します。












