使用 Amazon 处理 GuardDuty 调查结果 EventBridge - 亚马逊 GuardDuty
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon 处理 GuardDuty 调查结果 EventBridge

GuardDuty 自动将调查结果作为事件发布(发送)到无服务器事件总线服务 Amazon EventBridge (前身为 Amazon CloudWatch Events)。 EventBridge 将来自应用程序和服务的近乎实时的数据流提供给亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 主题 Amazon Lambda 、函数和 Amazon Kinesis 流等目标。有关更多信息,请参阅 Amazon EventBridge 用户指南

EventBridge 支持通过接收事件自动监控和处理 GuardDuty 调查结果。 EventBridge 接收新生成的发现和汇总发现的事件,其中现有发现的后续出现与原始发现相结合。每个 GuardDuty查找结果都被分配一个查找 ID,并使用唯一的查找 ID 为每个发现 GuardDuty 创建一个 EventBridge 事件。有关聚合在中的工作原理的信息 GuardDuty,请参阅GuardDuty 查找聚合

除了自动监控和处理外,使用 EventBridge 还可以长期保留您的发现数据。 GuardDuty 将发现的结果存储 90 天。使用 EventBridge,您可以将调查结果数据发送到首选存储平台,并根据需要将数据存储多长时间。要将发现结果保留更长的时间,请 GuardDuty 支持将生成的调查发现导出到 Amazon S3

了解中的 EventBridge 通知频率 GuardDuty

本节说明您通过多久收到查找通知的频率 EventBridge以及如何更新后续查找事件的频率。

具有唯一调查发现 ID 的新生成调查发现的通知

GuardDuty 当它生成带有唯一查找 ID 的查找结果时,它会近乎实时地发送这些通知。该通知会包括在通知生成过程中此调查发现 ID 后续的所有事件。

新生成的调查发现的通知频率接近实时。默认情况下,您无法修改此频率。

后续调查发现事件的通知

GuardDuty 将在 6 小时间隔内发生的特定查找类型的所有后续事件汇总为一个事件。只有管理员帐户才能更新后续查找事件的 EventBridge 通知频率。成员账户无法更新自己账户的此频率。例如,如果委派 GuardDuty 管理员账户将频率更新为一小时,则所有成员账户的后续查找事件的通知频率也将为一小时。 EventBridge有关更多信息,请参阅 Amazon 中的多个账户 GuardDuty

作为管理员账户,您可以自定义有关后续调查发现事件通知的默认频率。可能的值为 15 分钟、1 小时或 6 小时(默认值)。有关设置通知频率的信息,请参阅 第 5 步 – 设置导出更新后活动调查发现的频率

有关管理员账户接收成员账户 EventBridge 通知的更多详细信息,请参阅EventBridge 多账户环境规则

设置 Amazon SNS 主题和端点(电子邮件、Slack 和 Amazon Chime)

Amazon Simple Notification Service(Amazon SNS)是一项完全托管式服务,提供从发布者至订阅用户的消息传输。发布者通过将消息发送至主题实现与订阅用户的异步交流。主题是一种逻辑接入点和通信渠道,允许您对多个终端节点进行分组 Amazon Lambda,例如亚马逊简单队列服务 (Amazon SQS)、HTTP/S 和电子邮件地址。

注意

在首选事件规则创建期间或之后,您可以将 Amazon SNS 主题添加到首选 EventBridge 事件规则中。

创建 Amazon SNS 主题

首先,您必须在 Amazon SNS 中设置一个主题并添加一个端点。要创建主题,请按照《Amazon Simple Notification Service Developer Guide》中的 Step 1: Creating a topic 的步骤进行操作。创建主题后,将主题 ARN 复制到剪贴板。后续会需要使用此主题 ARN 继续进行首选设置之一。

选择一种首选方法来确定要将 GuardDuty 查找数据发送到何处。

Email setup

设置电子邮件端点

Create an Amazon SNS topic 之后,下一步是创建对此主题的订阅。请按照《Amazon Simple Notification Service Developer Guide》中的 Step 2: Creating a subscription to an Amazon SNS topic 的步骤进行操作。

  1. 对于主题 ARN,请使用在 Create an Amazon SNS topic 步骤中创建的主题 ARN。主题 ARM 类似于以下内容:

    arn:aws:sns:us-east-2:123456789012:your_topic
  2. 对于协议,请选择电子邮件

  3. 对于端点,输入您要从 Amazon SNS 接收通知的电子邮件地址。

    创建订阅后,您需要通过电子邮件客户端确认订阅。

