我如何排查 GuardDuty 自定义 Amazon SNS 通知未送达的问题?
上次更新时间:2020 年 1 月 29 日
为什么我的 Amazon GuardDuty 自定义 Amazon Simple Notification Service (Amazon SNS) 通知未送达?
简短描述
我按照说明配置了 Amazon CloudWatch Events 规则,以便在特定 AWS 服务事件类型触发时让 GuardDuty 发送自定义 SNS 通知。但是,SNS 通知未送达。
解决方法
按照下面的说明确认以下设置正确:
- Amazon SNS 订阅确认
- Amazon SNS 主题的 AWS Identity and Access Management (IAM) 访问策略
- AWS Key Management Service (AWS KMS) 权限
- CloudWatch 事件模式 JSON 对象查找类型
确认 Amazon SNS 订阅
- 打开 Amazon SNS 控制台,然后选择订阅。
- 对于您的 Amazon SNS 订阅 ID,请验证状态为已确认。
- 如果状态为等待确认,请按照确认订阅的说明操作。
确认 SNS 主题访问策略的权限
- 打开 Amazon SNS 控制台,然后选择主题。
- 在名称中,选择您的 Amazon SNS 主题。
- 在详细信息中,选择访问策略选项卡。
- 验证 IAM 策略允许发布与以下内容类似的 events.amazonaws.com 委托人的权限:
{
"Sid": "AWSEvents",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "sns:Publish",
"Resource": "arn:aws:sns:YOUR-REGION:YOUR-ACCOUNT-ID:YOUR-SNS-TOPIC"
}
确认 AWS Key Management Service (AWS KMS) 权限
- 打开 AWS KMS 控制台,然后选择客户托管密钥。
- 在密钥 ID 中,选择您的客户托管密钥 (CMK)。
- 在密钥策略中,选择切换到策略视图。
- 验证 KMS 策略允许发布与以下内容类似的 events.amazonaws.com 委托人的权限:
{
"Sid": "AWSEvents",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": [
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "*"
}
确认 CloudWatch 事件模式 JSON 对象查找类型
- 打开 CloudWatch 控制台,然后选择规则。
- 在名称中,选择您的 CloudWatch 规则。
- 在事件模式中,验证 JSON 对象查找类型匹配与以下内容类似的特定 AWS 服务:
{
"source": [
"aws.guardduty"
],
"detail-type": [
"GuardDuty Finding"
]
}