我们面临一个用例,我们需要在 S3 上存储用户的 secret 图像。现在 S3 可以通过 HTTP 访问,如果我们授予对对象的读取权限,它们将通过 Web 提供给全世界。我们需要将图像/文件仅限于该用户。所以我们想到的可能的解决方案是:
- 以某种方式屏蔽 URL。(不知 Prop 体怎么做)
- 通过创建唯一的加密 s3 key 来存储文件/图像
例如:http://bucket.s3.amazon.com/clients/img/j84jaljvkeh774d/myimage.jpg
在第一个中我们可能无法获得 cloudfront 或 cdn 的好处,因为它可能涉及一个独立的代理服务器。
第二个在某种程度上是安全的,因为如果键名对用户而言是唯一的,则很难预测它。
使用ACL 和存储桶策略 并不能完全解决问题。
此外,如果我们编写限制 IP 地址的策略,则使用相同 API 后端的移动应用程序最终将无法运行,因为这些应用程序会发出来自不同 IP 的请求。
我们知道我们不能完全保护它们,但是我们有办法处理这种情况吗?请分享您的意见。
最佳答案
这可以通过选项一来实现。
- 禁止从 AWS 上的 S3 管理控制台公开访问文件。
- 如果您想限制访问,您只需要构建过期 url。
- 我想每个用户都必须有一个唯一的 key 。您可以使用该 key 生成签名 URL。以编程方式为每个对象。 Here有一个例子可供引用。
关于amazon-web-services - (完)S3中对象的用户级访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37206323/