新增:Amazon CloudTrail Lake 事件充实:向亚马逊云科技活动日志添加业务背景

作者: Isaiah Salinas |

亚马逊云科技客户使用 Amazon CloudTrail Lake 聚合和分析其亚马逊云科技活动,以实现安全、操作故障排除和合规目的。但是,在调查安全事件或进行合规性审计时,客户通常需要除基本事件详细信息之外的其他业务背景——例如哪个团队或项目拥有受影响的资源,或者对资源进行更改的 IAM 委托人的属性在哪里。

今天,我们很高兴地宣布 CloudTrail Lake 的一项新增功能:事件丰富功能可让您更轻松地对您的亚马逊云科技活动进行分类、搜索和分析。通过事件充实,您现在可以使用与您的业务环境相关的其他信息来丰富您的 CloudTrail 管理和数据事件。您可以为您的事件附加资源标签并选择亚马逊云科技全局条件密钥,从而轻松对您的亚马逊云科技活动进行分类、搜索和分析。您可以使用 CloudTrail 事件中的资源标签轻松创建特定于应用程序的活动报告,或基于 IAM 委托人的属性查看所有亚马逊云科技 API 活动。

让我们来看一个常见的场景,安全团队需要调查其亚马逊云科技环境中 Amazon S3 存储桶中文件的异常活动。基本的 CloudTrail 事件显示调用了哪个 API 以及由哪个 IAM 负责人调用,但不提供关键的业务上下文,例如:

  • 哪个应用程序或团队拥有资源
  • 哪种类型的环境(产品/测试/开发)受到影响
  • 该资源采用了哪种类型的数据分类

这迫使团队手动关联多个系统中的信息,以了解活动的完整背景。事件丰富通过在记录资源标签和 IAM 全局条件密钥时将资源标签和 IAM 全局条件密钥整合到您的 CloudTrail 事件中来解决这个问题。

在这篇博客文章中,我们将探讨如何使用这项新功能来帮助监控 S3 存储桶中敏感文件的更改。还将展示如何根据此活动构建可视化和仪表板,以帮助改善安全性和合规性工作流程。

先决条件

本博客中用于扩展 CloudTrail 事件的以下示例查询要求您拥有现有 CloudTrail Lake 事件数据存储和 Amazon S3 资源。

为 CloudTrail Lake 设置活动丰富功能

CloudTrail Lake 的事件丰富功能会将信息存储在一个名为 eventContext 的字段中。在此字段中,您将找到与资源和主标签相关的信息。另请注意,这项新功能可能会增加 CloudTrail 事件的总体规模,这将产生额外费用。

在此示例场景中,我们将展示如何在现有事件数据存储中为 CloudTrail Lake 设置事件扩展。

  1. 导航到 CloudTrail 控制台。
  2. 在左侧导航菜单中,选择 Lake
  3. 选择事件数据存储
  4. 为 CloudTrail 事件选择您的事件数据存储
  5. 在 "事件上下文" 下,选择 "编辑"
  6. 在 "添加资源和主标签密钥" 下,将添加以下资源标签密钥。
    • 环境
    • 球队
    • 数据分类
  1. 我们还可以选择添加 IAM 全局条件密钥。在本示例中,我们将仅使用资源标签。
丰富 CloudTrail Lake 新事件数据存储的事件配置部分

图 1:Amazon CloudTrail Enrich 活动

  1. 选择 "保存更改"。

CloudTrail Lake 将开始记录事件中包含我们在事件上下文部分定义的标签密钥的资源的所有标签。(注意:此功能也可以在新的事件数据存储中设置。)

使用事件增强功能分析 S3 资源的更改

接下来,我们将使用 CloudTrail Lake 来查询与特定标签相关的 Amazon S3 的任何 DeleteObject 和 PutObject 事件。

  1. 导航到 CloudTrail 控制台。
  2. 在左侧导航菜单中,选择 Lake
  3. 选择 "查询"。
  4. 复制以下查询并将其粘贴到您的编辑器窗口中。(注意:必须将 $EDS_ID 替换为事件数据存储的 ID。此外,您可以调整要查询的时间范围内的事件时间)

SQL 查询:

SELECT eventtime, eventName, substr(userIdentity.arn, strpos(userIdentity.arn, '/') +1) as IAM,
eventContext.tagContext.resourceTags[1].tags as tags,
eventContext.tagContext.resourceTags[1].arn as resourceArn, 
element_at(requestParameters, 'key') as S3Object
FROM $EDS_ID
WHERE eventContext IS NOT NULL
AND eventSource = 's3.amazonaws.com'
AND eventname in ('DeleteObject', 'PutObject')
AND eventtime >= '2025-06-02 00:00:00'
AND eventtime <= '2025-06-02 23:59:59'
  1. 单击 "运行",然后您的结果将显示在 "查询结果" 下。
CloudTrail 湖查询结果

图 2:Amazon CloudTrail 查询结果

查询结果显示了针对来自 Amazon S3 的 DeleteObject 和 PutObject 事件的 API 操作,包括在事件数据存储的事件上下文中定义的这些资源的关联标签。然后,我们可以通过仅包括将数据分类设置为敏感的事件来进一步筛选此查询。以下查询将显示包含此标签的资源的所有相关 API 活动。

