AWS CloudTrail
用户指南 (版本 1.0)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

创建用于向您自己的账户授予访问权的访问策略

在方案 1 中,作为账户 A 中的管理用户,您具有对 CloudTrail 将账户 B 和账户 C 的日志文件写入到其中的 Amazon S3 存储桶的完全控制权。您需要将每个业务部门的日志文件共享至创建这些文件的业务部门。但您不希望部门能够读取任何其他部门的日志文件。

例如,要与账户 B 而非账户 C 共享账户 B 的日志文件,您必须在账户 A 中创建一个指定账户 B 为可信账户的新 IAM 角色。此角色信任策略指定可信任账户 B 来代入由账户 A 创建的角色,与以下示例类似。如果使用控制台创建角色,则将自动创建信任策略。如果您使用 SDK 创建角色,则必须将信任策略作为参数提供给 CreateRole API。如果您使用 CLI 创建角色,则必须在 create-role CLI 命令中指定信任策略。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-B-id:root" }, "Action": "sts:AssumeRole" } ] }

您还必须创建访问策略来指定账户 B 只能从账户 B 将其日志文件写入到的位置进行读取。访问策略将类似于以下内容。请注意,Resource ARN 包含账户 B 的 12 位数账户 ID,以及在聚合过程中为账户 B 启动 CloudTrail 时指定的前缀(如果有)。有关指定前缀的更多信息,请参阅在附加账户中启用 CloudTrail

重要

您必须确保访问策略中的前缀与您为账户 B 启动 CloudTrail 时指定的前缀完全相同。如果二者不同,则必须在账户 A 中编辑 IAM 角色访问策略来并入账户 B 的实际前缀。如果角色访问策略中的前缀与您为账户 B 启动 CloudTrail 时指定的前缀并不完全相同,则账户 B 将无法访问其日志文件。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::bucket-name/prefix/AWSLogs/account-B-id/*" }, { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::bucket-name" } ] }

您为账户 C 创建的角色将与已为账户 B 创建的角色基本相同。每个角色的访问策略必须包括适当的账户 ID 和前缀,以便每个账户只能从 CloudTrail 将该账户的日志文件写入到的位置进行读取。

在创建每个用户的角色并指定相应的信任和访问策略后,以及在每个账户的管理员向该账户中的 IAM 用户授予访问权后,账户 B 或账户 C 中的 IAM 用户可以编程方式代入角色。

在创建每个用户的角色并指定相应的信任和访问策略后,新的可信账户(B 或 C)中的 IAM 用户必须以编程方式代入角色才能读取 Amazon S3 存储桶中的日志文件。

有关更多信息,请参阅代入一个角色