AWS S3 GetBucketLifecycleConfiguration访问被拒绝

时间:2018-10-05 09:32:39

标签: amazon-web-services

我们有2个AWS账户“ A”和“ B”。我们在帐户“ B”中设置了一个S3存储桶,他的ACL表示以下内容:

Access To Your Account     List Objects    Write Objects    Read Bucket Permissions    Write Bucket Permissions 
"B"                        "YES"           "YES"            "YES"                       "YES"

Access for other AWS accounts     List Objects    Write Objects    Read Bucket Permissions    Write Bucket Permissions 
"A"                               "YES"           "YES"            "YES"                       "YES"

现在我正在尝试执行以下操作:

aws s3api get-bucket-lifecycle-configuration --bucket <name>

使用帐户“ A”中用户的AWS凭证。但是,我收到错误

An error occurred (AccessDenied) when calling the GetBucketLifecycleConfiguration operation: Access Denied

但不是所有来自帐户“ A”的用户都可以访问该存储桶吗?

2 个答案:

答案 0 :(得分:1)

在所有者(帐户A)授予存储桶中的跨帐户权限后,帐户B的管理员继承了所有权限,但是帐户B的所有其他用户需要具有以下权限存储桶策略由其管理员明确附加。

这意味着您需要以管理员身份登录到帐户B的控制台,并向所选用户授予此内联策略(更改存储桶名称):

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Sid": "Example",
         "Effect": "Allow",
         "Action": [
            "s3:*"
         ],
         "Resource": [
            "arn:aws:s3:::MYBUCKETNAME"
         ]
      }
   ]
} 

({"s3:*"授予完全访问权限,您可以根据需要将其更改为一些更受限制的策略)

AWS docs示例中描述了授予此类权限的整个工作流程。

答案 1 :(得分:1)

使用ACL允许S3上的跨帐户访问时,以下是帐户A中IAM用户将继承的唯一权限:

  1. 放置对象,删除对象
  2. 列表桶
  3. get-bucket-acl
  4. put-bucket-acl

上述4以外的任何API调用都将导致访问被拒绝错误。如果您的用例是允许帐户A中的IAM用户完全访问S3,则需要执行以下操作:

  1. 将帐户A的IAM用户列入白名单,以对帐户B中的存储桶策略具有s3:*权限

  2. 在帐户A的IAM用户策略中,确保他对帐户B中的存储桶具有s3:*或特定权限。

或者,您可以授予对帐户B中存储桶策略上帐户A的根访问权限,然后可以将来自根的权限委派给帐户A中的所有IAM用户。