Systems Manager Incident Manager Contacts用インターフェイスエンドポイントを設定する手順

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

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

ポリシーの説明

AWS Systems Manager Incident Manager Contactsは、インシデント対応プロセスを自動化し、適切な担当者への迅速な連絡を可能にするサービスです。このサービスは、オンコール担当者の連絡先情報、エスカレーション経路、通知チャンネル(電話、SMS、メール、Slack等)を一元管理します。

デフォルトでは、Incident Manager Contacts APIへの通信はインターネット経由で行われますが、VPCインターフェイスエンドポイント(AWS PrivateLink)を設定することで、以下のメリットが得られます:

  • 機密情報の保護: 担当者の個人情報(電話番号、メールアドレス)がプライベートネットワーク内に留まる
  • アクセス制御の強化: VPCエンドポイントポリシーにより、特定のIAMロールからのみアクセスを許可
  • ネットワーク分離: インシデント対応システムを完全にプライベート環境で運用可能
  • 監査とコンプライアンス: CloudTrailとVPCフローログによる詳細な監査証跡

修復方法

前提条件

修復を開始する前に、以下の前提条件を確認してください:

必要な権限:

  • ec2:CreateVpcEndpoint
  • ec2:ModifyVpcEndpoint
  • ec2:DescribeVpcEndpoints
  • ec2:CreateSecurityGroup
  • iam:CreateServiceLinkedRole (初回のみ)

コスト見積もり:

  • インターフェイスエンドポイント: $0.01/時間/AZ(月額約$7.30/AZ)
  • データ処理: $0.01/GB
  • 3AZ構成の場合: 約$22/月(NAT Gatewayコスト削減により相殺可能)

コンソールでの修復手順

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

  1. VPCの事前確認 # VPCのDNS設定確認 aws ec2 describe-vpcs --vpc-ids vpc-xxxxxx \\\\ --query 'Vpcs[0].[EnableDnsHostnames,EnableDnsSupport]' # 両方がtrueであることを確認
  2. VPCコンソールにアクセス
    • AWSマネジメントコンソールにログインし、VPCサービスを選択します
  3. エンドポイントセクションに移動
    • 左側のナビゲーションペインから「エンドポイント」を選択します既存のエンドポイントを確認し、重複がないことを確認
  1. エンドポイントの作成
    • 「エンドポイントの作成」ボタンをクリックします
  2. Incident Manager Contacts用エンドポイントの設定
    • サービスカテゴリ:「AWSのサービス」を選択サービス名:以下の形式で検索して選択 (リージョンは実際の使用リージョンに置き換え)com.amazonaws.ap-northeast-1.ssm-contacts
  1. VPC:エンドポイントを作成するVPCを選択
  2. サブネット:プライベートサブネットを選択
    • 重要: 高可用性のため、最低2つ以上のAZのサブネットを選択
    • 各AZから1つずつサブネットを選択することを推奨
  3. プライベートDNS名を有効化:必ずチェックを入れます
    • これにより ssm-contacts.region.amazonaws.com が自動的にVPCエンドポイントに解決されます
  4. セキュリティグループ:新規作成または既存のものを選択
  5. セキュリティグループの設定 新しいセキュリティグループを作成する場合:
    • 名前:ssm-contacts-endpoint-sg説明:Security group for SSM Incident Manager Contacts VPC endpoint
  6. アウトバウンドルール:設定なし
  7. インバウンドルール
Type: HTTPS
Protocol: TCP
Port Range: 443
Source: 以下のいずれかを選択
  - VPC CIDR (例: 10.0.0.0/16) - VPC全体からのアクセスを許可
  - カスタム: Lambda関数のセキュリティグループID (sg-xxxxxx)
  - カスタム: EC2インスタンスのセキュリティグループID
Description: Allow HTTPS from incident response systems
  1. エンドポイントポリシーの設定(推奨) 最小権限の原則に基づいたポリシー例:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::123456789012:role/IncidentResponseRole",
          "arn:aws:iam::123456789012:role/LambdaIncidentHandlerRole"
        ]
      },
      "Action": [
        "ssm-contacts:ListContacts",
        "ssm-contacts:GetContact",
        "ssm-contacts:StartEngagement",
        "ssm-contacts:StopEngagement",
        "ssm-contacts:DescribeEngagement"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalAccount": "123456789012"
        }
      }
    }
  ]
}

Terraformでの修復手順

Incident Manager Contacts用のVPCエンドポイントを設定するTerraformコードのサンプルです。

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


# Incident Manager Contacts用のVPCエンドポイント
resource "aws_vpc_endpoint" "ssm_contacts" {
  vpc_id              = data.aws_vpc.main.id
  service_name        = "com.amazonaws.${data.aws_region.current.name}.ssm-contacts"
  vpc_endpoint_type   = "Interface"
  subnet_ids          = var.private_subnet_ids
  security_group_ids  = [aws_security_group.ssm_contacts_endpoint.id]
  private_dns_enabled = true

  tags = {
    Name = "ssm-contacts-endpoint"
    Purpose = "Incident Manager Contacts API Access"
  }
}

# エンドポイントポリシー(より制限的な設定の例)
resource "aws_vpc_endpoint_policy" "ssm_contacts_policy" {
  vpc_endpoint_id = aws_vpc_endpoint.ssm_contacts.id

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Sid    = "AllowIncidentManagerContactsAccess"
        Effect = "Allow"
        Principal = {
          AWS = var.allowed_principal_arns
        }
        Action = [
          "ssm-contacts:ListContacts",
          "ssm-contacts:GetContact",
          "ssm-contacts:GetContactChannel",
          "ssm-contacts:ListContactChannels",
          "ssm-contacts:DescribeEngagement",
          "ssm-contacts:ListEngagements",
          "ssm-contacts:StartEngagement",
          "ssm-contacts:StopEngagement",
          "ssm-contacts:AcceptPage",
          "ssm-contacts:SendActivationCode",
          "ssm-contacts:ActivateContactChannel"
        ]
        Resource = "*"
      }
    ]
  })
}

最後に

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

VPCエンドポイントを使用することで、インシデント対応に関わる機密情報をプライベートネットワーク内に保護し、規制要件への準拠とセキュリティ強化を実現できます。特に、個人情報保護法やGDPRの対象となる組織では、この設定は必須と言えるでしょう。

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

  • Incident Manager Contactsには担当者の個人情報が含まれるため、VPCエンドポイントによる保護が重要
  • GDPR違反の場合、最大2000万ユーロまたは年間売上高の4%の制裁金リスク
  • 月額コストは約$22(3AZ構成)だが、セキュリティとコンプライアンスの観点から必須
  • インシデント対応の可用性確保のため、複数AZへの配置が推奨

この問題の検出は弊社が提供するSecurifyのCSPM機能で自動的に検出・管理することが可能です。

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

最後までお読みいただきありがとうございました。

参考資料

この記事をシェアする

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

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

料金プランを詳しく見る