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

Amazon S3 CloudTrail 事件

重要

Amazon S3 现在将具有 Amazon S3 托管密钥的服务器端加密(SSE-S3)作为 Amazon S3 中每个存储桶的基本加密级别。从 2023 年 1 月 5 日起,上传到 Amazon S3 的所有新对象都将自动加密,不会产生额外费用,也不会影响性能。S3 存储桶默认加密配置和上传的新对象的自动加密状态可在 Amazon CloudTrail 日志、S3 清单、S3 Storage Lens 存储统计管理工具、Amazon S3 控制台中获得,并可用作 Amazon Command Line Interface 和 Amazon SDK 中的附加 Amazon S3 API 响应标头。有关更多信息,请参阅默认加密常见问题解答

本节提供有关 S3 记录到 CloudTrail 的事件的信息。

CloudTrail 中的 Amazon S3 数据事件

数据事件可提供对资源或在资源中所执行资源操作(例如,读取或写入 Amazon S3 对象)的相关信息。这些也称为数据层面操作。数据事件通常是高容量活动。默认情况下,CloudTrail 不记录数据事件。CloudTrail 事件历史记录不记录数据事件。

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

您可以使用 CloudTrail 控制台、Amazon CLI 或 CloudTrail API 操作记录 Amazon S3 资源类型的数据事件。有关如何记录数据事件的更多信息,请参阅《Amazon CloudTrail 用户指南》中的使用 Amazon Web Services Management Console 记录数据事件使用 Amazon Command Line Interface 记录数据事件

下表列出了您可以为其记录数据事件的 Amazon S3 资源类型。数据事件类型(控制台)列显示可从 CloudTrail 控制台上的数据事件类型列表中选择的值。resources.type 值列显示了您在使用 Amazon CLI 或 CloudTrail API 配置高级事件选择器时需要指定的 resources.type 值。记录到 CloudTrail 的数据 API 列显示了针对该资源类型记录到 CloudTrail 的 API 调用。

数据事件类型(控制台) resources.type 值 记录至 CloudTrail 的数据 API
S3 Amazon::S3::Object
S3 接入点 Amazon::S3::Access Point
S3 对象 Lambda Amazon::S3ObjectLambda::AccessPoint
S3 Outposts Amazon::S3Outposts::Object

您可以将高级事件选择器配置为在 eventNamereadOnlyresources.ARN 字段上进行筛选,从而仅记录那些对您很重要的事件。有关这些字段的更多信息,请参阅《Amazon CloudTrail API 参考》中的 AdvancedFieldSelector

CloudTrail 中的 Amazon S3 管理事件

Amazon S3 将所有控制面板操作记录为管理事件。有关 S3 API 操作的更多信息,请参阅 Amazon S3 API Reference

CloudTrail 如何捕获向 Amazon S3 发出的请求

默认情况下,CloudTrail 会记录在过去 90 天内进行的 S3 存储桶级别 API 调用,但不会记录向对象发出的请求。存储桶级调用包括诸如 CreateBucketDeleteBucketPutBucketLifecyclePutBucketPolicy 等事件。您可以在 CloudTrail 控制台上看到存储桶级事件。但是,您无法在此查看数据事件(Amazon S3 对象级调用),您必须解析或查询它们的 CloudTrail 日志。

CloudTrail 日志记录跟踪的 Amazon S3 账户级操作

CloudTrail 会记录帐户级操作。Amazon S3 记录与其他 Amazon Web Service记录一起写入日志文件。CloudTrail 基于时间段和文件大小来确定何时创建并写入新文件。

本节中的表格列出了可用于 CloudTrail 日志记录的 Amazon S3 账户级操作。

CloudTrail 日志记录跟踪的 Amazon S3 账户级 API 操作显示为以下事件名称。CloudTrail 事件名称与 API 操作名称不同。例如,DeletePublicAccessBlock 是 DeleteAccountPublicAccessBlock。

CloudTrail 日志记录跟踪的 Amazon S3 存储桶级操作

默认情况下,CloudTrail 将记录通用存储桶的存储桶级操作。Amazon S3 记录与其他 Amazon 服务记录一起写入日志文件。CloudTrail 基于时间段和文件大小来确定何时创建并写入新文件。

此部分列出了可用于 CloudTrail 日志记录的 Amazon S3 存储桶级操作。

CloudTrail 日志记录跟踪的 Amazon S3 存储桶级 API 操作显示为以下事件名称。在某些情况下,CloudTrail 事件名称与 API 操作名称不同。例如,PutBucketLifecycleConfigurationPutBucketLifecycle

除了这些 API 操作之外,还可以使用 OPTIONS object 对象级操作。由于此操作将检查存储桶的 CORS 配置,因此它被视为 CloudTrail 日志记录中的存储桶级操作。

CloudTrail 日志记录跟踪的 S3 Express One Zone 存储桶级别(区域 API 端点)操作

默认情况下,CloudTrail 将目录存储桶的存储桶级操作记录为管理事件。S3 Express One Zone 的 CloudTrail 管理事件的 eventsources3express.amazonaws.com

注意

对于 S3 Express One Zone,不支持对可用区端点(对象级或数据面板)API 操作(例如 PutObjectGetObject)进行 CloudTrail 日志记录。

以下区域端点 API 操作将记录到 CloudTrail 中。

有关更多信息,请参阅 S3 Express One Zone 的安全最佳实践

跨账户情形中的 Amazon S3 对象级操作

下面是涉及跨账户情形中的对象级 API 调用的特殊使用案例以及报告 CloudTrail 日志的方法。CloudTrail 会将日志提供给申请方(进行 API 调用的账户),除非在某些拒绝访问的情况下,其中日志条目被编辑或省略。在设置跨账户访问时,请考虑本部分中的示例。

注意

这些示例假定 CloudTrail 日志已适当配置。

示例 1:CloudTrail 将日志提供给存储桶拥有者

即使存储桶拥有者不具有执行相同对象 API 操作的权限,CloudTrail 也会将日志传递给存储桶拥有者。请考虑以下跨账户情形:

  • 账户 A 拥有该存储桶。

  • 账户 B(请求者)尝试访问该存储桶中的对象。

  • 账户 C 拥有该对象。账户 C 可能与账户 A 是同一个账户,也可能不是同一个账户。

注意

CloudTrail 始终将对象级 API 日志提供给请求者(账户 B)。此外,即使存储桶拥有者不拥有该对象(账户 C)或对该对象不具有执行相同 API 操作的权限,CloudTrail 也会向存储桶拥有者(账户 A)提供相同的日志。

示例 2:CloudTrail 没有使设置对象 ACL 时使用的电子邮件地址激增

请考虑以下跨账户情形:

  • 账户 A 拥有该存储桶。

  • 账户 B(请求者)使用电子邮件地址发送了一个设置对象 ACL 授权的请求。有关 ACL 的更多信息,请参阅 访问控制列表 (ACL) 概述

该请求方将获取日志以及电子邮件信息。但是,存储桶拥有者(如果他们像在示例 1 中一样有资格接收日志)将获取报告该事件的 CloudTrail 日志。但是,存储桶拥有者不会获取 ACL 配置信息,尤其是被授权者电子邮件地址和授权。日志为存储桶拥有者提供的唯一信息是账户 B 进行了 ACL API 调用。