记录 Amazon S3 API呼叫使用 AWS CloudTrail - Amazon Simple Storage Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

记录 Amazon S3 API呼叫使用 AWS CloudTrail

Amazon S3 与 AWS CloudTrail,提供用户、角色或 AWS 服务 Amazon S3... CloudTrail 捕获API的子集 Amazon S3 作为事件,包括来自 Amazon S3 控制台和代码呼叫 Amazon S3 API。如果您创建一个跟踪,可以启用连续交付 CloudTrail 活动至 Amazon S3 包括 Amazon S3. 如果不配置跟踪,您仍可以查看最近的事件 CloudTrail 控制台 事件历史记录. 使用收集的信息 CloudTrail,您可以确定所做的请求 Amazon S3,提出请求的IP地址、作出请求的人员、在制作的时间以及其他详细信息。

要了解有关 CloudTrail 的更多信息(包括如何配置和启用),请参阅 。AWS CloudTrail User Guide.

Amazon S3 中的 信息CloudTrail

CloudTrail在您创建 AWS 账户时,即针对该账户启用了 。当支持的事件活动发生在 Amazon S3,该活动记录在 CloudTrail 事件与其他 AWS 服务事件 事件历史记录. 您可以在 AWS 账户中查看、搜索和下载最新事件。有关详细信息,请参阅 查看事件 CloudTrail 事件历史记录.

在您的 AWS 账户,包括活动 Amazon S3,创建一个步道。一个跟踪启用 CloudTrail 将日志文件交付给 Amazon S3 桶。默认情况下,在控制台中创建跟踪时,此跟踪应用于所有区域。路径记录来自 AWS 分区并将日志文件交付到 Amazon S3 您指定的桶。此外,您还可以配置其他 AWS 服务以进一步分析和采取所收集事件数据的进一步分析和采取行动 CloudTrail 日志。有关更多信息,请参阅以下内容:。

每个事件或日志条目都包含有关生成请求的人员的信息。身份信息帮助您确定以下内容:

  • 请求是使用根用户凭证还是 IAM 用户凭证发出的

  • 请求是使用角色还是联合身份用户的临时安全凭证发出的

  • 请求是否由其他 AWS 服务发出。

有关详细信息,请参阅 CloudTrail 用户身份元素.

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

Amazon S3 客户级别的操作跟踪 CloudTrail 记录

CloudTrail 记录帐户级别操作。 Amazon S3 记录与日志文件中的其他AWS服务记录一同写入。 CloudTrail 决定何时根据时间段和文件大小创建和写入新文件。

本部分中的表格列出了 Amazon S3 支持登录的帐户级别操作 CloudTrail.

Amazon S3 客户级别的API操作跟踪者 CloudTrail 日志记录将显示为以下事件名称:

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

默认情况下, CloudTrail 记录桶级操作。 Amazon S3 记录与日志文件中的其他AWS服务记录一同写入。 CloudTrail 决定何时根据时间段和文件大小创建和写入新文件。

本部分中的表格列出了 Amazon S3 支持以下方面的桶级操作 CloudTrail.

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

Amazon S3 日志记录跟踪的 CloudTrail 对象级操作

您也可以获得 CloudTrail 对象级别日志 Amazon S3 操作。要执行此操作,请指定跟踪的 Amazon S3 对象。当对象级操作在您的账户中发生时,CloudTrail 将评估您的跟踪设置。如果事件与您在跟踪中指定的对象相匹配,则记录该事件。有关详细信息,请参阅 如何为带AWSCloudTrail数据事件的S3桶启用对象级日志记录?Amazon Simple Storage Service 控制台用户指南记录路径数据事件AWS CloudTrail User Guide.

下表列出了记录为 CloudTrail 事件:

除了这些操作之外,您还可以使用以下桶级操作来获取 CloudTrail 日志作为对象级别 Amazon S3 在某些条件下的操作:

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

以下是涉及跨客户情境中对象级API调用的特殊用例,以及如何使用 CloudTrail 报告日志。 CloudTrail 始终将日志交付给请求人(进行API调用)。在设置跨账户访问时,请考虑本部分中的示例。

注意

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

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

CloudTrail仅当存储桶拥有者具有对同一对象 API 的权限时, 才会将访问日志提供给存储桶拥有者。请考虑以下跨账户情形:

  • 账户 A 拥有该存储桶。

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

