awsとセッションマネージャーの基本知識と仕組みを詳しく解説

目次

はじめに

目的

本ドキュメントは、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 に、管理者がブラウザから一時的にアクセスして設定変更する。
  • 社内ネットワーク内のオンプレミスサーバへ、踏み台を使わずに運用担当が接続する。
  • ラズベリーパイなどのエッジデバイスへ、リモートでコマンドを実行してログを取得する。

動作のイメージ

  1. 管理対象ノードに SSM Agent が動作し、AWS のエンドポイントへアウトバウンド接続を維持します。
  2. 管理者はコンソールや CLI からセッションを要求します。Systems Manager が仲介して接続を確立します。
  3. セッションはワンクリックで開始・終了でき、操作はログとして保存されます。

ログと監査のポイント

  • セッションの入出力を保存すれば、操作履歴を後で追跡できます。
  • 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です。

通信の流れ(概略)

  1. ユーザーがコンソールや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ロール作成

  1. ロール作成の流れ(コンソール例)
  2. IAMで「ロールを作成」→ ユースケースに「EC2」を選択→ 管理ポリシーで「AmazonSSMManagedInstanceCore」を選択→ ロール名を付けて作成します。
  3. EC2への適用
  4. インスタンスを起動時に指定するか、既存インスタンスには「インスタンス設定」→「IAMロールの変更」で割り当てます。
  5. CLI例: aws ec2 associate-iam-instance-profile –instance-id i-0123456789abcdef0 –iam-instance-profile Name=MySSMRole
  6. 注意点
  7. 過度に広い権限は避け、必要最小限のポリシーを付与してください。ネットワーク経路(NATやVPCエンドポイント)が正しいかも確認します。
よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

目次