如何配置 Amazon S3 权限来托管我的移动应用程序的文件

如何配置 Amazon S3 权限来托管我的移动应用程序的文件

我有一个移动应用,可以将文件上传到服务器,并且需要能够下载这些文件。我使用 S3 来保存文件,并使用 RoR 后端来管理所有这些。

可以进行以下设置吗?

  • RoR 后端使用特定的“访问密钥和秘密访问密钥”来访问 S3 API。此访问密钥有权列出存储桶中的对象、读取它们以及创建新的对象。
  • 当手机应用上传文件时,RoR 后端会将其保存到 S3,并生成一个 URL
  • 手机要下载文件,需要访问该 URL。它有权读取这些文件,但无权写入,也绝对无权列出(这是关键)
  • 我希望手机只需使用普通的 HTTP GET 访问 URL 即可获取文件,而无需处理 S3 api。这是非常理想的。
  • 理想情况下,如果我可以让手机也拥有某种访问密钥/令牌,但它可以简单地将其作为参数添加到 URL,而不是通过 S3 API,那就太好了。这给了我一些额外的安全性,而不必将客户端与 S3 紧密联系在一起,以防我们将来想要更换提供商。

AWS 有大量选项可用于配置这些内容,但我不清楚哪个选项最好,以及哪些场景是可能的(我看到有选项可以生成有时间限制的 URL。如果服务器可以向客户端提供一个仅在几分钟内有效的 URL,以防 URL 以某种方式“泄露”,那么这对我来说会很棒,但我还无法弄清楚它究竟是如何工作的)

任何指点都将不胜感激!

答案1

S3 签名 URL 是实现此目的的首选方法。要使用签名 URL,您的 ruby​​ 后端需要使用 S3 API 生成一个有时间限制的签名 URL,然后将其传递给您的移动应用程序。通过这种方式执行操作不需要您将访问密钥部署到您的移动应用程序,从安全角度来看,这是一种更安全的解决方案,并且也更易于维护。

相关内容