CloudTrail 始终将对象级别 API 访问日志提供给请求者。此外,仅当存储桶拥有者具有对该对象执行同一 API 操作的权限时,CloudTrail 才会将相同的日志提供给存储桶拥有者。

注意

如果存储桶拥有者也是对象拥有者,存储桶拥有者将获得对象访问日志。否则,存储桶拥有者必须通过对象 ACL 获取权限,以便让相同的对象 API 获取相同的对象访问 API 日志。

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

请考虑以下跨账户情形:

  • 账户 A 拥有该存储桶。

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

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

CloudTrail 对 Amazon S3 SOAP API 调用的跟踪

CloudTrail 追踪 Amazon S3 SOAPAPI呼叫。 Amazon S3HTTP 上的 SOAP 支持已弃用,但是仍可在 HTTPS 上使用。有关 Amazon S3 SOAP 支持的更多信息,请参阅 。附录 A:使用 SOAP API.

重要

SOAP 不支持较新的 Amazon S3 功能。我们建议您使用 REST API 或 AWS 开发工具包。

Amazon S3 日志记录跟踪的 CloudTrail SOAP 操作
SOAP API 名称 在 CloudTrail 日志中使用的 API 事件名称

ListAllMyBuckets

ListBuckets

CreateBucket

CreateBucket

DeleteBucket

DeleteBucket

GetBucketAccessControlPolicy

GetBucketAcl

SetBucketAccessControlPolicy

PutBucketAcl

GetBucketLoggingStatus

GetBucketLogging

SetBucketLoggingStatus

PutBucketLogging

使用 CloudTrail 日志 Amazon S3 服务器访问日志和 CloudWatch Logs

AWS CloudTrail 日志提供用户、角色或 AWS 服务 Amazon S3,虽然有 Amazon S3 服务器访问日志提供对S3存储区所做请求的详细记录。有关不同日志的工作方式及其属性、性能和成本的更多信息,请参阅使用 进行日志记录Amazon S3.

您可以使用 AWS CloudTrail 使用服务器访问日志的日志 Amazon S3... CloudTrail 日志为您提供详细的API跟踪 Amazon S3 桶级别和对象级操作。 的服务器访问日志可让您了解对于 Amazon S3 中您的数据的对象级别操作。Amazon S3. 有关服务器访问日志的更多信息,请参阅 Amazon S3 服务器访问日志记录.

您也可以使用 CloudTrail 与 CloudWatch 对于 Amazon S3... CloudTrail 与 CloudWatch Logs 提供通过以下方式捕获的S3桶级API活动 CloudTrail 到 CloudWatch 日志流 CloudWatch 您指定的日志组。您可以创建用于监控特定 API 活动的 CloudWatch 警报,并在此特定 API 活动发生时收到电子邮件通知。有关用于监控特定 API 活动的 CloudWatch 警报的更多信息,请参阅 。AWS CloudTrail User Guide. 有关使用 CloudWatch 带有 Amazon S3,参见 使用 监控指标Amazon CloudWatch.

示例:Amazon S3 日志文件条目

跟踪是一种配置,可以将事件交付到日志文件中 Amazon S3 您指定的桶。 CloudTrail 日志文件包含一个或多个日志条目。事件 表示来自任何源的单个请求。它包括有关所请求的操作、操作的日期和时间、请求参数等方面的信息。CloudTrail 日志文件不是公有 API 调用的有序堆栈跟踪,因此它们不会以任何特定顺序显示。

以下示例显示 CloudTrail 显示的日志条目 获得服务put池ACL,和 获取桶控版本 操作。

{ "Records": [ { "eventVersion": "1.03", "userIdentity": { "type": "IAMUser", "principalId": "111122223333", "arn": "arn:aws-cn: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" }, "requestID": "47B8E8D397DCE7A6", "eventID": "cdc4b7ed-e171-4cef-975a-ad829d4123e8", "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }, { "eventVersion": "1.03", "userIdentity": { "type": "IAMUser", "principalId": "111122223333", "arn": "arn:aws-cn: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" }, { "eventVersion": "1.03", "userIdentity": { "type": "IAMUser", "principalId": "111122223333", "arn": "arn:aws-cn: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": "", "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" } ] }