创建用于向第三方授予访问权限的访问策略
账户 A 必须为账户 Z(场景 2 中的第三方分析器)创建单独的 IAM 角色。在创建角色时,Amazon 会自动创建信任关系,以指定将信任账户 Z 来代入角色。该角色的访问策略指定了账户 Z 可执行的操作。有关创建角色和角色策略的更多信息,请参阅创建角色。
例如,由 Amazon 创建的信任关系可以指定,信任账户 Z 来担任由账户 A 创建的角色。以下是信任策略示例:
{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::
account-Z-id
:root"}, "Action": "sts:AssumeRole" }] }
如果在为账户 Z 创建角色时指定了外部 ID,则您的访问策略将包含一个添加的 Condition
元素,该元素将测试由账户 Z 分配的唯一 ID。此测试在代入角色时执行。以下示例访问策略包含 Condition
元素。
有关更多信息,请参阅 IAM 用户指南中的如何在向第三方授予对 Amazon 资源的访问权时使用外部 ID。
{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::
account-Z-id
:root"}, "Action": "sts:AssumeRole", "Condition": {"StringEquals": {"sts:ExternalId": "external-ID-issued-by-account-Z
"}} }] }
您还必须为账户 A 角色创建访问策略来指定账户 Z 可读取 Amazon S3 存储桶中的所有日志。访问策略应类似于以下示例。Resource
值结尾处的通配符 (*) 表示账户 Z 可访问已获得相应访问权的 S3 存储桶中的任何日志文件。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::
bucket-name
/*" }, { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::bucket-name
" } ] }
在为账户 Z 创建角色并指定相应的信任关系和访问策略后,账户 Z 中的 IAM 用户必须以编程方式代入角色才能读取存储桶中的日志文件。有关更多信息,请参阅 代入角色。