记录 Insights 事件 - Amazon CloudTrail
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

记录 Insights 事件

通过持续分析 CloudTrail 管理事件,Amazon CloudTrail Insights 可帮助 Amazon 用户识别和应对与 API 调用相关的异常活动和 API 错误率。CloudTrail Insights 可分析 API 调用量和 API 错误率的正常模式,又称为基准,当调用量或错误率超出正常模式范围时生成 Insights 事件。针对 write 管理 API 生成的 API 调用量的 Insights 事件,以及针对 readwrite 管理 API 生成的 API 错误率的 Insights 事件。

注意

要针对 API 调用量记录 Insights 事件,跟踪或事件数据存储必须记录 write 管理事件。要针对 API 错误率记录 Insights 事件,跟踪或事件数据存储必须记录 readwrite 管理事件。

CloudTrail Insights 分析在单个区域(而非全局)发生的管理事件。在其支持性管理事件的相同区域中生成 CloudTrail 见解事件。

将对 Insights 事件收取额外费用。如果您同时为跟踪和事件数据存储启用 Insights,则需要单独付费。有关更多信息,请参阅Amazon CloudTrail 定价

了解 Insights 事件传输情况

与 CloudTrail 捕获的其他类型的事件不同,仅在 CloudTrail 检测到账户的 API 使用情况的变化与账户的典型使用模式有显著差异时,才会记录 Insights 事件。

CloudTrail 传输事件的位置以及接收 Insights 事件所需的时间因跟踪和事件数据存储而异。

跟踪的 Insights 事件传输

如果已在跟踪上启用 Insights 事件并且 CloudTrail 检测到异常活动,CloudTrail 会将 Insights 事件传输到跟踪的所选目标 S3 存储桶中的 /CloudTrail-Insight 文件夹。首次对跟踪记录启用 CloudTrail 见解后,如果检测到异常活动,则 CloudTrail 供传递第一个见解事件可能需要长达 36 个小时。

如果您关闭跟踪上的 Insights 事件日志记录,然后重新启用 Insights 事件,或者停止并重新开始跟踪上的日志记录,则如果检测到异常活动,CloudTrail 可能需要最长 36 个小时才能重新启动 Insights 事件的传输。

事件数据存储的 Insights 事件传输

如果您在源事件数据存储上启用了 Insights 事件,CloudTrail 会将 Insights 事件传输到目标事件数据存储。首次对源事件数据存储启用 CloudTrail Insights 后,如果检测到异常活动,则 CloudTrail 将第一个 Insights 事件传输到目标事件数据存储最长可能需要 7 天。

如果您关闭源事件数据存储上的 Insights 事件日志记录,然后重新启用 Insights 事件,或者停止并重新开始源事件数据存储上的事件摄取,则如果检测到异常活动,CloudTrail 可能需要最长 7 天才能重新启动 Insights 事件的传输。在 CloudTrail Lake 中摄取 Insights 事件将收取额外费用。如果您同时为跟踪和事件数据存储启用 Insights,则需要单独付费。有关 CloudTrail 定价的信息,请参阅 Amazon CloudTrail 定价

使用 Amazon Web Services Management Console 记录见解事件

您可以使用控制台在跟踪上启用 Insights 事件。

在现有跟踪记录上启用 CloudTrail Insights 事件

按照以下过程在现有跟踪记录上启用 CloudTrail Insights 事件。默认情况下,不启用见解事件。

  1. 在 CloudTrail 控制台的左侧导航窗格中,打开 Trails(跟踪记录)页面,然后选择跟踪记录名称。

  2. Insights events(见解事件)中,选择 Edit(编辑)。

    注意

    记录见解事件将收取额外费用。有关 CloudTrail 定价的信息,请参阅 Amazon CloudTrail 定价

  3. Event type(事件类型)中,选择 Insights events(Insights 事件)。

  4. Insights events(Insights 事件)中的 Choose Insights types(选择 Insights 类型)下,选择 API call rate(API 调用率)和/或 API error rate(API 错误率)。跟踪必须记录写入管理事件才能针对 API 调用率记录 Insights 事件。跟踪必须记录读取写入管理事件才能针对 API 错误率记录 Insights 事件。

  5. 选择保存更改以保存您的更改。

