首页 文章

如何在AWS S3上阅读匿名发布的文件?

提问于
浏览
1

我在AWS S3上有一个桶(我们称之为bucket-1),我从这个桶中获取了 cannot read . 我有另一个桶(让我们称之为桶-2),我从这个桶中获取了 can read .

我可以列出两个桶的内容,但我不能复制bucket-1的任何内容 .

% aws s3 ls s3://bucket-1/ | grep 0046
2016-03-09 15:39:50    4413909 0046f326-6e7d-4c16-80e4-491fa0b19dd7

% aws s3 cp s3://bucket-1/0046f326-6e7d-4c16-80e4-491fa0b19dd7 .
A client error (403) occurred when calling the HeadObject operation: Forbidden

在尝试解决这个问题的过程中,我切换回使用AWS账户的访问密钥而不是IAM用户(假设AWS账户基本上具有所有权限) .

开始挖掘

假设原因在权限中,我运行

% aws s3api get-bucket-acl --bucket my-bucket-1
% aws s3api get-bucket-acl --bucket my-bucket-2

普通

它将我的AWS账户显示为两个存储桶的所有者 .

不同

bucket-2有一个权限:我的AWS账户的FULL_CONTROL .

bucket-1列出了几个权限,其中FULL_CONTROL是 not . 它列出了

  • 阅读

  • READ_ACP

  • WRITE_ACP

对于我的AWS账户 .

在Web控制台中,bucket-1中的对象没有任何权限集 . bucket-2中的对象具有与它们所在的桶相同的权限 .

可能使用不同的方法将文件存储在两个存储桶中 . bucket-2中的对象可能是通过API创建的,而bucket-1中的对象则来自匿名POST . (是的,bucket-1拥有对每个人的权限WRITE . )

深入挖掘

即使使用我的AWS账户的凭证,我也无权查询该对象的acl .

% aws s3api get-object-acl --bucket bucket-1 --key 0046f326-6e7d-4c16-80e4-491fa0b19dd7
A client error (AccessDenied) occurred when calling the GetObjectAcl operation: Access Denied

% aws s3api get-object --bucket bucket-1 --key 0046f326-6e7d-4c16-80e4-491fa0b19dd7 local.file
A client error (AccessDenied) occurred when calling the GetObject operation: Access Denied

% aws s3api head-object --bucket bucket-1 --key 0046f326-6e7d-4c16-80e4-491fa0b19dd7
A client error (403) occurred when calling the HeadObject operation: Forbidden

问题

helpful site on the internet我发现可以使用put-object-acl将acl设置为bucket-owner-full-control . 我试过了 . 但是你必须使用文件所有者的凭据来执行此操作 - 如果文件是匿名发布的,如何执行此操作?

  • 我还能尝试什么?

  • S3上的对象,如桶,有拥有者吗?

  • 如果是这样,我可以在Web控制台中找到该信息吗?

1 回答

  • 1

    Don 't allow anonymous uploads to your bucket. If you do, and the uploader doesn' t正确设置权限,唯一可用的操作是删除对象 .

    可以设置存储桶策略,以便拒绝匿名上载,除非上载将ACL设置为存储桶拥有者完全控制,但这仅对将来的上载有用 .

    事件......是否有合法的匿名上传应用程序?非常可疑 .

相关问题