AWS S3:无法从具有公共访问权限的存储桶中获取非拥有的对象(通过未经身份验证的方式)

时间:2018-10-17 06:39:05

标签: amazon-web-services amazon-s3

这是情况

  • 我有一个桶B。它是帐户A_1拥有的
  • 此存储桶对所有内容都具有公共读取访问权限(通过存储桶策略和ACL。我只是尝试尝试,没有结果)
  • 该存储桶只能通过存储桶拥有者完全控制ACL才能通过帐户A_2写入
  • 将存储桶配置为通过Cloudfront服务对象

->在S3控制台中浏览时,由A_2上传的文件可以完全控制A_1。

-Cloudfront拒绝访问A_2拥有的文件(在A_1拥有的文件上工作良好) -使用S3网站网址,我可以访问A_1拥有的文件(存储桶中的公共ACL),但不能访问A_2拥有的文件

问题: 为什么存储桶策略不适用于A_1拥有FULL_CONTROL的A_2拥有的文件?

注意 -通过为我的云平台创建访问身份并要求A_2专门读取云平台规范帐户ID,我能够“规避”该问题,但这很麻烦。


时段政策:

{
  "Version": "2012-10-17",
  "Statement": [
    {
        "Sid": "Grant read access to the world",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::my_bucket/*"
    },
    {
        "Sid": "Grant write access to other account user",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::8566072xxxxx:root"
        },
        "Action": [
            "s3:ListBucket",
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::my_bucket/*",
            "arn:aws:s3:::my_bucket"
        ]
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

S3访问特权要接受三组概念上不同的测试-IAM主体(用户或角色),存储桶和对象上下文。

  

如果存储桶和对象所有者相同,则可以在存储桶策略中授予对对象的访问权限,该策略在存储桶上下文中进行评估。如果所有者不同,则对象所有者必须使用对象ACL授予权限。

     

https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-auth-workflow-object-operation.html

bucket-owner-full-control罐头ACL不会更改实际的对象所有权,因此仅使存储桶所有者具有使用用户和角色策略(而不是存储桶策略)授予对对象的访问权限的能力。

您的用户策略是您可以在控制台中访问它们的原因。

存储桶策略仍然可以明确地拒绝对存储桶所有者不拥有的对象的访问,但不能授予它们。