如何以任何人都可以将文件上传到我的存储桶的方式设置权限?
以下是具有以下三个功能的示例:
我想知道这个存储桶(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
我不确定如何设置这样的存储桶。
答案 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
,则对象“属于”上传文件的身份,这就是您下载自己的文件的原因。不建议这样做,因为这可能导致存储区所有者无法访问(甚至可能无法删除!)对象的情况。
底线:在实施向他人或其他人授予存储桶权限的规则之前,请先考虑一下您的安全性。