使用 Amazon Ev CloudWatch ents 创建对GuardDuty调查结果的自定义 - Amazon GuardDuty
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Amazon Ev CloudWatch ents 创建对GuardDuty调查结果的自定义

GuardDuty当发现发生任何变化时,为亚马逊CloudWatch活动创建一个活动。查找将创建 CloudWatch 事件的更改,包括新生成的调查结果或新聚合的调查结果。尽最大努力发出事件。

向每个 GuardDuty 结果分配一个结果 ID。GuardDuty使用唯一的查找结果 ID 为每个查找结果创建CloudWatch事件。现有调查结果的所有后续实例都会聚合到原始调查结果中。有关更多信息,请参阅GuardDuty查找聚合

注意

如果您的账户是GuardDuty委托管理员,则CloudWatch事件将发布到您的账户以及生成调查结果的成员账户。

通过将CloudWatch事件与配合使用GuardDuty,您可以自动执行任务,以帮助您应对GuardDuty调查结果揭示的安全问题。

要接收有关基于CloudWatch事件的GuardDuty发现的通知,必须为创建CloudWatch事件规则和目标GuardDuty。此规则CloudWatch允许将GuardDuty生成的发现结果的通知发送到规则中指定的目标。有关更多信息,请参阅为 GuardDuty (CLI) 创建CloudWatch事件规则和目标

CloudWatch的事件通知频率 GuardDuty

使用唯一的调查结果 ID 发送新生成的调查结果的通知

GuardDuty在发现后 5 分钟内根据其CloudWatch事件发送通知。此事件 (和此通知) 还包括在生成带唯一 ID 的此结果后前 5 分钟内发生的此结果的所有后续匹配项。

注意

默认情况下,有关新生成的调查结果的通知频率为 5 分钟。无法更新此频率,无法更新频率。

后续发现事件的通知

默认情况下,对于每个具有唯一查找结果 ID 的查找结果,GuardDuty会将在 6 小时间隔内发生的特定查找类型的所有后续事件汇总为一个事件。GuardDuty然后根据此事件发送有关这些后续事件的通知。默认情况下,对于后续出现的现有发现结果,每隔 6 小时GuardDuty发送一次基于CloudWatch事件的通知。

只有管理员帐户可以自定义发送有关后续结果匹配项的通知的默认频率,只有管理员帐户可以自定义发送通知的默认频率,只有管理员帐户可以自定义发送有关后续匹配项的通知的CloudWatch默认频 来自成员账户的用户无法自定义此频率。管理员帐户在其自己的帐户中设置的频率值将强加于其所有成员帐户的GuardDuty功能。如果来自管理员帐户的用户将此频率值设置为 1 小时,则所有成员帐户也将有 1 小时的频率接收有关后续发现事件的通知。有关更多信息,请参阅在亚马逊管理多个账户 GuardDuty Amazon与... 的服务集成 GuardDuty

注意

作为管理员,可以自定义有关后续结果匹配项的默认通知频率,可以自定义通知的默认频率,可以自定义通知的默认频率,可以自定义通知的默认频率,可能的值为 15 分钟、1 小时或 6 小时(默认值)。有关设置通知频率的信息,请参阅。有关设置这些通知频率的信息,请参阅设置导出更新的活动发现的频率

使用CloudWatch事件监控存档的GuardDuty调查结果

对于手动存档的查找结果,这些发现的初次和所有后续事件(存档完成后生成)将按上述频率发送到CloudWatch事件。

对于自动存档的查找结果,这些发现的初次和所有后续事件(存档完成后生成)不会发送到 Events。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} }
注意

详细值将单个查找结果的 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 主题和终端节点

首先,您必须先在 Amazon 简单通知服务中设置一个主题并添加一个终端节点。有关更多信息,请参阅 S NS 指南

此过程可确定要将GuardDuty搜索数据发送到何处。在CloudWatch事件规则创建期间或之后,可以将 SNS 主题添加到事件事件规则中。

