

# 使用 AWS CloudTrail 记录 Amazon S3 API 调用
<a name="cloudtrail-logging"></a>

[AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 是提供用户、角色或 AWS 服务所采取操作的记录的服务。CloudTrail 将 Amazon S3 的所有 API 调用作为事件捕获。捕获的调用中包括通过 Amazon S3 控制台的调用和对 Amazon S3 API 操作的代码调用。借助通过 CloudTrail 收集的信息，您可以确定向 Amazon S3 发出哪些请求、发出请求的 IP 地址、请求的发出时间以及其它详细信息。

每个事件或日志条目都包含有关生成请求的人员信息。身份信息有助于您确定以下内容：
+ 请求是使用根用户凭证还是用户凭证发出的。
+ 请求是否代表 IAM Identity Center 用户发出。
+ 请求是使用角色还是联合用户的临时安全凭证发出的。
+ 请求是否由其他 AWS 服务 发出。

当您创建账户并可以自动访问 CloudTrail **事件历史记录**时，CloudTrail 在您的 AWS 账户 中处于活动状态。CloudTrail **事件历史记录**提供对 AWS 区域 中过去 90 天的已记录管理事件的可查看、可搜索、可下载和不可变记录。有关更多信息，请参阅《AWS CloudTrail 用户指南》的[使用 CloudTrail 事件历史记录](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)**。查看**事件历史记录**不会收取 CloudTrail 费用。

要持续记录您的 AWS 账户 过去 90 天的事件，请创建跟踪或 [CloudTrail Lake](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html) 事件数据存储。

**CloudTrail 跟踪**  
通过*跟踪记录*，CloudTrail 可将日志文件传送至 Amazon S3 存储桶。使用 AWS 管理控制台 创建的所有跟踪均具有多区域属性。您可以通过使用 AWS CLI 创建单区域或多区域跟踪。建议创建多区域跟踪，因为您可记录您账户中的所有 AWS 区域 的活动。如果您创建单区域跟踪，则只能查看跟踪的 AWS 区域 中记录的事件。有关跟踪的更多信息，请参阅《AWS CloudTrail 用户指南》**中的[为您的 AWS 账户 创建跟踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)和[为组织创建跟踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/creating-trail-organization.html)。  
通过创建跟踪，您可以从 CloudTrail 免费向您的 Amazon S3 存储桶传送一份正在进行的管理事件的副本，但会收取 Amazon S3 存储费用。有关 CloudTrail 定价的更多信息，请参阅 [AWS CloudTrail 定价](https://aws.amazon.com/cloudtrail/pricing/)。有关 Amazon S3 定价的信息，请参阅 [Amazon S3 定价](https://aws.amazon.com/s3/pricing/)。

**CloudTrail Lake 事件数据存储**  
*CloudTrail Lake* 允许您对事件运行基于 SQL 的查询。CloudTrail Lake 可将基于行的 JSON 格式的现有事件转换为 [Apache ORC](https://orc.apache.org/) 格式。ORC 是一种针对快速检索数据进行优化的列式存储格式。事件将被聚合到*事件数据存储*中，它是基于您通过应用[高级事件选择器](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake-concepts.html#adv-event-selectors)选择的条件的不可变的事件集合。应用于事件数据存储的选择器用于控制哪些事件持续存在并可供您查询。有关 CloudTrail Lake 的更多信息，请参阅《AWS CloudTrail 用户指南》**中的[使用 AWS CloudTrail Lake](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html)。  
CloudTrail Lake 事件数据存储和查询会产生费用。创建事件数据存储时，您可以选择要用于事件数据存储的[定价选项](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake-manage-costs.html#cloudtrail-lake-manage-costs-pricing-option)。定价选项决定了摄取和存储事件的成本，以及事件数据存储的默认和最长保留期。有关 CloudTrail 定价的更多信息，请参阅 [AWS CloudTrail 定价](https://aws.amazon.com/cloudtrail/pricing/)。

日志文件可以在存储桶中存储任意长时间，不过您也可以定义 Amazon S3 生命周期规则以自动归档或删除日志文件。默认情况下，将使用 Amazon S3 服务器端加密 (SSE) 对日志文件进行加密。

## 将 CloudTrail 日志与 Amazon S3 服务器访问日志和 CloudWatch Logs 结合使用
<a name="cloudtrail-logging-vs-server-logs"></a>

AWS CloudTrail 日志记录用户、角色或 AWS 服务在 Amazon S3 中执行的操作，而 Amazon S3 服务器访问日志提供向 S3 存储桶发出的请求的详细记录。有关不同日志的工作方式及其属性、性能和成本的更多信息，请参阅 [Amazon S3 的日志记录选项](logging-with-S3.md)。

您可以将 AWS CloudTrail 日志与 Amazon S3 的服务器访问日志搭配使用。CloudTrail 日志为您提供了 Amazon S3 存储桶级别和对象级操作的详细 API 跟踪。Amazon S3 的服务器访问日志可让您了解对于 Amazon S3 中您的数据的对象级操作。有关服务器访问日志的更多信息，请参阅 [使用服务器访问日志记录来记录请求](ServerLogs.md)。

您还可以将 CloudTrail 日志与 Amazon S3 的 Amazon CloudWatch 一起使用。CloudTrail 与 CloudWatch Logs 集成可将 CloudTrail 捕获到的 S3 存储桶级 API 活动传送给您指定的 CloudWatch 日志组中的 CloudWatch 日志流。您可以创建用于监控特定 API 活动的 CloudWatch 警报，并在此特定 API 活动发生时收到电子邮件通知。有关用于监控特定 API 活动的 CloudWatch 警报的更多信息，请参阅 [AWS CloudTrail 用户指南](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。有关将 CloudWatch 与 Amazon S3 结合使用的更多信息，请参阅 [使用 Amazon CloudWatch 监控指标](cloudwatch-monitoring.md)。

**注意**  
当 VPC 端点策略拒绝时，S3 不支持向 VPC 端点请求的请求者或存储桶拥有者传输 CloudTrail 日志。

## 使用 Amazon S3 SOAP API 调用进行 CloudTrail 跟踪
<a name="cloudtrail-s3-soap"></a>

CloudTrail 跟踪 Amazon S3 SOAP API 调用。Amazon S3 HTTP 上的 SOAP 支持已弃用，但是仍可在 HTTPS 上使用。有关 Amazon S3 SOAP 支持的更多信息，请参阅《Amazon S3 API 参考》**中的 [Appendix: SOAP API](https://docs.aws.amazon.com/AmazonS3/latest/API/APISoap.html)。

**重要**  
SOAP 不支持较新的 Amazon S3 特征。我们建议您使用 REST API 或 AWS SDK。

 下表显示了 CloudTrail 日志记录所跟踪的 Amazon S3 SOAP 操作。


| SOAP API 名称 | CloudTrail 日志中使用的 API 事件名称 | 
| --- | --- | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/SOAPListAllMyBuckets.html](https://docs.aws.amazon.com/AmazonS3/latest/API/SOAPListAllMyBuckets.html)  | ListBuckets | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/SOAPCreateBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/SOAPCreateBucket.html)  | CreateBucket | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/SOAPDeleteBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/SOAPDeleteBucket.html)  | DeleteBucket | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/SOAPGetBucketAccessControlPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/SOAPGetBucketAccessControlPolicy.html)  | GetBucketAcl | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/SOAPSetBucketAccessControlPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/SOAPSetBucketAccessControlPolicy.html)  | PutBucketAcl | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/SOAPGetBucketLoggingStatus.html](https://docs.aws.amazon.com/AmazonS3/latest/API/SOAPGetBucketLoggingStatus.html)  | GetBucketLogging | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/SOAPSetBucketLoggingStatus.html](https://docs.aws.amazon.com/AmazonS3/latest/API/SOAPSetBucketLoggingStatus.html)  | PutBucketLogging | 

 有关 CloudTrail 和 Amazon S3 的更多信息，请参阅以下主题：

**Topics**
+ [将 CloudTrail 日志与 Amazon S3 服务器访问日志和 CloudWatch Logs 结合使用](#cloudtrail-logging-vs-server-logs)
+ [使用 Amazon S3 SOAP API 调用进行 CloudTrail 跟踪](#cloudtrail-s3-soap)
+ [Amazon S3 CloudTrail 事件](cloudtrail-logging-s3-info.md)
+ [Amazon S3 和 S3 on Outposts 的 CloudTrail 日志文件条目](cloudtrail-logging-understanding-s3-entries.md)
+ [为 S3 存储桶和对象启用 CloudTrail 事件日志记录](enable-cloudtrail-logging-for-s3.md)
+ [使用 CloudTrail 识别 Amazon S3 请求](cloudtrail-request-identification.md)

# Amazon S3 CloudTrail 事件
<a name="cloudtrail-logging-s3-info"></a>

**重要**  
Amazon S3 现在将具有 Amazon S3 托管密钥的服务器端加密（SSE-S3）作为 Amazon S3 中每个存储桶的基本加密级别。从 2023 年 1 月 5 日起，上传到 Amazon S3 的所有新对象都将自动加密，不会产生额外费用，也不会影响性能。S3 存储桶默认加密配置和上传的新对象的自动加密状态可在 CloudTrail 日志、S3 清单、S3 Storage Lens 存储统计管理工具和 Amazon S3 控制台中查看，并可用作 AWS CLI 和 AWS SDK 中的附加 Amazon S3 API 响应标头。有关更多信息，请参阅[默认加密常见问题解答](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html)。

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

## CloudTrail 中的 Amazon S3 数据事件
<a name="cloudtrail-data-events"></a>

[数据事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events)可提供对资源或在资源中所执行资源操作（例如，读取或写入 Amazon S3 对象）的相关信息。这些也称为数据面板操作。数据事件通常是高容量活动。默认情况下，CloudTrail 不记录数据事件。CloudTrail **事件历史记录**不记录数据事件。

记录数据事件将收取额外费用。有关 CloudTrail 定价的更多信息，请参阅 [AWS CloudTrail 定价](https://aws.amazon.com/cloudtrail/pricing/)。

您可以使用 CloudTrail 控制台、AWS CLI 或 CloudTrail API 操作记录 Amazon S3 资源类型的数据事件。有关如何记录数据事件的更多信息，请参阅《AWS CloudTrail 用户指南》**中的[使用 AWS 管理控制台 记录数据事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events-console)和[使用 AWS Command Line Interface 记录数据事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#creating-data-event-selectors-with-the-AWS-CLI)。

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




| 数据事件类型（控制台） | resources.type 值 | 记录至 CloudTrail 的数据 API | 
| --- | --- | --- | 
| S3 |  AWS::S3::Object  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/cloudtrail-logging-s3-info.html)  | 
| S3 Express One Zone |  AWS::S3Express::Object  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/cloudtrail-logging-s3-info.html)  | 
| S3 接入点 |  AWS::S3::Access Point  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/cloudtrail-logging-s3-info.html)  | 
| S3 对象 Lambda |  AWS::S3ObjectLambda::AccessPoint  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/cloudtrail-logging-s3-info.html)  | 
| S3 Outposts |  AWS::S3Outposts::Object  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/cloudtrail-logging-s3-info.html)  | 

您可以将高级事件选择器配置为在 `eventName`、`readOnly` 和 `resources.ARN` 字段上进行筛选，从而仅记录那些对您很重要的事件。有关这些字段的更多信息，请参阅《AWS CloudTrail API 参考》**中的 [https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html)。

## CloudTrail 中的 Amazon S3 管理事件
<a name="cloudtrail-management-events"></a>

Amazon S3 将所有控制面板操作记录为管理事件。有关 S3 API 操作的更多信息，请参阅 [Amazon S3 API Reference](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations.html)。

## CloudTrail 如何捕获向 Amazon S3 发出的请求
<a name="cloudtrail-logging-s3-requests"></a>

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

如果您使用 AWS CloudTrail 记录数据活动，则 Amazon S3 `DeleteObjects` 数据事件的事件记录同时包括 `DeleteObjects` 事件和作为该操作的一部分删除的每个对象的 `DeleteObject` 事件。您可以从事件记录中排除有关已删除对象的额外可见性。有关更多信息，请参阅《AWS CloudTrail User Guide》**中的 [AWS CLI examples for filtering data events](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/filtering-data-events.html#filtering-data-events-deleteobjects)。

## CloudTrail 日志记录跟踪的 Amazon S3 账户级操作
<a name="cloudtrail-account-level-tracking"></a>

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

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

CloudTrail 日志记录跟踪的 Amazon S3 账户级 API 操作显示为以下事件名称。CloudTrail 事件名称与 API 操作名称不同。例如，DeletePublicAccessBlock 是 DeleteAccountPublicAccessBlock。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeletePublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeletePublicAccessBlock.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetPublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetPublicAccessBlock.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutPublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutPublicAccessBlock.html)

## CloudTrail 日志记录跟踪的 Amazon S3 存储桶级操作
<a name="cloudtrail-bucket-level-tracking"></a>

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

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

CloudTrail 日志记录跟踪的 Amazon S3 存储桶级 API 操作显示为以下事件名称。在某些情况下，CloudTrail 事件名称与 API 操作名称不同。例如，`PutBucketLifecycleConfiguration` 为 `PutBucketLifecycle`。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucketMetadataConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucketMetadataConfiguration.html)（V2 API 操作）
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucketMetadataTableConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucketMetadataTableConfiguration.html)（V1 API 操作）
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketCors.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketCors.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetadataConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetadataConfiguration.html)（V2 API 操作）
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetadataTableConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetadataTableConfiguration.html)（V1 API 操作）
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketOwnershipControls.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketOwnershipControls.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAccelerateConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAccelerateConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAcl.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketCors.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketCors.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLocation.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLogging.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetadataConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetadataConfiguration.html)（V2 API 操作）
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetadataTableConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetadataTableConfiguration.html)（V1 API 操作）
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotification.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotification.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLockConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLockConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketOwnershipControls.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketOwnershipControls.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketRequestPayment.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketRequestPayment.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketWebsite.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketWebsite.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAcl.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketCors.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketCors.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotification.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotification.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectLockConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectLockConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketOwnershipControls.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketOwnershipControls.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketRequestPayment.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketRequestPayment.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateBucketMetadataJournalTableConfiguratione.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateBucketMetadataJournalTableConfiguratione.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateBucketMetadataInventoryTableConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateBucketMetadataInventoryTableConfiguration.html)

