通过您自己的应用程序保护S3

时间:2010-03-23 16:51:25

标签: ruby-on-rails ruby security amazon-s3

想象一下以下用例:

您有一个使用S3托管文件的basecamp样式应用程序。帐户都有自己的文件,但存储在S3上。

因此,开发人员如何保护文件,以便帐户1的用户无法以某种方式获取帐户2的文件?

如果这是一个帮助,我们正在谈论Rails。

4 个答案:

答案 0 :(得分:1)

S3支持签名时间到期网址,这意味着您可以为用户提供一个网址,该网址只允许有该链接的人查看该文件,并且仅在发出的特定时间段内。

http://www.miracletutorials.com/s3-amazon-expiring-urls/

答案 1 :(得分:0)

如果要限制对这些远程资源的控制,可以通过应用程序代理文件。对于像S3这样的东西,这个可能会破坏你想要做的目的,但它仍然允许你用亚马逊保存数据并限制访问。

你应该小心这样的方法,因为它可能导致你的ruby线程在代理文件时阻塞,这可能成为应用程序的真正问题。

答案 2 :(得分:0)

使用EC2实例提供文件

如果您将S3存储桶设置为私有,则启动EC2实例,您可以通过EC2在S3上提供文件,使用EC2实例根据应用程序规则验证权限。由于EC2无需向S3转移(在同一区域内),因此您不必将亚马逊的带宽消耗成本加倍。

答案 3 :(得分:0)

我没有解决这个问题。但这并不能阻止我发表意见:)

查看cancan:

它允许自定义授权方案,没有太多麻烦。