适用于使用carrierwave上传图像文件的用户的s3权限

在Michael Hartl的The Rails Tutorial的第11章末尾,我成功地设法通过创建存储桶,使用IAM设置用户并授予用户AmazonS3FullAccess策略来启用用户上传到Amazons S3服务。 让我的网站上的未知用户可以完全访问我的网站上的图像上传桶并且我不确定我是否应该这样感觉,这感觉很脏并且非常不安全。 我创建了一个自定义策略

  • http://awspolicygen.s3.amazonaws.com/policygen.html

以下是:

  {
       “版本”:“2012-10-17”,
       “声明”:[
         {
           “Sid”:“Stmt1445501067518”,
           “行动”:[
             “S3:GetObject的”,
             “S3:PutObject”
           ]
           “效果”:“允许”,
           “资源”:“arn:aws:s3 ::: bucketname”
         }
       ]
    } 

我对我的解决方案没有信心,也无法找到任何答案谷歌搜索最佳方式。 我正在使用carrierwave(有意使用carrierwave_direct用于我自己的项目),雾和mini_magickgem。

允许用户将文件上传到您的站点(即S3)的最佳且可能最安全的方法是使用基于浏览器的上传。

这使用户可以直接上传到S3,而无需通过您的服务器。 在您的服务器上,您只需使用访问密钥创建请求签名。

您可以在此处阅读更多相关信息: 使用Post的基于浏览器的上传

我自己并不熟悉carrierwave但你可能会觉得这很有用: 直接上传到rails中的S3