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

时间:2015-12-02 23:26:55

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

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

{{1}}

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

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

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

2 个答案:

答案 0 :(得分:22)

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

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

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

AWS发布example bucket policy阻止向存储桶添加对象,而不会让存储桶拥有者完全控制。但这并不能解决你桶中已有物品的所有权问题。

我不知道任何可自动将所有权转让给广告版所有者的政策。

答案 1 :(得分:14)

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

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