Email setup
创建 SNS 主题
  1. 通过以下址登录 Amazon SNS S S S NS S S https://console.aws.amazon.com/sns/v3/home

  2. 从导航窗格中选择 Topics (主题),然后选择 Create Topic (创建主题)

  3. 在创建主题部分中,选择标准。接下来,输入主题名称,例如GuardDuty_to_Email。其他详细信息是可选的。

  4. 选择 Create Topic。此时系统会打开新主题的主题详细信息。

  5. 在“Subscriptions (订阅)”部分中,选择 Create Subscription (创建订阅)

    1. Protocol (协议) 菜单中,选择 Email (电子邮件)

    2. Endpoint (终端节点) 字段中,添加您想要用于接收通知的电子邮件地址。

      注意

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

    3. 选择创建订阅

  6. 在收件箱中查收订阅消息,然后选择 Confirm Subscription (确认订阅)

Slack setup
创建 SNS 主题
  1. 通过以下址登录 Amazon SNS S S S NS S S https://console.aws.amazon.com/sns/v3/home

  2. 从导航窗格中选择 Topics (主题),然后选择 Create Topic (创建主题)

  3. 在创建主题部分中,选择标准。接下来,输入主题名称,例如GuardDuty_to_Slack。其他详细信息是可选的。选择 “创建主题” 以完成操作。

配置Amazon Chatbot客户端
  1. 导航到控制Amazon Chatbot台

  2. 从 “已配置的客户端” 面板中,选择 “配置新客户端”。

  3. 选择 Slack 并单击 “配置” 进行确认。

    注意

    选择 Slack 时,您必须通过选择 “允许” Amazon Chatbot 来确认访问您的频道的权限。

  4. 选择 “配置新频道” 以打开配置详细信息窗格。

    1. 输入通道名称。输入通道名称。

    2. 对于 Slack 通道,选择要使用的通道,选择要使用的通道,选择要使用的通道,选择要 要使用私人 Slack 频道Amazon Chatbot,请选择私人频道。

    3. 在 Slack 中,右键单击频道名称并选择 “复制链接”,复制私人频道的频道 ID。

    4. 在Amazon管理控制台的Amazon Chatbot窗口中,将您从 slack 复制的 ID 粘贴到私有频道 ID 字段中。

    5. 权限中,如果您还没有角色,请选择使用模板创建 IAM 角色。

    6. 对于策略模板,选择通知权限。这是的 IAM 策略模板Amazon Chatbot。它为CloudWatch警报、事件和日志以及 Amazon SNS 主题提供必要的读取和列出权限。

    7. 选择您之前在其中创建 SNS 主题的区域,然后选择您创建的 Amazon SNS 主题以向 Slack 频道发送通知。

  5. 选择 Configure (配置)

Chime setup
创建 SNS 主题
  1. 通过以下址登录 Amazon SNS S S S NS S S https://console.aws.amazon.com/sns/v3/home

  2. 从导航窗格中选择 Topics (主题),然后选择 Create Topic (创建主题)

  3. 在创建主题部分中,选择标准。接下来,输入主题名称,例如GuardDuty_to_Chime。其他详细信息是可选的。选择 “创建主题” 以完成操作。

配置Amazon Chatbot客户端
  1. 导航到控制Amazon Chatbot台

  2. 从 “已配置的客户端” 面板中,选择 “配置新客户端”。

  3. 选择 Chime 并单击 “配置” 进行确认。

  4. 配置详细信息窗格中,输入通道名称,输入通道名称,输入通道名称。

  5. 在 Chime 中打开所需的聊天室

    1. 选择右上角的齿轮图标,然后选择 Manage webhooks and bots (管理 Webhook 和自动程序)

    2. 选择 “复制 URL” 将 webhook 网址复制到剪贴板。

  6. 在Amazon管理控制台的Amazon Chatbot窗口中,将您复制的 URL 粘贴到 Webhook URL 字段中。

  7. 权限中,如果您还没有角色,请选择使用模板创建 IAM 角色。

  8. 对于策略模板,选择通知权限。这是的 IAM 策略模板Amazon Chatbot。它为CloudWatch警报、事件和日志以及 Amazon SNS 主题提供必要的读取和列出权限。

  9. 选择您之前在其中创建 SNS 主题的区域,然后选择您创建的 Amazon SNS 主题以向 Chime 聊天室发送通知。

  10. 选择 Configure (配置)

