问题描述
我有两个亚马逊帐户Account-A和Account-B。我想让帐户B完全控制帐户A中所有与S3相关的操作,例如帐户B可以创建/删除/列出属于帐户A的存储桶。
您能指出我的做法吗?到目前为止,我只能找到如何授予对单个S3存储桶的跨帐户访问权限,而不是授予所有S3功能的访问权限。
解决方法
从AWS doc walkthrough开始,然后将存储桶策略设置为(我在文档中所做的更改具有//
注释):
{
"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
]
}
]
}
,
有两种方法为Amazon S3分配跨账户权限:
使用存储桶策略
- 向每个所需的存储桶添加一个存储桶策略 ,以授予其他帐户权限
- 向所需的IAM用户和帐户B中的IAM角色添加权限,以允许他们访问帐户A中的存储桶
请注意,权限是双向要求。
此方法的缺点是必须将存储桶策略应用于要提供的每个 存储桶。另外,由于没有存储桶策略可授予访问权限,因此此不适用于创建新存储桶。
使用IAM角色
- 在具有所有所需S3权限的帐户A(
Role-A
)中创建一个IAM角色,并信任一个信任帐户B的信任策略 - 在帐户B中致电
AssumeRole()
上的Role-A
- 使用返回的凭据来管理帐户A中的S3资源
这不需要任何存储桶策略,但要求调用AssumeRole()
。