如何为AWS S3存储桶添加全局写入权限

4

我正在使用一个s3存储桶,希望向所有人授予写入权限。AWS控制台不允许我这样做,而是要求使用AWS CLI来启用写入权限。如何使用AWS CLI向所有人启用写入权限。


公开写入权限是一个非常糟糕的想法。你想要实现什么?也许有更好的方法? - Marcin
@Marcin 我正在开发一个Django项目,用户可以上传照片到网站上,并使用s3存储桶来提供静态文件。 - Ananda Vishnu
Django支持S3。因此,您的用户首先会将图像上传到应用程序中,然后应用程序会将它们存储在S3中。无需公共读/写访问权限。 - Marcin
2个回答

5
授予公共读取权限在安全角度上是可以接受的,如果数据意图为公共或者是公共网站的文件。这可以通过Bucket Policy进行授权。您还需要在存储桶上停用阻止公共访问
授予公共写入权限并不是一个好主意。例如,有人可以上传整个世界的版权电影收藏。您将被收取存储费用,并且您将违反版权法。同样,如果您允许公共读取权限,则您将被收取所有数据传输费用,以下载存储桶中的内容,这可能是相当可观的。
相反,您的应用程序应该控制对Amazon S3的访问。如果用户被允许上传到您的S3存储桶,您的应用程序应该允许使用预签名URL上传对象。这样,只有在您的应用程序允许时用户才能上传,并且可以对文件类型、大小和文件名等进行限制。
同样地,可以使用Amazon S3预签名URL来授予有时间限制的读取权限,以访问存储在Amazon S3中的私有对象。
因此,是的,您可以通过S3管理控制台授予公共写入访问权限,但我建议不要这样做。

很好的回答,对于一个S3新手非常有帮助。 - Fedorov7890

2
约翰是正确的,99%的情况下你不应该为所有人启用S3存储桶的写权限。
然而,在我的情况下,我正在开发一个上传对象到S3的工具,并且想测试包括匿名用户上传到S3存储桶在内的所有可能的边缘情况。正如问题所指出的那样,AWS管理控制台确实不允许您为一个存储桶启用公共写入访问(这是有充分理由的!当它让你这样做时,我敢打赌这会导致太多的事故发生)。
因此,如果你也面临这种情况,那么可以运行以下命令:
aws s3api put-bucket-acl --bucket bucketname --acl public-read-write

完成测试后,您可以使用--acl private重新运行命令,使存储桶再次变为私有。或者您可以使用AWS管理控制台,因为它允许您禁用写入权限。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接