【问题标题】:Control access to AWS S3 files from my application从我的应用程序控制对 AWS S3 文件的访问
【发布时间】:2017-05-05 17:56:25
【问题描述】:
我正在开发一个应用程序,我们希望将用户的文件托管到 AWS S3。
最初的想法是为每个新用户创建一个新的存储桶(存储桶名称可以是用户的唯一代码)。我们如何使用例如用户名或电子邮件来控制对用户存储桶文件的访问? S3 根据 AWS 账户提供不同级别的访问。
我们需要确保经过身份验证的用户只能访问他的存储桶文件。实现这种场景(使用 S3 或类似服务)并防止任何拥有正确 url 的人访问其他用户文件的最佳方法是什么?
【问题讨论】:
标签:
amazon-web-services
amazon-s3
access-control
【解决方案1】:
听起来你想做的事情可以用S3 pre-signed urls来完成。
这将要求您:
- 将存储桶/文件 ACL 设置为
private,这将阻止具有“正确 url”的任何人访问文件。
- 允许您的应用程序生成文件的短期链接,然后您的用户将能够使用这些链接进行访问。
工作流程不是将您的用户直接引导到所请求的文件,而是如下所示:
- 将您的用户引导至应用程序中的路由,该路由可验证他们访问所需文件的权利。
- 用户通过身份验证后,为所请求的文件生成一个预签名的 URL,
- 将 302 重定向返回到该预签名 URL