给S3完全访问交叉帐户 使用存储桶策略使用IAM角色

问题描述

我有两个亚马逊帐户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()

另请参阅:Provide cross-account access to objects in S3 buckets