允许在某些限制下开放访问S3存储桶

时间:2018-06-27 05:53:13

标签: amazon-web-services amazon-s3

如何以任何人都可以将文件上传到我的存储桶的方式设置权限?

以下是具有以下三个功能的示例:

  1. 我可以上传任何文件,也可以从任何地方下载文件。
  2. 但是我无法下载其他人上传的文件。
  3. 但是,我可以删除其他人上传的文件。

我想知道这个存储桶(abc)的设置方式以及拥有者。

1)我可以上传:

[root@localhost ~]# aws s3 cp test.txt s3://abc/
upload: ./test.txt to s3://abc/test.txt

2)我可以列出内容:

[root@localhost ~]# aws s3 ls s3://abc | head
                           PRE doubleverify-iqm/
                           PRE folder400/
                           PRE ngcsc/
                           PRE out/
                           PRE pd/
                           PRE pit/
                           PRE soap1/
                           PRE some-subdir/
                           PRE swoo/
2018-06-15 12:06:27       2351 0Sw5xyknAcVaqShdROBSfCfa7sdA27WbFMm4QNdUHWqf2vymo5.json

3)我可以从任何地方下载文件:

[root@localhost ~]# aws s3 cp s3://abc/test.txt .
download: s3://abc/test.txt to ./test.txt

4)但无法下载其他人的文件

[root@localhost ~]# aws s3 cp s3://abc/zQhAqmwIUfIeDnEEHpiaGhXuERgO3bR84jkjhbei1aLiV1758t.json .
fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden

5),但是,我可以删除不是由我上传的文件:

[root@localhost ~]# aws s3 rm s3://abc/zQhAqmwIUfIeDnEEHpiaGhXuERgO3bR84jkjhbei1aLiV1758t.json
delete: s3://abc/zQhAqmwIUfIeDnEEHpiaGhXuERgO3bR84jkjhbei1aLiV1758t.json

我不确定如何设置这样的存储桶。

1 个答案:

答案 0 :(得分:1)

建议不要以这种方式设置存储桶。

任何人都可以上传到存储桶的事实意味着,某人可能会存储TB的数据,而 则需要为此承担费用。例如,有人可以使用您的存储桶来托管大型视频文件,以提供免费存储空间和带宽。

类似地,授予任何人列出存储桶内容的权限并不是很好的安全习惯。他们可能会发现不希望被释放的敏感数据。

允许任何人从您的存储桶中删除对象也是不明智的,因为有人可以删除所有内容!

有两种授予对象访问权限的主要方法:

时段政策

存储桶策略可以授予整个存储桶或存储桶中特定路径的权限。例如,将GetObject授予整个存储桶意味着任何人都可以下载任何对象。

请参阅:Bucket Policy Examples - Amazon Simple Storage Service

对象级权限

还可以基于每个对象授予基本权限。例如,将对象复制到存储桶时,访问控制列表(ACL)可以指定谁可以访问该对象。

例如,这会将对象的所有权授予存储桶所有者:

aws s3 cp foo.txt s3://my-bucket/foo.txt --acl bucket-owner-full-control

如果排除--acl,则对象“属于”上传文件的身份,这就是您下载自己的文件的原因。不建议这样做,因为这可能导致存储区所有者无法访问(甚至可能无法删除!)对象的情况。

底线:在实施向他人或其他人授予存储桶权限的规则之前,请先考虑一下您的安全性。