Slack setup

在聊天应用程序客户端 Slack 中配置 Amazon Q 开发者版

Create an Amazon SNS topic 之后,下一步是配置 Slack 客户端。

有关任何其他详细信息,请参阅《Amazon Q Developer in chat applications Administrator Guide》中的 Tutorial: Get started with Slack

Chime setup

在聊天应用程序客户端 Chime 中配置 Amazon Q 开发者版

Create an Amazon SNS topic 之后,下一步是为 Chime 配置 Amazon Q Developer。

有关任何其他详细信息,请参阅《Amazon Q Developer in chat applications Administrator Guide》中的 Tutorial: Get started with Amazon Chime

使用 Amazon EventBridge 获取 GuardDuty调查结果

使用 EventBridge,您可以创建规则来指定要监视的事件。这些规则还可以指定在这些事件发生时可以执行自动操作的目标服务和应用程序。目标是一个目的地(资源或终端节点),当事件与规则中定义的事件模式匹配时,它会将事件 EventBridge 发送到该目的地。每个事件都是一个 JSON 对象,它符合 Amazon 事件 EventBridge 架构,并包含发现的 JSON 表示形式。您可以调整规则,使其仅发送那些符合特定条件的事件。有关更多信息,请参阅 [JSON 架构主题]。由于调查结果数据是按EventBridge事件结构化的,因此您可以使用其他应用程序、服务和工具来监控、处理和处理调查结果。

要接收有关基于事件的 GuardDuty 发现的通知,您必须为创建 EventBridge 规则和目标 GuardDuty。通过此规则 EventBridge ,可以将 GuardDuty 生成的结果通知发送到规则中指定的目标。

注意

EventBridge 和 CloudWatch 事件是相同的底层服务和 API。但是, EventBridge 包括其他功能,可帮助您接收来自软件即服务 (SaaS) 应用程序和您自己的应用程序的事件。由于底层服务和 API 相同,因此 GuardDuty 查找结果的事件架构也相同。

存档和未存档的调查结果如何与之配合 GuardDuty 使用 EventBridge

对于手动存档的调查结果,将 EventBridge 根据特定的通知频率将这些发现的初次和所有后续出现的结果(存档完成后生成)发送到。有关更多信息,请参阅 了解中的 EventBridge 通知频率 GuardDuty

对于自动存档的调查结果抑制规则,这些发现的初次和所有后续出现的结果(存档完成后生成)都不会发送到。 EventBridge您可以在 GuardDuty 控制台中查看这些自动存档的调查结果。

事件架构

事件模式定义了用于确定是否将事件发送到目标的数据 EventBridge 。 EventBridge的事件 GuardDuty 采用以下格式:

{ "version": "0", "id": "cd2d702e-ab31-411b-9344-793ce56b1bc7", "detail-type": "GuardDuty Finding", "source": "aws.guardduty", "account": "111122223333", "time": "1970-01-01T00:00:00Z", "region": "us-east-1", "resources": [], "detail": {GUARDDUTY_FINDING_JSON_OBJECT} }

detail 值将单个调查发现的 JSON 详细信息作为对象返回,而不是返回整个 findings 响应语法,响应语法支持一个数组包含多个调查发现。

有关中包含的所有参数的完整列表GUARDDUTY_FINDING_JSON_OBJECT,请参见GetFindings。在 GUARDDUTY_FINDING_JSON_OBJECT 中显示的 id 参数是之前介绍的调查发现 ID。

为 GuardDuty 调查结果创建 EventBridge 规则

以下过程说明了如何使用 Amazon EventBridge 控制台和 Amazon Command Line Interface (Amazon CLI) 为 GuardDuty 调查结果创建 EventBridge 规则。该规则检测使用 EventBridge事件架构和模式进行 GuardDuty 发现的事件,并将这些事件发送到 Amazon Lambda 函数进行处理。

Amazon Lambda 是一项计算服务,无需预置或管理服务器即可使用它来运行代码。您可以打包您的代码并将其 Amazon Lambda 作为 Lambda 函数上传到。 Amazon Lambda 然后在函数被调用时运行该函数。您可以手动调用函数,自动调用函数以响应事件,或者响应来自应用程序或服务的请求。有关创建和调用 Lambda 函数的信息,请参阅《Amazon Lambda 开发人员指南》

