【问题标题】:S3: User cannot access object in his own s3 bucket if created by another userS3:如果由其他用户创建,用户无法访问他自己的 s3 存储桶中的对象
【发布时间】:2015-12-02 23:26:55
【问题描述】:

外部用户可以访问我们的 s3 存储桶,在我们的存储桶策略中使用这些操作:

"Action": [
            "s3:GetObjectAcl",
            "s3:GetObject",
            "s3:PutObjectAcl",
            "s3:ListMultipartUploadParts",
            "s3:PutObject"
        ]

该用户生成了temporary credentials,然后用于将文件上传到我们的存储桶中。

现在,我无法访问该文件。在 s3 UI 中,如果我尝试下载文件,我会收到 403。如果我尝试更改该对象的权限,我会看到消息:“抱歉!您没有查看此存储桶的权限。”如果外部用户在使用临时凭证上传文件时设置了适当的标头(x-amz-acl bucket-owner-full-control),我可以正常访问该文件。我觉得奇怪的是,即使我拥有存储桶,外部用户也有可能将我无法访问的文件放入其中。

是否有可能我可以设置一些策略以便我可以访问该文件,或者以便我能够访问添加到我的存储桶中的 任何 文件,而不管 它是如何添加的?谢谢!

【问题讨论】:

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


    【解决方案1】:

    我相信您必须让对象所有者更新 ACL 或重写指定存储桶所有者完全控制的对象。最简单的实验方法是使用 CLI:

    aws s3api put-object-acl --acl bucket-owner-full-control --bucket some-bucket --key path/to/unreadable.txt
    

    是的,我认为您必须为每个对象执行一次,我认为没有递归选项。

    AWS 会发布一个example bucket policy防止将对象添加到存储桶,而不给予存储桶所有者完全控制权。但这不会解决您存储桶中已有对象的所有权。

    我不知道有任何政策会自动将所有权转让给存储桶所有者。

    【讨论】:

    • 你是对的,这是设计使然。如果您允许其他用户上传到您的存储桶,并且不对使用存储桶策略的上传强制执行 bucket-owner-full-control,则存储桶所有者可用的 only 操作是删除对象。其他一切都需要对象所有者授予的权限。
    • 作为脚注,要使用cpmv 命令,用户还需要获得PutObjectAcl 操作的权限,这些知识将为我节省一个小时;)
    【解决方案2】:

    您实际上可以使用复制和递归选项将所有对象复制回存储桶并使用以下语法设置 acl bucket-owner-full-control:

    aws s3 cp s3://myBucket s3://myBucket --recursive --acl bucket-owner-full-control --storage-class STANDARD
    

    【讨论】:

    • 将此命令与执行原始上传的账户的凭据一起使用,以授予存储桶所有者完全控制权,但此时执行原始上传的账户仍拥有 S3 对象。如果您需要,请使用拥有存储桶的账户的凭据重复此命令,以赋予该账户对 S3 对象的所有权。
    【解决方案3】:

    AWS 现在已在一般情况下解决了这个问题,现在允许存储桶所有者配置其存储桶以控制放置在那里的所有对象,而不管作者是谁。这是个好消息,因为您不再需要要求作者在写入期间放置其他标志。

    要将您的存储桶更改为此设置(现在也是推荐的默认设置),您可以使用以下命令:

    aws s3api put-bucket-ownership-controls --bucket <bucketname> --ownership-controls Rules=[{ObjectOwnership=BucketOwnerEnforced}]
    

    另一个好消息是,这可以追溯控制以前没有 ACL 限制而编写的对象。 欲了解更多信息,请参阅https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-12
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 2018-01-07
      • 2016-03-12
      • 1970-01-01
      相关资源
      最近更新 更多