踏み台サーバー不要!SSMでEC2に安全接続する設定手順ガイド

はじめに

AWSの運用において、EC2インスタンスへのSSH接続は頻繁に発生します。しかし、従来の踏み台サーバー(砦サーバー)の運用や、SSHキー(鍵ファイル)の管理には、セキュリティリスクやメンテナンス負荷が伴います。本記事では、踏み台サーバーを排除し、IAM権限のみで安全にEC2へ接続できる「AWS Systems Manager Session Manager(セッションマネージャー)」の設定手順を、実務に即してステップバイステップで解説します。

前提知識/必要な理由

Session Managerを採用すべき最大の理由は「セキュリティの向上」と「運用コストの削減」です。

従来のSSH接続では、インターネットからアクセス可能なインバウンドポート(TCP/22)を開放する必要があり、これが攻撃対象領域(アタックサーフェス)となっていました。また、個人のSSH鍵の紛失や漏洩、管理の繁雑さも課題でした。

Session Managerを利用することで、以下のメリットを享受できます。

  • インバウンドポートの完全閉鎖: EC2側で22番ポートを開放する必要がありません。
  • SSHキーの管理不要: AWS IAMによってアクセス権限を統合管理します。
  • 証跡の自動保存: 実行したコマンドのログをCloudWatch LogsやS3に自動保存可能です。

具体的な設定手順・設計方法

今回は、EC2インスタンスがインターネットに直接接続できない「プライベートサブネット」にある環境を想定した、実務で最も役立つ設計手順を解説します。

Step 1. EC2用のIAMロール(インスタンスプロフィール)の作成

EC2がSystems Manager(SSM)と通信できるようにするためのIAMロールを作成します。

  1. AWS管理コンソールのIAM画面から「ロールの作成」を選択します。
  2. 信頼されたエンティティタイプとして「AWSのサービス」、ユースケースに「EC2」を選択します。
  3. 許可ポリシーとして、AWS管理ポリシーの AmazonSSMManagedInstanceCore をアタッチします。
  4. 任意のロール名(例: EC2-SSM-Access-Role)を入力してロールを作成します。

Step 2. EC2インスタンスの起動とIAMロールのアタッチ

対象のEC2インスタンス(Linuxを推奨)を起動し、先ほど作成したIAMロールをアタッチします。なお、セキュリティグループのインバウンドルールは空(許可ルールなし)で問題ありません。

※最近の主要なAMI(Amazon Linux 2023、Amazon Linux 2、Ubuntu等)には、Session Managerに必要なSSM Agentが最初からインストールされているため、特別なインストール作業は不要です。

Step 3. VPCエンドポイントの設定(プライベート環境の場合)

プライベートサブネット内のEC2がインターネットを介さずにSSMと通信できるよう、VPCエンドポイント(Interface型)を3つ作成します。通信先サブネットのセキュリティグループでは、EC2からの「HTTPS (443)」通信を許可してください。

  • com.amazonaws.[region].ssm
  • com.amazonaws.[region].ssmmessages
  • com.amazonaws.[region].ec2messages

Step 4. クライアント環境(手元のPC)の接続準備

ローカルPCのターミナルからAWS CLIを使って接続する場合、標準のAWS CLIに加えて、拡張プラグインであるSession Manager PluginをローカルPCに導入する必要があります。

以下は、各環境での導入手順です。

macOSの場合(Homebrewを使用):

# Session Manager Pluginのインストール
brew install --cask session-manager-plugin

# インストールの確認
session-manager-plugin --version

Windowsの場合(PowerShellを使用):

# インストーラーのダウンロードと実行
Invoke-WebRequest "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/windows/SessionManagerPluginSetup.exe" -OutFile "SessionManagerPluginSetup.exe"
Start-Process -FilePath ".\SessionManagerPluginSetup.exe" -ArgumentList "/S" -Wait

# インストールの確認
session-manager-plugin --version

Step 5. 接続の実行

準備が整ったら、ローカルPCのターミナルから以下のAWS CLIコマンドを実行して、EC2に接続します。

# EC2への接続コマンド(instance-idの部分に対象のIDを入力)
aws ssm start-session --target i-0123456789abcdef0

コマンド実行後、シェルが起動し、EC2のOS操作が可能になれば接続成功です。

実務での注意点

  • SSM Agentの死活監視: EC2内でSSM Agentプロセスが停止すると接続できなくなります。特に古いOSやカスタムAMIを使用する場合は、事前にAgentのインストールと自動起動設定(systemctl enable amazon-ssm-agent)を確認してください。
  • ロールの最小権限原則: 実務では、どのユーザーがどのEC2に接続できるかを制限するため、IAMポリシーで ssm:StartSessionResource タグなどを利用してアクセス制御を細かく設計してください。
  • VPC DNSの有効化: VPCエンドポイントを使用する際は、VPC設定で「DNS解決」と「DNSホスト名」の両方が有効(True)になっている必要があります。

まとめ

AWS Systems Manager Session Managerを導入することで、インフラ全体のセキュリティが劇的に向上します。従来の「SSHキーの配布・ローテーション」「踏み台サーバーのコストとセキュリティパッチ管理」から解放されるため、実務において不可欠なモダンインフラの設計プラクティスです。ぜひ本手順を参考に、安全なリモート管理環境を構築してください。

上部へスクロール