1

我的配置中有一条路线,它说对于一个页面,比如说/secure,需要登录(通过 authlogic 完成)。我的控制器中的 before_filter 会处理这个问题。这很好用,页面及其资源的访问受到限制 - 通过应用程序。

问题是,我们在部署到 heroku 的这个应用程序(基于炼油厂cms)上使用 Amazon S3 进行存储。我有一个桶,它工作正常。

但是,任何插入应用程序安全部分的资源都可以通过浏览器直接访问。换句话说,该/secure页面包含诸如 pdf 文件之类的项目。虽然通过应用程序可以保护资源,但可以从 Internet 上的任何位置访问这些 pdf 文件(示例 URL):http ://s3.amazonaws.com/my_bucket/images/1234/the_file_which_should_be_secure.pdf

我可以在 S3 上进行细粒度的访问控制吗?我必须创建一个新的存储桶吗?理想情况下,我想在我的资源上设置一个标志,使其在 Internet 中不可见 - 不知道。

欢迎任何建议。

PS openid.org 有一个过期的 ssl 证书,所以需要创建一个新的空帐户,因为我无法登录

4

4 回答 4

5

您可以尝试此页面上所说的内容:

http://thewebfellas.com/blog/2009/8/29/protecting-your-paperclip-downloads

具体内容在“不再流式传输,重定向时间”部分下。

摘要: S3 有四个固定访问策略,通过使用身份验证读取策略,S3 提供了一种为仅在指定时间段内有效的私有内容生成经过身份验证的 URL 的方法。

我实际上还没有这样做,所以请让我知道它是否适合您。:-)

于 2010-10-28T03:38:41.670 回答
4

最简单和最简单的解决方案就是用随机的、不可猜测的文件名命名您的 S3 资产,然后只将秘密 URL 公开给应该有权访问的人。

这就是 Facebook 照片和许多其他网站的工作方式(除了单个文件名的模糊性之外,没有隐私或安全性)。

于 2010-10-23T21:28:26.957 回答
2

如果您使用回形针,您可以通过使 url 过期来限制对存储在 Amazon S3 上的对象的访问。(如果您不介意使用过期网址)

这是来自 GitHub 上的 thinkbot/paperclip 的 Wiki

https://github.com/thoughtbot/paperclip/wiki/Restricting-Access-to-Objects-Stored-on-Amazon-S3

此外,该页面底部还有一些您可能不想错过的有用链接。

于 2011-08-11T06:34:29.960 回答
0

也许我对您要完成的工作感到困惑,但是 S3 具有权限访问,需要在您提供给用户的 url 中提供加密密钥。使用 aws-s3 gem 时,默认启用此选项。因此,除非用户使用嵌入了加密密钥的链接,否则您应该无法访问这些文件。这将要求您确保将文件设置为仅授权访问。

可以在http://amazon.rubyforge.org/上找到有关 gem 的更多信息。查找与访问控制相关的文档(我认为“authenticated_read”是您想要的)。

于 2010-10-24T02:01:59.477 回答