Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
与亚马逊一起处理 GuardDuty 调查结果 EventBridge
GuardDuty 自动将调查结果作为事件发布(发送)到亚马逊 EventBridge (前身为 Amazon Ev CloudWatch ents),这是一种无服务器事件总线服务。 EventBridge 向亚马逊简单通知服务 (Amazon SNS) 主题、 Amazon Lambda 函数和亚马逊 Kinesis 流等目标提供近乎实时的数据流。有关更多信息,请参阅亚马逊 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有关更多信息,请参阅 亚马逊的多个账户 GuardDuty。
作为管理员账户,您可以自定义有关后续调查发现事件通知的默认频率。可能的值为 15 分钟、1 小时或 6 小时(默认值)。有关设置通知频率的信息,请参阅 第 5 步 – 设置导出更新后活动调查发现的频率。
有关管理员账户接收成员账户 EventBridge 通知的更多详细信息,请参阅EventBridge 多账户环境规则。
设置 Amazon SNS 主题和端点(电子邮件、Slack 和 Amazon Chime)
Amazon Simple Notification Service(Amazon SNS)是一项完全托管式服务,提供从发布者至订阅用户的消息传输。发布者通过将消息发送至主题实现与订阅用户的异步交流。主题是一个逻辑接入点和通信渠道,允许您对多个终端节点(例如 Amazon Lambda亚马逊简单队列服务 (Amazon SQS) 和电子邮件地址)进行分组。 HTTP/S
在规则创建期间或之后,您可以在首选 EventBridge 事件规则中添加 Amazon SNS 主题。
- 创建 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 的步骤进行操作。
-
对于主题 ARN,请使用在 Create an Amazon SNS topic 步骤中创建的主题 ARN。主题 ARM 类似于以下内容:
arn:aws:sns:us-east-2:123456789012:your_topic
-
对于协议,请选择电子邮件。
-
对于端点,输入您要从 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。
使用亚马逊 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 规则
以下过程说明如何使用亚马逊 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
-
按照以下步骤使用亚马逊 EventBridge 控制台创建规则,将所有 GuardDuty 查找事件自动发送到 Lambda 函数进行处理。该规则对收到特定事件时运行的规则使用默认设置。有关规则设置的详细信息或要了解如何创建使用自定义设置的规则,请参阅亚马逊 EventBridge 用户指南中的创建对事件做出反应的规则。
在创建规则之前,请创建您希望该规则用作目标的 Lambda 函数。创建规则时,需要将此函数指定为规则的目标。目标也可以是您之前创建的 SNS 主题。有关更多信息,请参阅 设置 Amazon SNS 主题和端点(电子邮件、Slack 和 Amazon Chime)。
使用控制台创建事件规则
登录 Amazon Web Services 管理控制台 并打开亚马逊 EventBridge 控制台,网址为https://console.aws.amazon.com/events/。
-
在导航窗格中的总线下,选择规则。
-
在规则部分中,选择创建规则。
-
在定义规则详细信息页面上,执行以下操作:
-
对于名称,输入规则的名称。
-
(可选)对于描述,输入规则的简要描述。
-
对于事件总线,请确保选择默认值,以及在选定的事件总线上启用该规则已开启。
-
对于规则类型,选择具有事件模式的规则。
-
完成后,选择 Next (下一步)。
-
在构建事件模式页面上,执行以下操作:
-
对于事件来源,选择Amazon 活动或 EventBridge 合作伙伴事件。
-
(可选)对于示例事件,查看示例查找事件 GuardDuty 以了解该事件可能包含的内容。为此,请选择 Amazon
事件。然后,对于示例事件,选择GuardDuty查找。
选项 1-使用模式表单,该模板 EventBridge 提供
在事件模式部分中,执行以下操作:
-
对于创建方法,选择使用模式表单。
-
对于事件源,选择 Amazon Web Services 服务。
-
对于 Amazon Web Services 服务,选择 GuardDuty。
-
对于 “事件类型”,选择 “GuardDuty 查找” 。
完成后,选择 Next (下一步)。
选项 2:使用 JSON 格式的自定义事件模式
在事件模式部分中,执行以下操作:
-
对于创建方法,选择自定义模式(JSON 编辑器)。
-
对于事件模式,粘贴以下自定义 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 (下一步)。
选项 A-选择 Amazon Web Services 服务 - Amazon Lambda 作为目标
在选择目标页面上,执行以下操作:
-
对于目标类型,选择 Amazon Web Services 服务。
-
对于 Select a target(选择目标),选择 Lambda function(Lambda 函数)。然后,对于函数,选择您要将调查发现发送到的 Lambda 函数。
-
对于配置 version/alias,输入目标 Lambda 函数的版本或别名设置。
-
(可选)对于其他设置,输入自定义设置以指定要向 Lambda 函数发送哪些事件数据。您还可以指定如何处理未成功传递到函数的事件。
-
完成后,选择 Next (下一步)。
选项 B:选择 SNS 主题作为目标
在选择目标页面上,执行以下操作:
-
对于目标类型,选择 Amazon Web Services 服务。
-
对于 Select a target(选择一个目标),选择 SNS topic(SNS 主题)。然后,对于目标位置,根据您的目标位置选择合适的选项。对于主题,选择您创建的 SNS 主题名称。
-
展开其他设置。对于配置目标输入,选择输入转换器。
-
选择 Configure input transformer(配置输入转换器)。
-
复制以下代码并粘贴到目标输入转换器部分的输入路径字段中。
{
"severity": "$.detail.severity",
"Account_ID": "$.detail.accountId",
"Finding_ID": "$.detail.id",
"Finding_Type": "$.detail.type",
"region": "$.region",
"Finding_Description": "$.detail.description"
}
-
复制以下代码并粘贴到模板字段中,以便格式化电子邮件。
{"message":"You have a severity <severity> GuardDuty finding type <Finding_Type> in the <region> Region.\n\nFinding Description:\n<Finding_Description>.\n\nFor more details open the GuardDuty console at https://console.aws.amazon.com/guardduty/home?region=<region>#/findings?search=id%3D<Finding_ID>"}
将模板作为单行 JSON 对象提供,将消息封装在密钥中message,如前面的示例所示,并用于\n添加换行符。 GuardDuty 查找诸如description可以包含未转义的控制字符(包括换行符)之类的字段。如果您以裸引号字符串形式提供模板,或者将此类字段放入多行模板(在不同的行中使用单独的引号字符串的模板),则替换值会生成无效的 JSON,从而 EventBridge 导致拒绝事件并无法传送通知。
-
在配置标签页面上,可以选择输入要分配给规则的一个或多个标签。然后选择下一步。
-
在查看并创建页面上,查看规则的设置并验证它们是否正确。
要更改设置,选择包含该设置的部分中的编辑,然后输入正确的设置。您也可以使用导航选项卡转到包含设置的页面。
-
在输入完验证设置后,请选择创建规则。
- API
-
以下过程显示如何使用 Amazon CLI 命令为创建 EventBridge 规则和目标 GuardDuty。具体而言,该过程向您展示如何创建规则,该规则 EventBridge 允许将 GuardDuty 生成的所有发现的事件发送到作为规则目标的 Amazon Lambda
函数。
在此示例中,我们使用 Lambda 函数作为触发 EventBridge规则的目标。您也可以将其他 Amazon 资源配置为要触发的目标 EventBridge。 GuardDuty 并 EventBridge 支持以下目标类型——亚马逊 EC2 实例、亚马逊 Kinesis 流、亚马逊 ECS 任务、 Amazon Step Functions 状态机、run命令和内置目标。有关更多信息,请参阅亚马逊 EventBridge API 参考PutTargets中的内容。
创建规则和目标
-
要创建允许为 GuardDuty生成的所有发现发送事件的规则,请运行 EventBridge 以下 EventBridge CLI 命令。
aws events put-rule --name your-rule-name --event-pattern "{\"source\":[\"aws.guardduty\"]}"
您可以进一步自定义规则, EventBridge 使其指示仅针对部分发现发送事件。 GuardDuty-generated 该子集基于规则中指定的一个或多个调查发现属性。例如,使用以下 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 查找结果。
-
要将 Lambda 函数作为您在步骤 1 中创建的规则的目标,请运行以下 CloudWatch CLI 命令。
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中的 GuardDuty 事件替换为您的实际 Lambda 函数。
-
要添加调用目标所需的权限,请运行以下 Lambda CLI 命令。
aws lambda add-permission --function-name your-target-name --statement-id 1 --action 'lambda:InvokeFunction' --principal events.amazonaws.com
请务必将上述命令your_function中的 GuardDuty 事件替换为您的实际 Lambda 函数。
EventBridge GuardDuty 多账户环境规则
使用委派 GuardDuty 管理员帐户时,您可以查看成员账户中生成的事件并使用其他应用程序和服务采取操作。 EventBridge 您的管理员帐户中的规则将根据您的成员帐户的适用发现触发。如果您在管理员账户 EventBridge 中设置了查找通知,则会收到来自您的账户和成员账户的发现通知。例如,您可以使用将特定类型的调查结果发送 EventBridge 到 Lambda 函数,该函数处理数据并将其发送到您的安全事件和事件管理 (SIEM) 系统。
您可以使用调查结果的 JSON 详细信息accountId字段识别 GuardDuty 发现起源的成员账户。要为特定成员账户创建自定义事件规则,请创建新规则并在事件模式中使用以下模板。123456789012替换为要触发事件的成员账户的。accountId
{
"source": [
"aws.guardduty"
],
"detail-type": [
"GuardDuty Finding"
],
"detail": {
"accountId": [
"123456789012"
]
}
}
此示例创建的规则与来自指定账户 ID 的所有调查发现相匹配。您可以包含多个账户,具体方法是按照 JSON 语法,使用逗号分隔多个账户 ID。