为GuardDuty调查结果设置CloudWatch活动

  1. 打开 CloudWatch 控制台 (https://console.aws.amazon.com/cloudwatch/)。

  2. 从导航窗格中选择 Rules (规则),然后选择 Create Rule (创建规则)

  3. 从 “服务名称” 菜单中选择GuardDuty

  4. 从 “事件类型” 菜单中选择 “GuardDuty查找”。

  5. Event Pattern Preview (事件模式预览) 中,选择 Edit (编辑)

  6. 将下面的 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 ] } }
    注意

    上面的代码将对任何中到高严重性调查结果发出提醒。

  7. Targets (目标) 部分,单击 Add Target (添加目标)

  8. Select Targets (选择目标) 菜单中,选择 SNS Topic (SNS 主题)

  9. 对于 Select Topic (选择主题),请选择您在步骤 1 中创建的 SNS 主题的名称。

  10. 配置事件的输入。

    • 如果您正在为 Chime 或 Slack 设置通知,请跳至步骤 11,则输入类型默认为 “匹配事件”。

    • 如果您要通过 SNS 设置电子邮件通知,请按照以下步骤使用以下步骤自定义发送到收件箱的消息:

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

    2. 复制以下代码并将其粘贴到 Input Path (输入路径) 字段中。

      { "severity": "$.detail.severity", "Account_ID": "$.detail.accountId", "Finding_ID": "$.detail.id", "Finding_Type": "$.detail.type", "region": "$.region", "Finding_description": "$.detail.description" }
    3. 复制以下代码并将其粘贴到 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>"
  11. 单击 Configure Details (配置详细信息)

  12. 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状态机、命令和内置目标:Amazon ECS 任务、run命令和内置目标:Amazon EC

您也可以GuardDuty通过CloudWatch事件控制台为其创建CloudWatch事件规则和目标。有关更多信息和详细步骤,请参阅创建对事件进行触发的事件规则,请参阅创建对CloudWatch事件进行触发的事件规则,请参阅创建对事件进行触发的事件 在 “事件源” 部分,选择 “GuardDuty服务名称” 和 GuardDuty Finding事件类型”。

创建规则和目标
  1. 要创建允许 CloudWatch 为 GuardDuty 生成的所有调查结果发送事件的规则,请运行以下 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]}}"

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

  2. 要将 Lambda 函数连接为您在步骤 1 中创建规则的目标,请运行以下 CLI 命令,请运行以下 CLI 命令,以下 CLI 命令,以下 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 函数。

  3. 要添加调用目标所需的权限,请运行以下 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

CloudWatchGuardDuty多账户环境的事件

作为GuardDuty管理员,您的账户中的CloudWatch活动规则将根据您的成员账户的适用发现触发。这意味着,如果您通过管理员帐户中的CloudWatch事件设置查找通知(如上一节所述),则除了您自己的帐户外,还将收到由您的成员账户生成的高度和中等严重性调查结果的通知。

您可以使用GuardDuty调查结果的 JSON 详细信息accountId字段来识别发现结果来源的成员账户。

要开始在控制台中为环境中的特定成员账户编写自定义事件规则,请创建新规则并将以下模板粘贴到事件模式预览中,添加要触发事件的成员账户的账户 ID。

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

此示例将在发现列出的账户 ID 时触发。可以添加多个 ID,按照 JSON 语法用逗号分隔。