从多个账户接收 CloudTrail 日志文件 - Amazon CloudTrail
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

从多个账户接收 CloudTrail 日志文件

您可以让 CloudTrail 将日志文件从多个 Amazon 账户传输到单个 Simple Storage Service(Amazon S3)存储桶中。例如,您拥有账户 ID 分别为 111111111111、222222222222、333333333333 和 444444444444 的四个 Amazon 账户,并且您需要配置 CloudTrail 以将日志文件从这四个账户传输到属于账户 111111111111 的存储桶。要完成此操作,请依次完成以下步骤:

  1. 在目标存储桶所属的账户(此示例中为 111111111111)中启动 CloudTrail。不要在任何其他账户中启动 CloudTrail。

    有关说明,请参阅创建跟踪

  2. 更新目标存储桶的存储桶策略,以便向 CloudTrail 授予跨账户权限。

    有关说明,请参阅设置适用于多个账户的存储桶策略

  3. 在所需的其他账户(此示例中为 222222222222、333333333333 和 444444444444)中启动 CloudTrail。在这些账户中将 CloudTrail 配置为使用属于您在步骤 1 中指定的账户(此示例中为 111111111111)的同一存储桶。

    有关说明,请参阅在附加账户中启用 CloudTrail

为其他账户调用的数据事件修订存储桶拥有者账户 ID

历史上,如果已在 Amazon S3 数据事件 API 调用程序的 Amazon 中启用 CloudTrail 数据事件,则 CloudTrail 会在数据事件(如 PutObject)中显示 S3 存储桶拥有者的账户 ID。即使存储桶拥有者账户没有启用 S3 数据事件,也会出现这种情况。

现在,如果满足以下两个条件,则 CloudTrail 会在 resources 块中删除 S3 存储桶拥有者的账户 ID:

  • 数据事件 API 调用来自 Amazon S3 存储桶拥有者之外的其他 Amazon 账户。

  • API 调用程序收到了一个仅适用于该调用程序账户的 AccessDenied 错误。

在其上面进行 API 调用的资源的拥有者仍收到完整的事件。

以下事件记录片段是一个预期行为的示例。在 Historic 片段中,将向不同账户中的 API 调用程序显示 S3 存储桶拥有者的账户 ID 123456789012。在当前行为示例中,不会显示存储桶拥有者的账户 ID。

# Historic "resources": [ { "type": "AWS::S3::Object", "ARNPrefix": "arn:aws:s3:::test-my-bucket-2/" }, { "accountId": "123456789012", "type": "AWS::S3::Bucket", "ARN": "arn:aws:s3:::test-my-bucket-2" } ]

以下是当前的行为。

# Current "resources": [ { "type": "AWS::S3::Object", "ARNPrefix": "arn:aws:s3:::test-my-bucket-2/" }, { "accountId": "", "type": "AWS::S3::Bucket", "ARN": "arn:aws:s3:::test-my-bucket-2" } ]