如果检测到异常活动,则 CloudTrail 最多可能需要 36 小时才能传递第一个见解事件。

使用 Amazon Command Line Interface 记录见解事件

您可以使用 Amazon CLI 配置跟踪和事件数据存储以记录 Insights 事件。

注意

要针对 API 调用量记录 Insights 事件,跟踪必须记录 write 管理事件。要针对 API 错误率记录 Insights 事件,跟踪必须记录 readwrite 管理事件。

使用 Amazon CLI 记录跟踪记录的 Insights 事件

要查看您的跟踪是否正在记录见解事件,请运行 get-insight-selectors 命令。

aws cloudtrail get-insight-selectors --trail-name TrailName

以下结果显示跟踪的默认设置。默认情况下,跟踪记录不记录见解事件。InsightType 属性值为空,并且未指定见解事件选择器,因为未启用见解事件收集。

如果您未添加 Insights 选择器,则 get-insight-selectors 命令会返回以下错误消息:“An error occurred (InsightNotEnabledException) when calling the GetInsightSelectors operation: Trail name does not have Insights enabled。Edit the trail settings to enable Insights, and then try the operation again.”

{ "InsightSelectors": [ ], "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/TrailName" }

要将跟踪配置为记录见解事件,请运行 put-insight-selectors 命令。以下示例说明如何配置跟踪以包含见解事件。Insights 选择器值可以是 ApiCallRateInsight 和/或 ApiErrorRateInsight

aws cloudtrail put-insight-selectors --trail-name TrailName --insight-selectors '[{"InsightType": "ApiCallRateInsight"},{"InsightType": "ApiErrorRateInsight"}]'

以下结果显示为跟踪配置的见解事件选择器。

{ "InsightSelectors": [ { "InsightType": "ApiErrorRateInsight" }, { "InsightType": "ApiCallRateInsight" } ], "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/TrailName" }

使用 Amazon 开发工具包记录事件

运行 GetInsightSelectors 操作以查看跟踪是否启用了 Insights 事件。您可以配置您的跟踪记录以使用 PutInsightSelectors 操作启用 Insights 事件。有关更多信息,请参阅 Amazon CloudTrail API 参考

跟踪的其他信息

本部分提供特定于跟踪的其他信息。本部分介绍如何从 CloudTrail 控制台的 Insights 页面查看已订阅跟踪的事件,以及如何选择性地将这些事件发送到 CloudWatch Logs 进行监控。

在控制台中查看跟踪的 Insights 事件

对于跟踪,您还可以在 CloudTrail 控制台的 Insights 页面中访问和查看 Insights 事件。有关如何在控制台中以及使用 Amazon CLI 访问和查看见解事件的信息,请参阅本指南中的 查看跟踪的 CloudTrail Insights 事件

下图显示了一个跟踪 Insights 事件的示例。通过从 Dashboard (控制面板)Insights (见解) 页面中选择见解事件名称,可以打开见解事件的详细信息页面。

如果对跟踪禁用 CloudTrail 见解或对跟踪停止日志记录(禁用 CloudTrail 见解),则可能已将见解事件存储在目标 S3 存储桶中或显示在控制台的 Insights(见解)页面上,该日期来自您启用见解的较早时间。

筛选条件列

左列列出了与主题 API 相关的见解事件,并且具有相同的见解事件类型。通过该列,您可以选择希望了解其详细信息的见解事件。在此列中选择事件时,该事件将在 Insights graph(见解图表)选项卡上的图形中突出显示。默认情况下,CloudTrail 应用一个筛选条件将 CloudTrail events(CloudTrail 事件)选项卡限制为关于在触发见解事件的异常活动期间调用的特定 API 的事件。要显示在异常活动期间调用的所有 CloudTrail 事件,包括与见解事件无关的事件,请关闭筛选条件。

Insights graph(见解图表)选项卡

Insights graph(Insights 图)选项卡上,Insights 事件的详细信息页面显示在记录一个或多个 Insights 事件之前和之后的一段时间内发生的 API 调用量或错误率的图表。在图表中,见解事件以垂直条突出显示,条的宽度显示见解事件的开始和结束时间。