除了这些 API 操作之外，还可以使用 [OPTIONS object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTOPTIONSobject.html) 对象级操作。由于此操作将检查存储桶的 CORS 配置，因此它被视为 CloudTrail 日志记录中的存储桶级操作。

**注意**  
CloudTrail 支持将 HeadBucket API 作为 Amazon S3 数据事件。

## CloudTrail 日志记录跟踪的 Amazon S3 Express One Zone 存储类存储桶级别（区域 API 端点）操作
<a name="cloudtrail-bucket-level-tracking-s3express"></a>

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

以下区域端点 API 操作将记录到 CloudTrail 中。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListDirectoryBuckets.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListDirectoryBuckets.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)

有关更多信息，请参阅[使用 AWS CloudTrail 为 S3 Express One Zone 记录日志](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone-logging.html)

## 跨账户情形中的 Amazon S3 对象级操作
<a name="cloudtrail-object-level-crossaccount"></a>

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

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

### 示例 1：CloudTrail 将日志提供给存储桶拥有者
<a name="cloudtrail-crossaccount-example1"></a>

即使存储桶拥有者不具有执行相同对象 API 操作的权限，CloudTrail 也会将日志传递给存储桶拥有者。请考虑以下跨账户情形：
+ 账户 A 拥有该存储桶。
+ 账户 B（请求者）尝试访问该存储桶中的对象。
+ 账户 C 拥有该对象。账户 C 可能与账户 A 是同一个账户，也可能不是同一个账户。

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

