如何配置 EventBridge 规则,以便在特定 AWS 服务事件类型触发时让 GuardDuty 发送自定义的 SNS 通知?

上次更新日期:2022 年 1 月 10 日

我创建了一条 Amazon EventBridge 规则,以根据 Amazon GuardDuty 服务事件类型触发,但响应为 JSON 格式。如何才能收到含有自定义通知的电子邮件响应?

简短描述

在 EventBridge 规则中使用自定义事件模式,从而匹配特定的调查结果类型。然后,将响应路由到某个 Amazon Simple Notification Service (Amazon SNS) 主题。

解决方法

此示例使用 Amazon GuardDuty 事件类型 UnauthorizedAccess:EC2/MaliciousIPCaller.Custom

注意:您可以将它替换为特定 AWS 服务的服务名称和事件类型。

1.    如果您尚未创建 Amazon SNS 主题,请按照 Amazon SNS 入门中的说明创建一个。

注意:Amazon SNS 主题必须与您的 Amazon GuardDuty 服务位于同一区域。

2.    打开 EventBridge 控制台

3.    选择创建规则

4.    为规则输入名称。可选择输入描述

5.    在 Define pattern(定义模式)中,选择 Event pattern(事件模式)。

6.    选择 Pre-defined pattern by service(按服务分类的预定义模式)。

7.    对于 Service provider(服务提供商),选择 AWS

8.    对于 Service name(服务名称),选择 GuardDuty

9.    对于事件类型,选择 GuardDuty 调查结果

10.    在事件模式预览部分中,选择编辑

11.    复制以下代码并将其粘贴到事件模式预览部分中,然后选择保存

{
  "source": [
    "aws.guardduty"
  ],
  "detail": {
    "type": [
      "UnauthorizedAccess:EC2/MaliciousIPCaller.Custom"
     ]
  }
}

12.    在 Select event bus(选择事件总线)中,选择 AWS default event bus(AWS 原定设置事件总线)。

13.    在选择目标中,选择 SNS 主题,然后选择您之前创建的 SNS 主题。

14.    展开 Configure input(配置输入),然后选择 Input transformer(输入转换器)。

15.    复制下面的代码。然后将其粘贴到输入路径中。

{
    "severity": "$.detail.severity",
    "Finding_ID": "$.detail.id",
    "instanceId": "$.detail.resource.instanceDetails.instanceId",
    "port": "$.detail.service.action.networkConnectionAction.localPortDetails.port",
    "eventFirstSeen": "$.detail.service.eventFirstSeen",
    "eventLastSeen": "$.detail.service.eventLastSeen",
    "count": "$.detail.service.count",
    "Finding_Type": "$.detail.type",
    "region": "$.region",
    "Finding_description": "$.detail.description"
}

16.    复制下面的代码。然后将其粘贴到输入模板中。

"You have a severity <severity> GuardDuty finding type <Finding_Type> for the EC2 instance <instanceId> in the region <region> as the <Finding_description> on the port <port>. The first attempt was on <eventFirstSeen> and the most recent attempt on <eventLastSeen> . The total occurrence is <count>. For more details open the GuardDuty console at https://console.aws.amazon.com/guardduty/home?region=<region>#/findings?search=id%3D<Finding_ID>"

17.    滚动到页面底部,然后选择创建

18.    触发某个事件类型时,您将收到一份 SNS 电子邮件通知,其中的自定义字段将从第 16 步填充,与以下所示类似

"You have a severity 5 GuardDuty finding type UnauthorizedAccess:EC2/MaliciousIPCaller.Custom for the EC2 instance EXAMPLEID in the region EXAMPLEREGION as the EC2 instance EXAMPLE is communicating with a disallowed IP address EXAMPLEREMOTEIP on the EXAMPLELIST on the port EXAMPLEPORT. The first attempt was on EXAMPLEDATE1 and the most recent attempt on EXAMPLEDATE2. The total occurrence is COUNTEXAMPLE. For more details open the GuardDuty console at https://console.aws.amazon.com/guardduty/home?EXAMPLEREGION"