0

我曾尝试寻找答案,但我想我可能使用了错误的术语,所以我想我会试一试。

我有一个 Rails 应用程序,公司可以在其中拥有多个用户的帐户,每个用户具有不同的权限等。系统的一部分将能够上传文件,我正在寻找 S3 进行存储。我想要的是能够说公司 A 的用户只能下载与该公司关联的文件?

我的印象是,除非我将下载限制在我的部署服务器 IP 范围(将是 Heroku),然后通过控制器和 send_file() 调用提供文件。这会起作用,但是我正在将数据从 S3 读取到 Heroku,然后返回给用户,而不是直接从 S3 到用户。

如果我使用 send_file 方法,我可以关闭我的 S3 服务器到外部世界并让我的 Heroku 应用程序直接发送文件吗?

我的一个不太安全的想法是为每个文件创建一个唯一的 slug 并将其存储在该名称下,以防止随机猜测文件http://mys3server/W4YIU5YIU6YIBKKD.jpg等。这将是快速和肮脏的,但不是 100% 安全。

4

1 回答 1

0

Amazon S3 存储桶支持根据不同条件授予或拒绝访问的策略。您可能可以使用它们来保护您的文件免受不同用户组的侵害。查看政策文档以了解可能的情况。之后,您可以切换到AWS 策略生成器以根据您的需要生成有效的策略。

于 2012-10-20T08:02:45.043 回答