我如何排查 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": ,
    "Resource": "*"
}

确认 CloudWatch 事件模式 JSON 对象查找类型

    打开 CloudWatch 控制台,然后选择规则。 在名称中,选择您的 CloudWatch 规则。 在事件模式中,验证 JSON 对象查找类型匹配与以下内容类似的特定 AWS 服务:
{
  "source": ,
  "detail-type": 
}