选择您的首选方法来创建将您的 GuardDuty发现发送到目标的 EventBridge 规则。

Console

按照以下步骤使用 Amazon EventBridge 控制台创建规则,自动将所有 GuardDuty 查找事件发送到 Lambda 函数进行处理。该规则对收到特定事件时运行的规则使用默认设置。有关规则设置的详细信息或要了解如何创建使用自定义设置的规则,请参阅 Amazon EventBridge 用户指南中的创建对事件做出反应的规则。

在创建规则之前,请创建您希望该规则用作目标的 Lambda 函数。创建规则时,需要将此函数指定为规则的目标。目标也可以是您之前创建的 SNS 主题。有关更多信息,请参阅 设置 Amazon SNS 主题和端点(电子邮件、Slack 和 Amazon Chime)

使用控制台创建事件规则
  1. 登录 Amazon Web Services 管理控制台 并打开 Amazon EventBridge 控制台,网址为https://console.aws.amazon.com/events/

  2. 在导航窗格中的总线下,选择规则

  3. 规则部分中,选择创建规则

  4. 定义规则详细信息页面上,执行以下操作:

    1. 对于名称,输入规则的名称。

    2. (可选)对于描述,输入规则的简要描述。

    3. 对于事件总线,请确保选择默认值,以及在选定的事件总线上启用该规则已开启。

    4. 对于规则类型,选择具有事件模式的规则

    5. 完成后,选择 Next (下一步)

  5. 构建事件模式页面上,执行以下操作:

    1. 对于事件来源,选择Amazon 事件或 EventBridge 合作伙伴事件

    2. (可选)对于示例事件,请查看的示例查找事件 GuardDuty 以了解事件可能包含的内容。为此,请选择 Amazon 事件。然后,对于示例事件,选择GuardDuty查找

    3. 选项 1-使用模式表单,即 EventBridge 提供以下内容的模板

      事件模式部分中,执行以下操作:

      1. 对于创建方法,选择使用模式表单

      2. 对于事件源,选择 Amazon Web Services 服务

      3. 对于 Amazon Web Services 服务,选择 GuardDuty

      4. 对于事件类型,选择GuardDuty 查找

      完成后,选择 Next (下一步)

    4. 选项 2:使用 JSON 格式的自定义事件模式

      事件模式部分中,执行以下操作:

      1. 对于创建方法,选择自定义模式(JSON 编辑器)

      2. 对于事件模式,粘贴以下自定义 JSON,该自定义 JSON 将针对中、高和重大严重程度的调查发现创建警报。有关更多信息,请参阅 调查发现的严重性级别

        { "source": [ "aws.guardduty" ], "detail-type": [ "GuardDuty Finding" ], "detail": { "severity": [ 4, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6, 6.0, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 6.9, 7, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9, 8, 8.0, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, 8.8, 8.9, 9, 9.0, 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10, 10.0 ] } }

      完成后,选择 Next (下一步)

  6. 选项 A-选择 Amazon Web Services 服务 - Amazon Lambda 作为目标

    选择目标页面上,执行以下操作:

    1. 对于目标类型,选择 Amazon Web Services 服务

    2. 对于 Select a target(选择目标),选择 Lambda function(Lambda 函数)。然后,对于函数,选择您要将调查发现发送到的 Lambda 函数。

    3. 对于配置版本/别名,输入目标 Lambda 函数的版本或别名设置。

    4. (可选)对于其他设置,输入自定义设置以指定要向 Lambda 函数发送哪些事件数据。您还可以指定如何处理未成功传递到函数的事件。

    5. 完成后,选择 Next (下一步)

  7. 选项 B:选择 SNS 主题作为目标

    选择目标页面上,执行以下操作:

    1. 对于目标类型,选择 Amazon Web Services 服务

    2. 对于 Select a target(选择一个目标),选择 SNS topic(SNS 主题)。然后,对于目标位置,根据您的目标位置选择合适的选项。对于主题,选择您创建的 SNS 主题名称。

    3. 展开其他设置。对于配置目标输入,选择输入转换器

    4. 选择 Configure input transformer(配置输入转换器)。

    5. 复制以下代码并粘贴到目标输入转换器部分的输入路径字段中。

      { "severity": "$.detail.severity", "Account_ID": "$.detail.accountId", "Finding_ID": "$.detail.id", "Finding_Type": "$.detail.type", "region": "$.region", "Finding_description": "$.detail.description" }
    6. 复制以下代码并粘贴到模板字段中,以便格式化电子邮件。

      "You have a severity <severity> GuardDuty finding type <Finding_Type> in the <region> Region." "Finding Description:" "<Finding_description>. " "For more details open the GuardDuty console at https://console.aws.amazon.com/guardduty/home?region=<region>#/findings?search=id%3D<Finding_ID>"
  8. 配置标签页面上,可以选择输入要分配给规则的一个或多个标签。然后选择下一步

  9. 查看并创建页面上,查看规则的设置并验证它们是否正确。

    要更改设置,选择包含该设置的部分中的编辑,然后输入正确的设置。您也可以使用导航选项卡转到包含设置的页面。

  10. 在输入完验证设置后,请选择创建规则

