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

Proper s3 permissions for users uploading image files with carrierwave

在 Michael Hartl 的 Rails 教程的第 11 章末尾,我成功地通过创建存储桶、使用 IAM 设置用户并授予用户 AmazonS3FullAccess 来启用用户上传到 Amazons S3 服务政策。允许我网站上的未知用户完全访问存储桶以在我的网站上上传图片感觉很脏而且非常不安全,我不确定我是否应该有这种感觉。我在

创建了自定义策略

以下是:

   {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "Stmt1445501067518",
          "Action": [
            "s3:GetObject",
            "s3:PutObject"
          ],
          "Effect": "Allow",
          "Resource": "arn:aws:s3:::bucketname"
        }
      ]
   }

我对我的解决方案没有信心,并且无法通过谷歌搜索找到解决此问题的最佳方法的任何答案。我正在使用载波(打算将 carrierwave_direct 用于我自己的项目)、雾和 mini_magick 宝石。

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

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

您可以在此处阅读更多相关信息: Browser Based Uploads Using Post

我自己不熟悉载波,但你可能会发现这很有用: Uploading directly to S3 in rails