当前位置:  开发笔记 > 编程语言 > 正文

S3:如果由其他用户创建,则用户无法访问自己的s3存储桶中的对象

如何解决《S3:如果由其他用户创建,则用户无法访问自己的s3存储桶中的对象》经验,为你挑选了2个好方法。

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

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

该用户生成了临时凭证,然后用于将文件上传到我们的存储桶中.

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

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



1> James..:

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

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

是的,我认为你必须为每个对象做一次,我不认为有一个递归选项.

AWS发布了一个示例存储桶策略,以防止向存储桶添加对象,而不会让存储桶拥有者完全控制.但这不会解决您斗中已有对象的所有权问题.

我不知道任何将所有权自动转移到存储桶拥有者的策略.


你是对的,这是设计的.如果允许其他用户上传到您的存储桶,并且不对使用存储桶策略的上传强制执行`bucket-owner-full-control`,则存储桶拥有者可用的*only*操作是删除该对象.其他所有内容都需要由对象所有者授予权限.

2> 小智..:

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

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


将此命令与执行原始上传的帐户的凭据一起使用,以提供bucket-owner-full-control,但在那时,执行原始上传的帐户仍拥有S3对象。如果需要,请使用拥有存储桶的帐户的凭据重复此命令,以使该帐户也具有S3对象的所有权。
推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有