SQL 查询:

SELECT eventtime, eventName, substr(userIdentity.arn, strpos(userIdentity.arn, '/') +1) as IAM,
element_at(eventContext.tagContext.resourceTags[1].tags, 'DataClassification') as DataClassification,
eventContext.tagContext.resourceTags[1].arn as resourceArn, element_at(requestParameters, 'key') as S3Object
FROM $EDS_ID
WHERE eventContext IS NOT NULL
AND element_at(eventContext.tagContext.resourceTags[1].tags, 'DataClassification') = 'sensitive'
AND eventSource = 's3.amazonaws.com'
AND eventname in ('DeleteObject', 'PutObject')
AND eventtime >= '2025-06-02 00:00:00'
AND eventtime <= '2025-06-02 23:59:59'
CloudTrail 湖查询结果

图 3:Amazon CloudTrail 查询结果

您还可以使用 CloudTrail Lake 查询生成器生成查询,该查询可以显示与您定义的资源标签相关的事件。例如,您可以输入诸如 "使用资源标签 Environment 的值为 prod 的环境显示所有 S3 更改" 之类的提示。然后,CloudTrail Lake 查询生成器将显示与以下查询类似的查询。

SQL 查询:

SELECT *
FROM $EDS_ID
WHERE eventCategory = 'Management'
AND eventSource IN ('s3.amazonaws.com', 's3-control.amazonaws.com')
AND eventtime >= '2025-06-02 00:00:00'
AND eventtime <= '2025-06-02 23:59:59'
AND any_match(
eventContext.tagContext.resourceTags,
rt->element_at(rt.tags, 'Environment') = 'prod'
)

使用 CloudTrail Lake 仪表板创建可操作见解

利用 CloudTrail Lake 的事件丰富功能,您可以构建更有意义的可视化效果。以下是您可以使用 CloudTrail Lake 仪表板创建的可视化类型的一些示例。

  • 应用程序/团队的 API 活动
  • 按环境划分的资源变化
  • 按用户类型划分的访问模式

让我们为与敏感数据分类相关的 S3 活动创建一个自定义控件,并将其添加到 CloudTrail Lake 仪表板中。

  1. 导航到 CloudTrail 控制台。
  2. 在左侧导航菜单中,选择 Lake
  3. 选择 "查询"。
  4. 复制以下查询并将其粘贴到您的编辑器窗口中。(注意:必须将 $EDS_ID 替换为事件数据存储的 ID。此外,您可以调整要查询的时间范围内的事件时间)

SQL 查询:

SELECT count(*) as count, eventName, substr(userIdentity.arn, strpos(userIdentity.arn, '/') +1) as IAM,
element_at(eventContext.tagContext.resourceTags[1].tags, 'DataClassification') as DataClassification,
eventContext.tagContext.resourceTags[1].arn as resourceArn, element_at(requestParameters, 'key') as S3Object
FROM $EDS_ID
WHERE eventContext IS NOT NULL
AND element_at(eventContext.tagContext.resourceTags[1].tags, 'DataClassification') = 'sensitive'
AND eventSource = 's3.amazonaws.com'
AND eventname in ('DeleteObject', 'PutObject')
AND eventtime >= '2025-05-29 00:00:00'
AND eventtime <= '2025-05-29 23:59:59'
GROUP BY eventName,
substr(userIdentity.arn, strpos(userIdentity.arn, '/') +1),
element_at(eventContext.tagContext.resourceTags[1].tags, 'DataClassification'),
eventContext.tagContext.resourceTags[1].arn,
element_at(requestParameters, 'key')
  1. 单击 "运行",然后您的结果将显示在 "查询结果" 下。
  2. 选择 "可视化工具" 选项卡。
  3. 在图表设置部分下,选择条形图作为图表类型。
  4. 对于标签参数,选择事件名称,对于值,选择计数。
  5. 选择 "添加到控制面板"
  6. 输入 "敏感数据分类的 S3 活动" 小组件标题。
  7. 选择 "创建新仪表板",然后选择 "创建仪表板"。
  8. 输入 S3-Activity 作为仪表板的名称。
  9. 选择创建仪表板
用于 S3 活动的 CloudTrail Lake 仪表板

图 4:Amazon CloudTrail 控制面板

清理

为防止产生额外费用,请移除在本演练期间创建的 CloudTrail Lake 资源。

结论

活动丰富功能使 CloudTrail Lake 成为安全与合规团队更强大的工具。额外的背景信息可帮助您更好地了解和分析账户活动。在这篇文章中,我们演示了如何使用 CloudTrail Lake 的事件丰富功能来帮助根据资源标签为资源提供审计跟踪。然后,我们演示了如何利用 CloudTrail Lake 仪表板来构建可视化效果,以提供与您的资源相关的更多有意义、可操作的见解。要详细了解如何使用 CloudTrail Lake 事件增强功能,请查看我们的文档。

作者简介

Isaiah Salinas

以赛亚·萨利纳斯是云运营团队的高级专业解决方案架构师。Isaiah 在使用亚马逊云科技技术方面拥有 10 多年的经验,与客户合作设计、实施和支持复杂的云基础设施。他还喜欢与其他人讨论如何使用亚马逊云科技服务为他们的问题提供解决方案。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。