我如何排查 GuardDuty 自定义 Amazon SNS 通知未送达的问题?

2 分钟阅读
0

为什么我的 Amazon GuardDuty 自定义 Amazon Simple Notification Service (Amazon SNS) 通知未送达?

简短描述

我按照说明配置了 Amazon EventBridge 规则,以便在特定 AWS 服务事件类型触发时让 GuardDuty 发送自定义 SNS 通知。但是,SNS 通知未送达。

解决方法

按照下面的说明确认以下设置正确:

  • Amazon SNS 订阅确认。
  • Amazon SNS 主题的 AWS Identity and Access Management (IAM) 访问策略。
  • AWS Key Management Service (AWS KMS) 权限。
  • EventBridge 事件模式 JSON 对象结果类型。

确认 Amazon SNS 订阅

  1. 打开 Amazon SNS 控制台,然后选择Subscriptions(订阅)。
  2. 对于您的 Amazon SNS 订阅 ID,请验证状态为已确认
  3. 如果状态为 Pending confirmation(等待确认),请按照确认订阅的说明操作。

确认 SNS 主题访问策略的权限

  1. 打开 Amazon SNS 控制台,然后选择 Topics(主题)。
  2. Name(名称)中,选择您的 Amazon SNS 主题。
  3. Details(详细信息)中,选择 Access policy(访问策略)选项卡。
  4. 验证 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) 权限

  1. 打开 AWS KMS 控制台,然后选择 Customer managed keys(客户托管密钥)。
  2. Key ID(密钥 ID)中,选择您的 AWS KMS 密钥。
  3. Key policy(密钥策略)中,选择 Switch to policy view(切换到策略视图)。
  4. 验证 KMS 密钥策略允许发布与以下内容类似的 events.amazonaws.com 委托人的权限:
{
    "Sid": "AWSEvents",
    "Effect": "Allow",
    "Principal": {
        "Service": "events.amazonaws.com"
    },
    "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
    ],
    "Resource": "*"
}

确认 EventBridge 事件模式 JSON 对象结果类型

  1. 打开 EventBridge 控制台,然后选择 Rules(规则)。
  2. Name(名称)中,选择您的规则。
  3. Event pattern(事件模式)中,验证 JSON 对象结果类型与类似以下内容的特定 AWS 服务匹配:
{
  "source": [
    "aws.guardduty"
  ],
  "detail-type": [
    "GuardDuty Finding"
  ]
}

相关信息

通过 Amazon Elasticsearch Service (Amazon ES) 实时监控您的 GuardDuty 安全

GuardDuty 结果类型

相关视频

AWS 官方
AWS 官方已更新 3 年前