VPCにSystems Managerのインターフェイスエンドポイントを設定する手順

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、 「どうやって直すのか?」 という具体的な修復手順(コンソール、AWS CLI、Terraformなど)まで、分かりやすく解説します。

この記事では、VPCにSystems Managerのインターフェイスエンドポイントを設定する手順について、リスクと対策を解説します。

ポリシーの説明

AWS Systems ManagerはEC2インスタンスやオンプレミスサーバーを管理するための統合サービスです。デフォルトでは、Systems Manager APIへの通信はインターネット経由で行われますが、VPCインターフェイスエンドポイント(AWS PrivateLink)を使用することで、インターネット接続なしにプライベートサブネット内のインスタンスをSystems Managerで管理できます。

Systems Managerの主要機能:

  • Run Command: リモートでコマンドを実行
  • Session Manager: SSHやRDPを使わずにインスタンスに接続
  • Patch Manager: OS やアプリケーションのパッチ管理
  • Parameter Store: 設定データや機密情報の安全な保存
  • State Manager: インスタンスの構成管理
  • Inventory: インスタンスのソフトウェアインベントリ収集

VPCエンドポイントを設定することで、これらすべての機能をプライベートネットワーク内で利用でき、セキュリティが大幅に向上します。

修復方法

前提条件

必要な権限:

  • ec2:CreateVpcEndpoint
  • ec2:ModifyVpcEndpoint
  • ec2:DescribeVpcEndpoints
  • iam:CreateRole(SSMインスタンスロール用)

コスト見積もり:

  • インターフェイスエンドポイント: $0.01/時間/AZ(月額約$7.30/AZ)
  • 必要なエンドポイント数: 最小3つ(ssm、ec2messages、ssmmessages)
  • 3AZ構成の場合: 約$66/月(3エンドポイント × 3AZ)

コンソールでの修復手順

AWSのコンソールを使用して、Systems Manager用のVPCインターフェイスエンドポイントを設定します。

重要: Systems Managerを完全に動作させるには、最低3つのエンドポイントが必要です(ssm、ec2messages、ssmmessages)。

  1. AWS Management Consoleにログイン
    • VPCサービスに移動します
  2. SSMエンドポイントの作成
    • 左側のナビゲーションペインから「エンドポイント」を選択「エンドポイントの作成」をクリックサービス名で「com.amazonaws.リージョン.ssm」を検索して選択
  1. 対象のVPCを選択
  2. サブネット:管理対象インスタンスが存在するプライベートサブネットを選択
  3. プライベートDNS名を有効化:チェックを入れます
  4. セキュリティグループ:HTTPS(443ポート)を許可するセキュリティグループを選択
  5. 「エンドポイントの作成」をクリック
  6. EC2Messagesエンドポイントの作成
    • 同様の手順で「com.amazonaws.リージョン.ec2messages」エンドポイントを作
    • 重要: このエンドポイントはRun CommaandやState Managerの実行に必須です
  1. SSMMessagesエンドポイントの作成
    • 同様の手順で「com.amazonaws.リージョン.ssmmessages」エンドポイントを作成
    • Session ManagerやRun Commandを使用する場合は必須です
  1. セキュリティグループの設定
    • インバウンドルール: Type: HTTPS Protocol: TCP Port Range: 443 Source: VPC CIDR (例: 10.0.0.0/16) または管理対象インスタンスのセキュリティグループ Description: Allow HTTPS from managed instances
    • アウトバウンドルール:設定なし
  2. エンドポイントポリシーの設定(推奨) 各エンドポイントに対して、最小権限の原則に基づいたポリシーを設定: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalAccount": "<your-account-id>" } } } ] }

Terraformでの修復手順

Systems Manager用のVPCインターフェイスエンドポイントを作成する包括的なTerraformコードのサンプルです。

※ あくまで実装サンプルとして変数やID指定については適当な値を注入しているため、適切な値に修正してください。


# SSMエンドポイント
resource "aws_vpc_endpoint" "ssm" {
  vpc_id              = data.aws_vpc.main.id
  service_name        = "com.amazonaws.${data.aws_region.current.name}.ssm"
  vpc_endpoint_type   = "Interface"
  subnet_ids          = var.private_subnet_ids
  security_group_ids  = [aws_security_group.ssm_endpoints.id]
  private_dns_enabled = true

  tags = {
    Name = "ssm-endpoint"
  }
}

# EC2Messagesエンドポイント(Run Command、State Manager用)
# 重要:このエンドポイントは必須です
resource "aws_vpc_endpoint" "ec2messages" {
  vpc_id              = data.aws_vpc.main.id
  service_name        = "com.amazonaws.${data.aws_region.current.name}.ec2messages"
  vpc_endpoint_type   = "Interface"
  subnet_ids          = var.private_subnet_ids
  security_group_ids  = [aws_security_group.ssm_endpoints.id]
  private_dns_enabled = true

  tags = {
    Name = "ec2messages-endpoint"
  }
}

# SSMMessagesエンドポイント(Session Manager、Run Command用)
resource "aws_vpc_endpoint" "ssmmessages" {
  vpc_id              = data.aws_vpc.main.id
  service_name        = "com.amazonaws.${data.aws_region.current.name}.ssmmessages"
  vpc_endpoint_type   = "Interface"
  subnet_ids          = var.private_subnet_ids
  security_group_ids  = [aws_security_group.ssm_endpoints.id]
  private_dns_enabled = true

  tags = {
    Name = "ssmmessages-endpoint"
  }
}

重要な実装ポイント:

  1. 必須エンドポイント: ssm、ec2messages、ssmmessagesの3つは必須
  2. プライベートDNS: private_dns_enabled = trueで既存のコードを変更せずに利用可能
  3. S3エンドポイント: SSM Agent更新とパッチ適用に必要なバケットへのアクセスを許可
  4. IAMロール: EC2インスタンスにAmazonSSMManagedInstanceCoreポリシーをアタッチ
  5. モニタリング: CloudWatchアラームでエンドポイントの可用性を監視

最後に

この記事では、VPCにSystems Managerのインターフェイスエンドポイントを設定する手順について、包括的なリスク分析と実践的な対策を解説しました。

重要なポイントのまとめ:

  • Systems Managerの完全な動作には最低3つのエンドポイント(ssm、ec2messages、ssmmessages)が必要
  • プライベートDNSを有効にすることで、既存のコードやスクリプトの変更なしに移行可能
  • 月額コストは約$66(3エンドポイント × 3AZ)だが、NAT Gatewayのデータ転送コスト削減で相殺可能
  • Session Managerの通信内容やParameter Storeの機密情報をプライベートネットワーク内に閉じ込められる

VPCエンドポイントを使用することで、プライベートサブネット内のEC2インスタンスをインターネット接続なしで安全に管理できます。これは、金融機関や医療機関などの規制業界では必須の要件となっており、一般企業でもセキュリティベストプラクティスとして強く推奨されます。

この問題の検出は弊社が提供するSecurifyのCSPM機能で自動的に検出・管理することが可能です。24時間365日の継続的な監視により、VPCエンドポイントの設定漏れを即座に検知し、コンプライアンス未然に防ぎます。

運用負荷を大幅に軽減しながら、セキュリティレベルを向上させる製品となっていますので、ぜひ興味がある方はお問い合わせください。

最後までお読みいただきありがとうございました。この記事が皆さんのSystems Managerセキュリティ強化の一助となれば幸いです。

参考資料

この記事をシェアする

クラウドセキュリティ対策実践集一覧へ戻る

貴社の利用状況に合わせた見積もりを作成します。

料金プランを詳しく見る