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用のインターフェイスエンドポイントを設定します。
- VPCの事前確認
# VPCのDNS設定確認 aws ec2 describe-vpcs --vpc-ids vpc-xxxxxx \\\\ --query 'Vpcs[0].[EnableDnsHostnames,EnableDnsSupport]' # 両方がtrueであることを確認
- VPCコンソールにアクセス
- AWSマネジメントコンソールにログインし、VPCサービスを選択します
- エンドポイントセクションに移動
- 左側のナビゲーションペインから「エンドポイント」を選択します既存のエンドポイントを確認し、重複がないことを確認

- エンドポイントの作成
- 「エンドポイントの作成」ボタンをクリックします
- Incident Manager Contacts用エンドポイントの設定
- サービスカテゴリ:「AWSのサービス」を選択サービス名:以下の形式で検索して選択 (リージョンは実際の使用リージョンに置き換え)
com.amazonaws.ap-northeast-1.ssm-contacts
- サービスカテゴリ:「AWSのサービス」を選択サービス名:以下の形式で検索して選択 (リージョンは実際の使用リージョンに置き換え)

- VPC:エンドポイントを作成するVPCを選択
- サブネット:プライベートサブネットを選択
- 重要: 高可用性のため、最低2つ以上のAZのサブネットを選択
- 各AZから1つずつサブネットを選択することを推奨
- プライベートDNS名を有効化:必ずチェックを入れます
- これにより
ssm-contacts.region.amazonaws.com
が自動的にVPCエンドポイントに解決されます
- これにより
- セキュリティグループ:新規作成または既存のものを選択
- セキュリティグループの設定 新しいセキュリティグループを作成する場合:
- 名前:
ssm-contacts-endpoint-sg
説明:Security group for SSM Incident Manager Contacts VPC endpoint
- 名前:
- アウトバウンドルール:設定なし
- インバウンドルール:
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
- エンドポイントポリシーの設定(推奨) 最小権限の原則に基づいたポリシー例:
{
"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機能で自動的に検出・管理することが可能です。
運用負荷を大幅に軽減しながら、セキュリティレベルを向上させる製品となっていますので、ぜひ興味がある方はお問い合わせください。
最後までお読みいただきありがとうございました。