我有两个亚马逊账户Account-A和Account-B。我想让Account-B完全控制Account-A中所有与S3相关的操作,例如,Account-B可以创建/删除/列出属于Account-A的bucket。
你能告诉我它是怎么做的吗?到目前为止,我只能找到如何授予对单个S3存储桶的跨帐户访问权限,而不能授予所有S3功能。
从AWS文档演练开始,然后将bucket策略设置为(我对文档的更改有//
注释(:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Example permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountB-ID:root"
},
"Action": [
"s3:*", // ALL S3 actions
],
"Resource": [
"*" // ALL resources with an 's3:' operation
]
}
]
}
有两种方法可以为AmazonS3分配跨帐户权限:
使用Bucket策略
- 将Bucket策略添加到每个所需的Bucket,以授予其他帐户权限
- 向帐户B中所需的IAM用户和IAM角色添加权限,允许他们访问帐户A中的存储桶
请注意,两个方向都需要权限。
此方法的缺点是,Bucket Policy必须应用于您想要使其可用的每个Bucket。此外,由于没有授予访问权限的存储桶策略,因此此将不适用于创建新存储桶。
使用IAM角色
- 在Account-A(
Role-A
(中创建一个IAM角色,该角色具有所有所需的S3权限,并创建一个信任Account-B的信任策略 - 从Account-B,在
Role-A
上调用AssumeRole()
- 使用返回的凭据管理Account-A中的S3资源
这不需要任何Bucket策略,但需要调用AssumeRole()
。
另请参阅:提供对S3存储桶中对象的跨帐户访问