API

以下过程说明如何使用 Amazon CLI 命令为其创建 EventBridge 规则和目标 GuardDuty。具体而言,该过程向您展示了如何创建规则,该规则 EventBridge 允许将 GuardDuty 生成的所有结果的事件发送给作为规则目标的 Amazon Lambda 函数。

注意

在此示例中,我们使用 Lambda 函数作为触发规则的目标。 EventBridge您也可以将其他 Amazon 资源配置为要触发的目标 EventBridge。 GuardDuty 并 EventBridge 支持以下目标类型:亚马逊 EC2 实例、Amazon Kinesis 流、亚马逊 ECS 任务、 Amazon Step Functions 状态机、run命令和内置目标。有关更多信息,请参阅 Amazon EventBridge API 参考PutTargets中的。

创建规则和目标
  1. 要创建允许为 GuardDuty生成的所有发现发送事件的规则,请运行 EventBridge 以下 EventBridge CLI 命令。

    aws events put-rule --name your-rule-name --event-pattern "{\"source\":[\"aws.guardduty\"]}"

    您可以进一步自定义规则, EventBridge 使其指示仅针对 GuardDuty生成的结果的子集发送事件。该子集基于规则中指定的一个或多个调查发现属性。例如,使用以下 CLI 命令创建一条规则, EventBridge 允许仅针对严重性为 5 或 8 的 GuardDuty 发现发送事件:

    aws events put-rule --name your-rule-name --event-pattern "{\"source\":[\"aws.guardduty\"],\"detail-type\":[\"GuardDuty Finding\"],\"detail\":{\"severity\":[5,8]}}"

    为此,您可以使用 JSON 中可用的任何属性值来查找 GuardDuty 结果。

  2. 要附加 Lambda 函数作为您在步骤 1 中创建的规则的目标,请运行以下 CL CloudWatch I 命令。

    aws events put-targets --rule your-target-name --targets Id=1,Arn=arn:aws:lambda:us-east-1:111122223333:function:your_function

    请务必将上述命令your-target-name中的事件替换为实际的 Lambda 函数。 GuardDuty

  3. 要添加调用目标所需的权限,请运行以下 Lambda CLI 命令。

    aws lambda add-permission --function-name your-target-name --statement-id 1 --action 'lambda:InvokeFunction' --principal events.amazonaws.com

    请务必将上述命令your_function中的事件替换为实际的 Lambda 函数。 GuardDuty

EventBridge GuardDuty 多账户环境规则

使用委派 GuardDuty 管理员账户时,您可以查看成员账户中生成的事件并使用其他应用程序和服务进行操作。 EventBridge 您的管理员账户中的规则将根据您的成员账户的适用结果触发。如果您在管理员帐户 EventBridge 中设置了查找通知,则您的账户和成员账户都将收到有关查找结果的通知。例如,您可以使用将特定类型的发现发送 EventBridge 到 Lambda 函数,该函数处理数据并将其发送到您的安全事件和事件管理 (SIEM) 系统。

您可以使用 GuardDuty 查找结果的 JSON 详细信息accountId字段来识别发现结果的成员账户。要为特定成员账户创建自定义事件规则,请创建新规则并在事件模式中使用以下模板。123456789012替换为您要触发事件的成员账号。accountId

{ "source": [ "aws.guardduty" ], "detail-type": [ "GuardDuty Finding" ], "detail": { "accountId": [ "123456789012" ] } }
注意

此示例创建的规则与来自指定账户 ID 的所有调查发现相匹配。您可以 IDs 按照 JSON 语法使用逗号分隔多个账户。