本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon Ev CloudWatch ents 创建针对 GuardDuty 调查结果的自定义响应
GuardDuty 当调查结果发生任何变化时,会为 Amazon Events 创建一个 CloudWatch 事件。查找将创建 CloudWatch 事件的变更包括新生成的发现或新聚合的调查结果。尽最大努力发出事件。
为每个 GuardDuty 发现分配一个调查结果 ID。 GuardDuty 使用唯一的查找 ID 为每个搜索结果创建一个 CloudWatch 事件。现有调查结果的所有后续实例都会聚合到原始调查结果中。
如果您的账户是 GuardDuty 委托管理员,则除了发布 CloudWatch 活动源自的成员账户外,事件还会发布到您的账户。
通过将 CloudWatch 事件与结合使用 GuardDuty,您可以自动执行任务,以帮助您响应 GuardDuty 调查结果揭示的安全问题。
要接收有关基于 CloudWatch 事件的 GuardDuty 发现的通知,必须为创建 CloudWatch 事件规则和目标 GuardDuty。此规则 CloudWatch 允许将 GuardDuty 生成的发现结果的通知发送到规则中指定的目标。有关更多信息,请参阅 为 GuardDuty (CLI) 创建 CloudWatch 事件规则和目标。
主题
CloudWatch 的事件通知频率 GuardDuty
针对具有唯一查找结果 ID 的新生成的发现的通知-在发现结果后的 5 分钟内根据其 CloudWatch 事件 GuardDuty 发送通知。此事件 (和此通知) 还包括在生成带唯一 ID 的此结果后前 5 分钟内发生的此结果的所有后续匹配项。
您无法自定义发送有关新生成的发现的通知的默认频率(5 分钟)。
后续查找结果的通知 — 默认情况下,对于每个具有唯一查找 ID 的查找结果,将每隔 6 小时发生的特定发现结果的所有后续出现次数 GuardDuty 聚合为单个事件。 GuardDuty 然后根据此事件发送有关这些后续事件的通知。换句话说,默认情况下,对于现有发现的后续出现,每隔 6 小时 GuardDuty 发送一次基于 CloudWatch 事件的通知。
可以自定义发送有关后续结果匹配项的默认通知的频率。可能的值为 15 分钟、1 小时或 6 小时(默认值)。您可以使用CreateDetector或 UpdateDetectorAPI 操作更新此值。您也可以通过 GuardDuty 控制台更新此值——选择 “设置”,然后在 “查找导出选项” 下,从 “更新结果的频率” 下拉菜单中选择一个频率。
只有管理员帐户的用户可以自定义发送对 Ev CloudWatch ents 进行后续结果匹配项的默认通知的默认频率。来自成员账户的用户无法自定义此频率值。管理员账户在自己的账户中设置的频率值会强加于其所有成员账户的 GuardDuty功能。换句话说,如果管理员帐户中的用户将此频率值设置为 1 小时,则所有成员帐户也将以 1 小时的频率向 Events 发送有关后续发现 CloudWatch 事件的通知。有关更多信息,请参阅 在亚马逊管理多个账户 GuardDuty Amazon与服务集成 GuardDuty。
使用 CloudWatch 事件监控存档的 GuardDuty调查结果
对于手动存档的调查结果,这些发现的初始和所有后续实例(存档完成后生成)将按上述频率发送到 CloudWatch 事件。
对于自动存档的调查结果,这些发现的初始和所有后续实例(存档完成后生成)不会发送到 “ CloudWatch 事件”。
CloudWatch 的事件格式 GuardDuty
CloudWatch 的事件 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 详细信息作为对象返回,而不是返回 “发现” 值,后者可以支持一个数组中的多个发现。
有关在 GUARDDUTY_FINDING_JSON_OBJECT
中包括的所有参数的完整列表,请参阅 GetFindings。在 GUARDDUTY_FINDING_JSON_OBJECT
中显示的 id
参数是之前介绍的调查结果 ID。
创建 CloudWatch 事件规则以通知您 GuardDuty 发现的结果(控制台)
您可以使用 Ev CloudWatch ents GuardDuty with 来设置自动查找警报,方法是将 GuardDuty查找事件发送到消息中心,以帮助提高 GuardDuty 发现结果的可见性。本主题介绍如何通过设置 SNS 主题,然后将该主题连接到 CloudWatch 事件规则,向电子邮件、Slack 或 Amazon Chime 发送发现警报。
设置 Amazon SNS 主题和终端节点
首先,您必须先在亚马逊简单通知服务中设置一个主题,然后添加一个终端节点。有关更多信息,请参阅 SNS 指南。
此过程可确定要将 GuardDuty 结果数据发送到的。在创建 CloudWatch 事件规则期间或之后,可以将 SNS 主题添加到事件规则中。
为 GuardDuty调查结果设置 CloudWatch 活动
-
通过 https://console.aws.amazon.com/cloudwatch/
打开 CloudWatch 控制台。 -
从导航窗格中选择 Rules (规则),然后选择 Create Rule (创建规则)。
-
从 “服务名称” 菜单中选择GuardDuty。
-
从 “事件类型” 菜单中选择 “GuardDuty查找”。
-
在 Event Pattern Preview (事件模式预览) 中,选择 Edit (编辑)。
-
将下面的 JSON 代码粘贴到 Event Pattern Preview (事件模式预览) 中,然后选择 Save (保存)
{ "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 ] } }
注意 上面的代码将对任何中到高严重性调查结果发出提醒。
-
在 Targets (目标) 部分,单击 Add Target (添加目标)。
-
从 Select Targets (选择目标) 菜单中,选择 SNS Topic (SNS 主题)。
-
对于 Select Topic (选择主题),请选择您在步骤 1 中创建的 SNS 主题的名称。
-
配置事件的输入。
-
如果您要为 Chime 或 Slack 设置通知,请跳至步骤 11,则输入类型默认为 “匹配事件”。
-
如果您要通过 SNS 设置电子邮件通知,请按照以下步骤使用以下步骤自定义发送到收件箱的消息:
-
展开 Configure input (配置输入),然后选择 Input Transformer (输入转换器)。
-
复制以下代码并将其粘贴到 Input Path (输入路径) 字段中。
{ "severity": "$.detail.severity", "Account_ID": "$.detail.accountId", "Finding_ID": "$.detail.id", "Finding_Type": "$.detail.type", "region": "$.region", "Finding_description": "$.detail.description" }
-
复制以下代码并将其粘贴到 Input Template (输入模板) 字段中,以便格式化电子邮件。
"Amazon <Account_ID> has 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>"
-
-
单击 Configure Details (配置详细信息)。
-
在 Configure rule details (配置规则详细信息) 页面中,输入规则的 Name (名称) 和 Description (描述),然后选择 Create Rule (创建规则)。
为 GuardDuty (CLI) 创建 CloudWatch 事件规则和目标
以下过程显示如何使用Amazon CLI命令为创建 CloudWatch 事件规则和目标 GuardDuty。具体而言,该过程向您展示了如何创建规则,该规则允许 CloudWatch 为 GuardDuty 生成的所有发现发送事件,并将Amazon Lambda函数添加为规则的目标。
除了 Lambda 函数外 GuardDuty ,还 CloudWatch 支持以下目标类型:Amazon EC2 实例、Amazon Kinesis 流、Amazon ECS 任务、Amazon Step Functions状态机、run
命令和内置目标。
您也可以 GuardDuty 通过 CloudWatch 事件控制台为创建 CloudWatch 事件规则和目标。有关更多信息和详细步骤,请参阅创建对 CloudWatch 事件进行触发的事件规则。在 “事件源” 部分中,选择 “GuardDuty
服务名称” 和GuardDuty Finding
“事件类型”。
创建规则和目标
-
要创建允许为 GuardDuty生成的所有发现发送事件的规则,请运行 CloudWatch 以下 CloudWatch CLI 命令。
Amazon events put-rule --name Test --event-pattern "{\"source\":[\"aws.guardduty\"]}"
重要 您可以进一步自定义规则, CloudWatch 使其指示仅针对 GuardDuty生成的发现结果的子集发送事件。该子集基于规则中指定的一个或多个查找属性。例如,使用以下 CLI 命令创建规则,该规则 CloudWatch 允许仅针对严重性为 5 或 8 的 GuardDuty 发现发送事件:
Amazon events put-rule --name Test --event-pattern "{\"source\":[\"aws.guardduty\"],\"detail-type\":[\"GuardDuty Finding\"],\"detail\":{\"severity\":[5,8]}}"
为此,您可以使用 JSON 中可用的任何属性值进行 GuardDuty 发现。
-
要将 Lambda 函数作为您在步骤 1 中创建规则的目标,请运行以下 CloudWatch CLI 命令。
Amazon events put-targets --rule Test --targets Id=1,Arn=arn:aws:lambda:us-east-1:111122223333:function:<your_function>
注意 请务必将<your_function>上述命令中的 GuardDuty 事件替换为实际的 Lambda 函数。
-
要添加调用目标所需的权限,请运行以下 Lambda CLI 命令。
Amazon lambda add-permission --function-name <your_function> --statement-id 1 --action 'lambda:InvokeFunction' --principal events.amazonaws.com
注意 请务必将<your_function>上述命令中的 GuardDuty 事件替换为实际的 Lambda 函数。
注意 在上面的过程中,我们使用 Lambda 函数作为触发 CloudWatch 事件的规则的目标。您也可以将其他Amazon资源配置为触发 CloudWatch 事件的目标。有关更多信息,请参阅 PutTargets。
CloudWatch GuardDuty 多账户环境活动
作为 GuardDuty 管理员,您的账户中的 CloudWatch 事件规则将根据您的成员账户的相关发现触发。这意味着,如果您通过管理员帐户中的 CloudWatch 事件设置发现通知(如上一节所述),则除了您自己的成员账户生成的高严重性和中度严重性发现结果外,您还将收到通知。
您可以使用 GuardDuty 调查结果的 JSON 详细信息accountId
字段来识别发现结果的成员账户。
要开始在控制台中为环境中的特定成员账户编写自定义事件规则,请创建新规则并将以下模板粘贴到 Event Pattern Preview 中,添加要触发事件的成员账户的账户 ID。
{ "source": [ "aws.guardduty" ], "detail-type": [ "GuardDuty Finding" ], "detail": { "accountId": [ "
123456789012
" ] } }
此示例将在发现列出的账户 ID 时触发。可以添加多个 ID,在 JSON 语法后面用逗号分隔。