从S3 Bucket [pendente]拒绝访问

时间:2017-02-07 01:16:58

标签: amazon-web-services amazon-s3 amazon-cloudformation

在帐户A中,我创建了一个带有cloudformation的s3存储桶,CodeBuild构建了一个工件并上传到此存储桶。在帐户B中,我尝试使用云形成创建堆栈,并使用帐户A桶中的工件来部署我的Lambda函数。但是,我收到了拒绝访问错误。有谁知道解决方案?感谢...

"TestBucket": {
  "Type": "AWS::S3::Bucket",
  "DeletionPolicy": "Retain",
  "Properties": {
    "AccessControl": "BucketOwnerFullControl"
  }
},
"IAMPolicy": {
  "Type": "AWS::S3::BucketPolicy",
  "Properties": {
    "Bucket": {
      "Ref": "TestBucket"
    },
    "PolicyDocument": {
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": [
              "arn:aws:iam::xxxxxxxxxxxx:root",
              "arn:aws:iam::xxxxxxxxxxxx:root"
            ]
          },
          "Action": [
            "s3:GetObject"
          ],
          "Resource": [
            {
              "Fn::Join": [
                "",
                [
                  "arn:aws:s3:::",
                  {
                    "Ref": "TestBucket"
                  },
                  "/*"
                ]
              ]
            },
            {
              "Fn::Join": [
                "",
                [
                  "arn:aws:s3:::",
                  {
                    "Ref": "TestBucket"
                  }
                ]
              ]
            }
          ]
        }
      ]
    }
  }
}

2 个答案:

答案 0 :(得分:1)

假设下面的语句中的xxxxx是帐户B的帐号:

"AWS": [
              "arn:aws:iam::xxxxxxxxxxxx:root",
              "arn:aws:iam::xxxxxxxxxxxx:root"
            ]

您说此存储桶根据客户在帐户B IAM服务中持有的IAM权限/政策授予对帐户B的访问权限。

基本上所有具有显式S3访问权限的用户/实例配置文件/策略都可以访问此帐户A的存储桶。这意味着您附加到帐户B中的lambda角色的IAM策略可能不会有明确的S3访问权限。

我建议让S3访问你的Lambda函数,这应该可行。

请注意,将来如果您想从帐户B写入帐户A的S3存储桶,则必须确保将存储桶所有者完全控制acl放置为对象可以在所有帐户中使用。

示例

使用CLI : $ aws s3api put-object --acl bucket-owner-full-control --bucket my-test-bucket --key dir / my_object.txt --body /path/to/my_object.txt

答案 1 :(得分:0)

不是"arn:aws:iam::xxxxxxxxxxxx:root"仅授予对root角色的访问权限,而是通过仅指定帐户ID作为Principal/AWS对象中的项目来授予对帐户中所有身份的访问权限:"xxxxxxxxxxxx"

有关详细信息,请参阅Using a Resource-based Policy to Delegate Access to an Amazon S3 Bucket in Another Account