在此示例中,突出显示的垂直带显示了账户中异常数量的 Amazon Systems Manager SendCommand API 调用。在突出显示的区域中,由于 SendCommand 调用数量上升到该账户每分钟 0.0442 次调用的基线平均值以上,因此 CloudTrail 在检测到异常活动时记录了一个 Insights 事件。已记录在上午 5:50 至 5:55 之间的 5 分钟内多达 15 次 SendCommand 调用的 Insights 事件。每分钟对该 API 的调用大约比该账户预期的次数多两次。在此示例中,图表的时间跨度为三小时:上午 4:30。太平洋时间 2021 年 7 月 15 日 上午 4:30 至上午 7:30。此事件的开始时间为 2021 年 7 月 15 日 上午 6:00,结束时间为两分钟后。未突出显示的结束 Insights 事件显示,该异常活动在上午 6:16 左右结束。

按照见解事件开始前七天的时间计算基准。虽然基准持续时间的值(CloudTrail 针对 API 上的正常活动分析的时间段)大约为七天,但 CloudTrail 会将基准持续时间舍入为整数天,因此确切的基准持续时间可能会有所不同。


                    CloudTrail 见解详细信息页面,显示作为见解事件记录的异常 API 活动。

您可以使用工具栏上的 Zoom(缩放)命令放大结束 Insights 事件,显示开始和结束时间。在此示例中,选择 Zoom(缩放),然后在突出显示的 Insights 事件的一边短距离拖动Zoom(缩放)光标,展开 Insights 事件并显示更多时间线详细信息。


                    CloudTrail Insights 事件,放大以显示时间线详细信息。

请打开 CloudTrail events(CloudTrail 事件)选项卡,查看用来分析以确定发生异常活动的 CloudTrail 事件。在此示例中,CloudTrail 分析了 12 个事件,其中四个事件触发了 Insights 事件。


                    CloudTrail Insights 事件,放大以显示时间线详细信息。

以下图片显示 API 错误率 Insights 事件的Insights图选项卡。突出显示的区域显示,由于 GetRolePolicy IAM API 调用上发生的 NoSuchEntityException 错误数量超出此 API 调用每分钟 0.0017 次 NoSuchEntityException 错误的基线平均值,在洞察期间记录了一个平均每分钟出现 18 次错误的 Insights 事件。在此示例中,触发 Insights 事件的 CloudTrail 事件数量与一分钟内出现 18 个 NoSuchEntityException 错误的 Insights 平均值相匹配。与 API 调用率图不同的是,API 错误率图显示为两条不同颜色的线:一条线衡量导致异常错误数量的 IAM API 调用(GetRolePolicy),另一条线衡量记录异常活动的错误(NoSuchEntityException)。


                    CloudTrail Insights 详细信息页面,显示作为 Insights 事件记录的异常 API 错误率活动。

Attributions(属性)选项卡

Attributions(归因)选项卡显示有关见解事件的以下信息。Attributions(归因)选项卡上的信息可以帮助您识别 Insights 活动的原因和来源。展开排名较高的基准区域,将正常时段内的用户身份、用户代理和错误代码活动与 Insights 活动期间归因的活动进行比较。Top baseline user identity ARNs(排名靠前的基准用户身份 ARN)、Top baseline user agents(排名靠前的基准用户代理)和 Top baseline error codes(排名靠前的基准错误代码)中仅显示基线平均值 – 在 Insights 事件开始时间前大约七天内按用户身份、用户代理记录的或导致错误代码的 API 事件的历史平均值。


                    显示归因的 CloudTrail 见解事件详细信息页面。