### 示例 2：CloudTrail 没有使设置对象 ACL 时使用的电子邮件地址激增
<a name="cloudtrail-crossaccount-example2"></a>

请考虑以下跨账户情形：
+ 账户 A 拥有该存储桶。
+  账户 B（请求者）使用电子邮件地址发送了一个设置对象 ACL 授权的请求。有关 ACL 的更多信息，请参阅 [访问控制列表 (ACL) 概述](acl-overview.md)。

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

# Amazon S3 和 S3 on Outposts 的 CloudTrail 日志文件条目
<a name="cloudtrail-logging-understanding-s3-entries"></a>

**重要**  
Amazon S3 现在将具有 Amazon S3 托管密钥的服务器端加密（SSE-S3）作为 Amazon S3 中每个存储桶的基本加密级别。从 2023 年 1 月 5 日起，上传到 Amazon S3 的所有新对象都将自动加密，不会产生额外费用，也不会影响性能。S3 存储桶默认加密配置和上传的新对象的自动加密状态可在 CloudTrail 日志、S3 清单、S3 Storage Lens 存储统计管理工具和 Amazon S3 控制台中查看，并可用作 AWS CLI 和 AWS SDK 中的附加 Amazon S3 API 响应标头。有关更多信息，请参阅[默认加密常见问题解答](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html)。

一个事件表示一个来自任何源的请求，包括有关所请求的 API 操作、操作的日期和时间、请求参数等方面的信息。CloudTrail 日志文件不是公用 API 调用的有序堆栈跟踪，因此事件不会按任何特定顺序显示。

**注意**  
要查看 Amazon S3 Express One Zone 存储类的 CloudTrail 日志文件示例，请参阅 [CloudTrail log file examples for S3 Express One Zone](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-log-files.html)。

有关更多信息，请参阅以下示例。

**Topics**
+ [示例：Amazon S3 的 CloudTrail 日志文件条目](#example-ct-log-s3)

## 示例：Amazon S3 的 CloudTrail 日志文件条目
<a name="example-ct-log-s3"></a>

下面的示例显示一个 CloudTrail 日志条目，该条目演示了 [GET 服务](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTServiceGET.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTacl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTacl.html) 和 [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETversioningStatus.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETversioningStatus.html) 操作。

```
{
    "Records": [
    {
        "eventVersion": "1.03",
        "userIdentity": {
            "type": "IAMUser",
            "principalId": "111122223333",
            "arn": "arn:aws:iam::111122223333:user/myUserName",
            "accountId": "111122223333",
            "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
            "userName": "myUserName"
        },
        "eventTime": "2019-02-01T03:18:19Z",
        "eventSource": "s3.amazonaws.com",
        "eventName": "ListBuckets",
        "awsRegion": "us-west-2",
        "sourceIPAddress": "127.0.0.1",
        "userAgent": "[]",
        "requestParameters": {
            "host": [
                "s3.us-west-2.amazonaws.com"
            ]
        },
        "responseElements": null,
        "additionalEventData": {
            "SignatureVersion": "SigV2",
            "AuthenticationMethod": "QueryString",
            "aclRequired": "Yes"
    },
        "requestID": "47B8E8D397DCE7A6",
        "eventID": "cdc4b7ed-e171-4cef-975a-ad829d4123e8",
        "eventType": "AwsApiCall",
        "recipientAccountId": "444455556666",
        "tlsDetails": {
            "tlsVersion": "TLSv1.2",
            "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
            "clientProvidedHostHeader": "s3.amazonaws.com"
    }      
    },
    {
       "eventVersion": "1.03",
       "userIdentity": {
            "type": "IAMUser",
            "principalId": "111122223333",
            "arn": "arn:aws:iam::111122223333:user/myUserName",
            "accountId": "111122223333",
            "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
            "userName": "myUserName"
        },
      "eventTime": "2019-02-01T03:22:33Z",
      "eventSource": "s3.amazonaws.com",
      "eventName": "PutBucketAcl",
      "awsRegion": "us-west-2",
      "sourceIPAddress": "",
      "userAgent": "[]",
      "requestParameters": {
          "bucketName": "",
          "AccessControlPolicy": {
              "AccessControlList": {
                  "Grant": {
                      "Grantee": {
                          "xsi:type": "CanonicalUser",
                          "xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
                          "ID": "d25639fbe9c19cd30a4c0f43fbf00e2d3f96400a9aa8dabfbbebe1906Example"
                       },
                      "Permission": "FULL_CONTROL"
                   }
              },
              "xmlns": "http://s3.amazonaws.com/doc/2006-03-01/",
              "Owner": {
                  "ID": "d25639fbe9c19cd30a4c0f43fbf00e2d3f96400a9aa8dabfbbebe1906Example"
              }
          },
          "host": [
              "s3.us-west-2.amazonaws.com"
          ],
          "acl": [
              ""
          ]
      },
      "responseElements": null,
      "additionalEventData": {
          "SignatureVersion": "SigV4",
          "CipherSuite": "ECDHE-RSA-AES128-SHA",
          "AuthenticationMethod": "AuthHeader"
      },
      "requestID": "BD8798EACDD16751",
      "eventID": "607b9532-1423-41c7-b048-ec2641693c47",
      "eventType": "AwsApiCall",
      "recipientAccountId": "111122223333",
      "tlsDetails": {
            "tlsVersion": "TLSv1.2",
            "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
            "clientProvidedHostHeader": "s3.amazonaws.com"
    }              
    },
    {
      "eventVersion": "1.03",
      "userIdentity": {
          "type": "IAMUser",
          "principalId": "111122223333",
          "arn": "arn:aws:iam::111122223333:user/myUserName",
          "accountId": "111122223333",
          "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
          "userName": "myUserName"
        },
      "eventTime": "2019-02-01T03:26:37Z",
      "eventSource": "s3.amazonaws.com",
      "eventName": "GetBucketVersioning",
      "awsRegion": "us-west-2",
      "sourceIPAddress": "",
      "userAgent": "[]",
      "requestParameters": {
          "host": [
              "s3.us-west-2.amazonaws.com"
          ],
          "bucketName": "amzn-s3-demo-bucket1",
          "versioning": [
              ""
          ]
      },
      "responseElements": null,
      "additionalEventData": {
          "SignatureVersion": "SigV4",
          "CipherSuite": "ECDHE-RSA-AES128-SHA",
          "AuthenticationMethod": "AuthHeader"
    },
      "requestID": "07D681279BD94AED",
      "eventID": "f2b287f3-0df1-4961-a2f4-c4bdfed47657",
      "eventType": "AwsApiCall",
      "recipientAccountId": "111122223333",
      "tlsDetails": {
            "tlsVersion": "TLSv1.2",
            "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
            "clientProvidedHostHeader": "s3.amazonaws.com"
    }                 
    }
  ]
}
```

# 为 S3 存储桶和对象启用 CloudTrail 事件日志记录
<a name="enable-cloudtrail-logging-for-s3"></a>

您可以使用 CloudTrail 数据事件获取有关 Amazon S3 中存储桶和对象级别请求的信息。要为您的所有存储桶或特定存储桶列表启用 CloudTrail 数据事件，您必须[在 CloudTrail 中手动创建跟踪记录](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-a-trail-using-the-console-first-time.html)。

**注意**  
CloudTrail 的默认设置是仅查找管理事件。请检查以确保已为您的账户启用数据事件。
 利用正在生成高工作负载的 S3 存储桶，您可以在很短时间内快速生成数千条日志。请注意您为某个繁忙存储桶启用 CloudTrail 数据事件所选择的时长。

 CloudTrail 将 Amazon S3 数据事件日志存储在您选择的 S3 存储桶中。考虑在单独的 AWS 账户中使用一个存储桶将多个存储桶中您可能拥有的事件整理到一个集中位置，以便更轻松地进行查询和分析。AWS Organizations 可帮助您创建与拥有您所监控的存储桶的账户关联的 AWS 账户。有关更多信息，请参阅《AWS Organizations 用户指南》**中的[什么是 AWS Organizations？](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)。

在 CloudTrail 中记录跟踪的数据事件时，您可以选择使用高级事件选择器或基本事件选择器，来记录存储在通用存储桶中的对象的数据事件。要记录存储在目录存储桶中的对象的数据事件，必须使用高级事件选择器。有关更多信息，请参阅[使用 AWS CloudTrail 为 S3 Express One Zone 记录日志](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone-logging.html)。

在 CloudTrail 控制台中使用高级事件选择器创建跟踪时，在数据事件部分中，您可以在**记录选择器模板**中选择**记录所有事件**，来记录所有对象级事件。在 CloudTrail 中使用基本事件选择器创建跟踪时，在数据事件部分中，您可以选中**选择您账户中的所有 S3 存储桶**复选框以记录所有对象级事件。

**注意**  
最佳实践是为 AWS CloudTrail 数据事件存储桶创建生命周期配置。配置生命周期配置，以便在您认为需要审计日志文件的时间段之后定期删除这些日志文件。这样做可以减少 Athena 为每个查询分析的数据量。有关更多信息，请参阅 [在存储桶上设置 S3 生命周期配置](how-to-set-lifecycle-configuration-intro.md)。
有关日志记录格式的更多信息，请参阅[使用 AWS CloudTrail 记录 Amazon S3 API 调用](cloudtrail-logging.md)。
有关如何查询 CloudTrail 日志的示例，请参阅 *AWS 大数据博客*文章[使用 AWS CloudTrail 和 Amazon Athena 分析安全性、合规性和操作活动](https://aws.amazon.com/blogs/big-data/aws-cloudtrail-and-amazon-athena-dive-deep-to-analyze-security-compliance-and-operational-activity/)。

## 使用控制台为存储桶中的对象启用日志记录功能
<a name="enable-cloudtrail-events"></a>

可以使用 AWS CloudTrail 控制台配置 CloudTrail 跟踪来记录 S3 存储桶中对象的数据事件。CloudTrail 支持记录 Amazon S3 对象级别 API 操作，例如 `GetObject`、`DeleteObject` 和 `PutObject`。这些事件称为*数据事件*。

默认情况下，CloudTrail 跟踪不会记录数据事件，但您可以将跟踪配置为记录您指定的 S3 存储桶的数据事件，或记录 AWS 账户 中所有 Amazon S3 存储桶的数据事件。有关更多信息，请参阅 [使用 AWS CloudTrail 记录 Amazon S3 API 调用](cloudtrail-logging.md)。

CloudTrail 不会在 CloudTrail 事件历史记录中填充数据事件。此外，并非所有存储桶级别的操作都会填充在 CloudTrail 事件历史记录中。有关 CloudTrail 日志记录跟踪的 Amazon S3 存储桶级 API 操作的更多信息，请参阅[CloudTrail 日志记录跟踪的 Amazon S3 存储桶级操作](cloudtrail-logging-s3-info.md#cloudtrail-bucket-level-tracking)。有关如何查询 CloudTrail 日志的更多信息，请参阅关于[使用 Amazon CloudWatch Logs 筛选条件模式和 Amazon Athena 查询 CloudTrail 日志](https://aws.amazon.com/premiumsupport/knowledge-center/find-cloudtrail-object-level-events/)的 AWS 知识中心文章。

**注意**  
如果您使用 AWS CloudTrail 记录数据活动，则 Amazon S3 `DeleteObjects` 数据事件的事件记录同时包括 `DeleteObjects` 事件和作为该操作的一部分删除的每个对象的 `DeleteObject` 事件。您可以从事件记录中排除有关已删除对象的额外可见性。有关更多信息，请参阅《AWS CloudTrail User Guide》**中的 [AWS CLI examples for filtering data events](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/filtering-data-events.html#filtering-data-events-deleteobjects)。

要为 S3 通用存储桶或 S3 目录存储桶中的对象启用 CloudTrail 数据事件日志记录，请参阅《AWS CloudTrail User Guide》**中的 [Creating a trail with the CloudTrail console](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-a-trail-using-the-console-first-time)。

有关在 S3 目录存储桶中记录对象的更多信息，请参阅[使用 AWS CloudTrail 对目录存储桶进行日志记录](s3-express-one-zone-logging.md)。

有关使用 CloudTrail 控制台配置跟踪以记录 S3 数据事件的信息，请参阅《AWS CloudTrail User Guide》**中的 [Logging data events](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html)。

要对 S3 存储桶中的对象禁用 CloudTrail 数据事件日志记录，请参阅《AWS CloudTrail User Guide》**中的 [Deleting a trail with the CloudTrail console](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-delete-trails-console.html)。

**重要**  
记录数据事件将收取额外费用。有关更多信息，请参阅 [AWS CloudTrail 定价](https://aws.amazon.com/cloudtrail/pricing/)。

有关使用 S3 存储桶进行 CloudTrail 日志记录的更多信息，请参阅以下主题：
+ [创建通用存储桶](create-bucket-overview.md)
+ [查看 S3 通用存储桶的属性](view-bucket-properties.md)
+ [使用 AWS CloudTrail 记录 Amazon S3 API 调用](cloudtrail-logging.md)
+ 《AWS CloudTrail User Guide》**中的 [Working with CloudTrail log files](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-working-with-log-files.html)

# 使用 CloudTrail 识别 Amazon S3 请求
<a name="cloudtrail-request-identification"></a>

在 Amazon S3 中，可以使用 AWS CloudTrail 事件日志识别请求。AWS CloudTrail 是识别 Amazon S3 请求的首选方法，但是如果您使用的是 Amazon S3 服务器访问日志，请参阅[使用 Amazon S3 服务器访问日志来确定请求](using-s3-access-logs-to-identify-requests.md)。

**Topics**
+ [识别 CloudTrail 日志中向 Amazon S3 发出的请求](#identify-S3-requests-using-in-CTlog)
+ [使用 CloudTrail 识别 Amazon S3 签名版本 2 请求](#cloudtrail-identification-sigv2-requests)
+ [使用 CloudTrail 识别对 S3 对象的访问权限](#cloudtrail-identification-object-access)

## 识别 CloudTrail 日志中向 Amazon S3 发出的请求
<a name="identify-S3-requests-using-in-CTlog"></a>

在设置 CloudTrail 以将事件传输到存储桶后，您应开始看到对象进入您在 Amazon S3 控制台上的目标存储桶。其格式如下所示：

`s3://amzn-s3-demo-bucket1/AWSLogs/111122223333/CloudTrail/Region/yyyy/mm/dd` 

由 CloudTrail 记录的事件作为使用 gzipped 进行压缩的 JSON 对象存储在您的 S3 存储桶中。要高效地查找请求，您应使用 Amazon Athena 等服务来为 CloudTrail 日志建立索引并查询。

有关 CloudTrail 和 Athena 的更多信息，请参阅《Amazon Athena 用户指南》**中的[使用分区投影在 Athena 中创建 AWS CloudTrail 日志表](https://docs.aws.amazon.com/athena/latest/ug/cloudtrail-logs.html#create-cloudtrail-table-partition-projection)。

## 使用 CloudTrail 识别 Amazon S3 签名版本 2 请求
<a name="cloudtrail-identification-sigv2-requests"></a>

您可以使用 CloudTrail 事件日志来确定已用于在 Amazon S3 中签署请求的 API 签名版本。此功能非常重要，因为对 Signature Version 2 的支持将会关闭（弃用）。之后，Amazon S3 将不再接受使用 Signature Version 2 的请求，并且所有请求必须使用 *Signature Version 4* 进行签署。

我们*强烈*建议您使用 CloudTrail 来帮助确定您的任何工作流是否正在使用 Signature Version 2 进行签署。请通过将您的库和代码升级为使用 Signature Version 4 进行纠正，以防对您的业务产生任何影响。

有关更多信息，请参阅 AWS re:Post 中的[公告：适用于 Amazon S3 的 AWS CloudTrail 为增强安全性审计添加了新字段](https://forums.aws.amazon.com/ann.jspa?annID=6551)。

**注意**  
Amazon S3 的 CloudTrail 事件在请求详细信息中的键名称“`additionalEventData`”之下包含签名版本。要针对为 Amazon S3 中的对象发出的请求（如 `GET`、`PUT` 和 `DELETE` 请求）查找签名版本，您必须启用 CloudTrail 数据事件。（默认情况下，此特征处于关闭状态。）

AWS CloudTrail 是确定签名版本 2 请求的首选方法。如果您使用的是 Amazon S3 服务器访问日志，请参阅[使用 Amazon S3 访问日志确定签名版本 2 请求](using-s3-access-logs-to-identify-requests.md#using-s3-access-logs-to-identify-sigv2-requests)。

**Topics**
+ [用于识别 Amazon S3 签名版本 2 请求的 Athena 查询示例](#ct-examples-identify-sigv2-requests)
+ [对签名版本 2 数据进行分区](#partitioning-sigv2-data)

### 用于识别 Amazon S3 签名版本 2 请求的 Athena 查询示例
<a name="ct-examples-identify-sigv2-requests"></a>

**Example — 选择所有签名版本 2 事件，并仅打印 `EventTime`、`S3_Action`、`Request_Parameters`、`Region`、`SourceIP` 和 `UserAgent`**  
在以下 Athena 查询中，将 *`s3_cloudtrail_events_db.cloudtrail_table`* 替换为您的 Athena 详细信息，并根据需要增加或删除限制。  

```
SELECT EventTime, EventName as S3_Action, requestParameters as Request_Parameters, awsregion as AWS_Region, sourceipaddress as Source_IP, useragent as User_Agent
FROM s3_cloudtrail_events_db.cloudtrail_table
WHERE eventsource='s3.amazonaws.com'
AND json_extract_scalar(additionalEventData, '$.SignatureVersion')='SigV2'
LIMIT 10;
```

**Example — 选择发送签名版本 2 流量的所有请求者**  
   

```
SELECT useridentity.arn, Count(requestid) as RequestCount
FROM s3_cloudtrail_events_db.cloudtrail_table
WHERE eventsource='s3.amazonaws.com'
    and json_extract_scalar(additionalEventData, '$.SignatureVersion')='SigV2'
Group by useridentity.arn
```

### 对签名版本 2 数据进行分区
<a name="partitioning-sigv2-data"></a>

如果您有大量要查询的数据，则可以通过创建分区表来减少 Athena 的成本和运行时间。

为此，创建一个包含分区的新表，如下所示。

```
   CREATE EXTERNAL TABLE s3_cloudtrail_events_db.cloudtrail_table_partitioned(
        eventversion STRING,
        userIdentity STRUCT<
            type:STRING,
            principalid:STRING,
            arn:STRING,
            accountid:STRING,
            invokedby:STRING,
            accesskeyid:STRING,
            userName:STRING,
         sessioncontext:STRUCT<
                    attributes:STRUCT< 
                    mfaauthenticated:STRING,
                    creationdate:STRING>,
                    sessionIssuer:STRUCT<
                    type:STRING,
                    principalId:STRING,
                    arn:STRING,
                    accountId:STRING,
                    userName:STRING>
                >
             >,
        eventTime STRING,
        eventSource STRING,
        eventName STRING,
        awsRegion STRING,
        sourceIpAddress STRING,
        userAgent STRING,
        errorCode STRING,
        errorMessage STRING,
        requestParameters STRING,
        responseElements STRING,
        additionalEventData STRING,
        requestId STRING,
        eventId STRING,
        resources ARRAY<STRUCT<ARN:STRING,accountId: STRING,type:STRING>>, 
        eventType STRING,
        apiVersion STRING,
        readOnly STRING,
        recipientAccountId STRING,
        serviceEventDetails STRING,
        sharedEventID STRING,
        vpcEndpointId STRING
    )   
    PARTITIONED BY (region string, year string, month string, day string)
    ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' 
    STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat'
    OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
    LOCATION 's3://amzn-s3-demo-bucket1/AWSLogs/111122223333/';
```

然后，单独创建分区。您无法从尚未创建的日期获取结果。

```
ALTER TABLE s3_cloudtrail_events_db.cloudtrail_table_partitioned ADD
    PARTITION (region= 'us-east-1', year= '2019', month= '02', day= '19') LOCATION 's3://amzn-s3-demo-bucket1/AWSLogs/111122223333/CloudTrail/us-east-1/2019/02/19/'
    PARTITION (region= 'us-west-1', year= '2019', month= '02', day= '19') LOCATION 's3://amzn-s3-demo-bucket1/AWSLogs/111122223333/CloudTrail/us-west-1/2019/02/19/'
    PARTITION (region= 'us-west-2', year= '2019', month= '02', day= '19') LOCATION 's3://amzn-s3-demo-bucket1/AWSLogs/111122223333/CloudTrail/us-west-2/2019/02/19/'
    PARTITION (region= 'ap-southeast-1', year= '2019', month= '02', day= '19') LOCATION 's3://amzn-s3-demo-bucket1/AWSLogs/111122223333/CloudTrail/ap-southeast-1/2019/02/19/'
    PARTITION (region= 'ap-southeast-2', year= '2019', month= '02', day= '19') LOCATION 's3://amzn-s3-demo-bucket1/AWSLogs/111122223333/CloudTrail/ap-southeast-2/2019/02/19/'
    PARTITION (region= 'ap-northeast-1', year= '2019', month= '02', day= '19') LOCATION 's3://amzn-s3-demo-bucket1/AWSLogs/111122223333/CloudTrail/ap-northeast-1/2019/02/19/'
    PARTITION (region= 'eu-west-1', year= '2019', month= '02', day= '19') LOCATION 's3://amzn-s3-demo-bucket1/AWSLogs/111122223333/CloudTrail/eu-west-1/2019/02/19/'
    PARTITION (region= 'sa-east-1', year= '2019', month= '02', day= '19') LOCATION 's3://amzn-s3-demo-bucket1/AWSLogs/111122223333/CloudTrail/sa-east-1/2019/02/19/';
```

然后，您可以根据这些分区发出请求，并且无需加载完整的存储桶。

```
SELECT useridentity.arn,
Count(requestid) AS RequestCount
FROM s3_cloudtrail_events_db.cloudtrail_table_partitioned
WHERE eventsource='s3.amazonaws.com'
AND json_extract_scalar(additionalEventData, '$.SignatureVersion')='SigV2'
AND region='us-east-1'
AND year='2019'
AND month='02'
AND day='19'
Group by useridentity.arn
```

## 使用 CloudTrail 识别对 S3 对象的访问权限
<a name="cloudtrail-identification-object-access"></a>

您可以使用 AWS CloudTrail 事件日志确定对于诸如 `GetObject`、`DeleteObject` 和 `PutObject` 等数据事件的 Amazon S3 对象访问请求，并发现有关这些请求的进一步信息。

**注意**  
如果您使用 AWS CloudTrail 记录数据活动，则 Amazon S3 `DeleteObjects` 数据事件的事件记录同时包括 `DeleteObjects` 事件和作为该操作的一部分删除的每个对象的 `DeleteObject` 事件。您可以从事件记录中排除有关已删除对象的额外可见性。有关更多信息，请参阅《AWS CloudTrail User Guide》**中的 [AWS CLI examples for filtering data events](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/filtering-data-events.html#filtering-data-events-deleteobjects)。

以下示例说明如何从 AWS CloudTrail 事件日志获取对于 Amazon S3 的所有 `PUT` 对象请求。

**Topics**
+ [用于识别 Amazon S3 对象访问请求的 Athena 查询示例](#ct-examples-identify-object-access-requests)

### 用于识别 Amazon S3 对象访问请求的 Athena 查询示例
<a name="ct-examples-identify-object-access-requests"></a>

在以下 Athena 查询示例中，将 *`s3_cloudtrail_events_db.cloudtrail_table`* 替换为您的 Athena 详细信息，并根据需要修改日期范围。

**Example — 选择所有具有 `PUT` 对象访问请求的事件，并仅打印 `EventTime`、`EventSource`、`SourceIP`、`UserAgent`、`BucketName`、`object` 和 `UserARN`**  

```
SELECT
  eventTime, 
  eventName, 
  eventSource, 
  sourceIpAddress, 
  userAgent, 
  json_extract_scalar(requestParameters, '$.bucketName') as bucketName, 
  json_extract_scalar(requestParameters, '$.key') as object,
  userIdentity.arn as userArn
FROM
  s3_cloudtrail_events_db.cloudtrail_table
WHERE
  eventName = 'PutObject'
  AND eventTime BETWEEN '2019-07-05T00:00:00Z' and '2019-07-06T00:00:00Z'
```

**Example — 选择所有具有 `GET` 对象访问请求的事件，并仅打印 `EventTime`、`EventSource`、`SourceIP`、`UserAgent`、`BucketName`、`object` 和 `UserARN`**  

```
SELECT
  eventTime, 
  eventName, 
  eventSource, 
  sourceIpAddress, 
  userAgent, 
  json_extract_scalar(requestParameters, '$.bucketName') as bucketName, 
  json_extract_scalar(requestParameters, '$.key') as object,
  userIdentity.arn as userArn
FROM
  s3_cloudtrail_events_db.cloudtrail_table
WHERE
  eventName = 'GetObject'
  AND eventTime BETWEEN '2019-07-05T00:00:00Z' and '2019-07-06T00:00:00Z'
```

**Example — 选择特定时段内向存储桶发送的所有匿名请求者事件，并仅打印 `EventTime`、`EventName`、`EventSource`、`SourceIP`、`UserAgent`、`BucketName`、`UserARN` 和 `AccountID`**  

```
SELECT
  eventTime, 
  eventName, 
  eventSource, 
  sourceIpAddress, 
  userAgent, 
  json_extract_scalar(requestParameters, '$.bucketName') as bucketName, 
  userIdentity.arn as userArn,
  userIdentity.accountId
FROM
  s3_cloudtrail_events_db.cloudtrail_table
WHERE
  userIdentity.accountId = 'anonymous'
  AND eventTime BETWEEN '2019-07-05T00:00:00Z' and '2019-07-06T00:00:00Z'
```

**Example — 识别所有需要 ACL 进行授权的请求**  
 以下 Amazon Athena 查询示例说明如何识别向 S3 存储桶发出的所有请求，这些请求需要访问控制列表（ACL）进行授权。如果请求需要 ACL 进行授权，则 `additionalEventData` 中的 `aclRequired` 值为 `Yes`。如果不需要 ACL，则 `aclRequired` 不存在。您可以使用此信息将这些 ACL 权限迁移到相应的存储桶策略。创建这些存储桶策略后，您可以对这些存储桶禁用 ACL。有关禁用 ACL 的更多信息，请参阅[禁用 ACL 的先决条件](object-ownership-migrating-acls-prerequisites.md)。  

```
SELECT
  eventTime, 
  eventName, 
  eventSource, 
  sourceIpAddress, 
  userAgent, 
  userIdentity.arn as userArn,
  json_extract_scalar(requestParameters, '$.bucketName') as bucketName,
  json_extract_scalar(requestParameters, '$.key') as object,
  json_extract_scalar(additionalEventData, '$.aclRequired') as aclRequired
FROM 
  s3_cloudtrail_events_db.cloudtrail_table
WHERE
  json_extract_scalar(additionalEventData, '$.aclRequired') = 'Yes'
  AND eventTime BETWEEN '2022-05-10T00:00:00Z' and '2022-08-10T00:00:00Z'
```

**注意**  
也可以使用这些查询示例进行安全监控。您可以查看意外或未经授权的 IP 地址或请求者发出的 `PutObject` 或 `GetObject` 调用的结果，以及确定向存储桶发出的任何匿名请求。
 此查询仅从启用了日志记录的时间检索信息。

如果您使用的是 Amazon S3 服务器访问日志，请参阅 [使用 Amazon S3 访问日志确定对象访问请求](using-s3-access-logs-to-identify-requests.md#using-s3-access-logs-to-identify-objects-access)。