Attributions(归因)选项卡仅显示错误率 Insights 事件中排名靠前的用户身份 ARN 和用户代理,如下图所示。错误率 Insights 事件不需要顶级错误代码。


                    显示错误率 Insights 事件归因的 CloudTrail Insights 事件详细信息页面。
  • Top user identity ARNs(最高的用户身份 ARN)- 此表格显示了在异常活动期间和基准期对 API 调用作出贡献的最多前五名的 Amazon 用户或 IAM 角色(用户身份),按所贡献的 API 调用平均数量的降序排列。引起异常活动的活动总数的平均数百分比显示在括号中。如果超过五个用户身份 ARN 涉及了异常活动,则其活动将汇总在 Other(其他)行中。

  • Top user agents(最高的用户代理)- 此表格显示了用户身份在异常活动期间和基准期对 API 调用作出贡献的最多前五名的 Amazon 工具,按所贡献的 API 调用平均数量的降序排列。这些工具包括 Amazon Web Services Management Console、Amazon CLI 或 Amazon 软件开发工具包。例如,名为 ec2.amazonaws.com 的用户代理表示 Amazon EC2 控制台是用于调用 API 的工具之一。引起异常活动的活动总数的平均数百分比显示在括号中。如果超过五个用户代理涉及了异常活动,则其活动将汇总在 Other(其他)行中。

  • 排名靠前的错误代码 – 仅针对 API call rate(API 调用率)Insights 事件显示。此表最多显示在异常活动期间和基准期的 API 调用中发生的前五个的错误代码,按 API 调用数量从最大到最小降序排列。引起异常活动的活动总数的平均数百分比显示在括号中。如果在异常活动或基准活动期间发生了超过五个错误代码,那么它们的活动将汇总在 Other(其他)行中。

    None 作为排名前五的错误代码值之一,意味着很大一部分对见解事件有贡献的调用不会导致错误。如果错误代码值为 None,并且表中没有其他错误代码,则 Insight average(见解平均值)和 Baseline average(基准平均值)列中的值与表示见解事件总体的值相同。您还可以查看显示在 Insights graph(见解图表)选项卡的 API calls per minute(每分钟 API 调用数)下的 Insight average(见解平均值)和 Baseline average(基准平均值)图例中的那些值。

基线平均值和 Insights 平均值

Baseline average(基线平均值)和 Insights average(Insights 平均值)显示排名靠前的用户身份、排名靠前的用户代理和排名靠前的错误代码。

  • Baseline average(基线平均值)– 在您账户中特定区域内,大约前七天内测量的每分钟对记录 Insights 事件的 API 的典型调用速率。

  • Insights average(Insights 平均值)- 触发 Insights 事件的 API 的调用或错误率。开始事件的 CloudTrail Insights 平均值是触发 Insights 事件的 API 的每分钟调用或错误率。通常情况下,这是异常活动的第一分钟。结束事件的 Insights 平均值是在开始 Insights 事件和结束 Insights 事件之间异常活动持续时间内,每分钟 API 调用的速率。

CloudTrail events(CloudTrail 事件)选项卡

CloudTrail events(CloudTrail 事件)选项卡上,查看 CloudTrail 用来分析以确定发生异常活动的相关事件。默认情况下,已对见解事件名称应用了筛选条件,该名称也是相关 API 的名称。要显示在异常活动期间记录的所有 CloudTrail 事件,请关闭 Only show events for selected Insights event(仅显示所选见解事件的事件)。CloudTrail events(CloudTrail 事件)选项卡显示与见解事件的开始和结束时间之间发生的主题 API 相关的 CloudTrail 管理事件。这些事件可帮助您执行更深入的分析,以确定 Insights 事件的可能原因以及异常 API 活动和错误率的原因。

Insights event record(见解事件记录)选项卡

与任何 CloudTrail 事件相似,CloudTrail 见解事件是 JSON 格式的记录。Insights event record(见解事件记录)选项卡显示见解开始和结束事件的 JSON 结构和内容,有时称为事件负载。有关见解事件记录的字段和内容的更多信息,请参阅本指南中的 Insights 事件的记录字段CloudTrail 见解 insightDetails 元素

将跟踪事件发送到 Amazon CloudWatch Logs

CloudTrail 支持将跟踪的 Insights 事件发送到 CloudWatch Logs。在配置您的跟踪以将见解事件发送到 CloudWatch Logs 日志组时,CloudTrail 见解只发送您在跟踪中指定的事件。例如,如果您将跟踪配置为记录管理和见解事件,则您的跟踪会将管理事件和见解事件传递至您的 CloudWatch Logs 日志组。有关更多信息,请参阅使用 Amazon CloudWatch Logs 监控 CloudTrail 日志文件