【问题标题】:AWS S3 bucket policy - how to allow access only from my website?AWS S3 存储桶策略 - 如何仅允许从我的网站访问?
【发布时间】:2020-03-26 00:32:07
【问题描述】:

我有一个回形针文本文件附件(在 Rails 中)。

我的存储桶策略是:

{
    "Version": "2008-10-17",
    "Id": "Policy123",
    "Statement": [
        {
            "Sid": "Stmt123",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "s3:GetObjectVersion",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::my_bucket/*"
        }
    ]
}

我想限制对这些操作的访问,只有当请求来自我的网站时才允许。是否只是将其更新为:“Principal”:{“AWS”:“mywebsite.com”}?

【问题讨论】:

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


    【解决方案1】:

    存储桶策略:

    {
        "Version": "2012-10-17",
        "Id": "http referer policy example",
        "Statement": [
            {
                "Sid": "Allow get requests originating from www.example.com and example.com.",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::00000000:user/example-user" // IAM User ARN
                },
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::bucket-example/*", // bucket ARN
                "Condition": {
                    "StringLike": {
                        "aws:Referer": [
                            "http://example.com/*" // Website link
                        ]
                    }
                }
            }
        ]
    }
    

    【讨论】:

      【解决方案2】:

      您可以查看S3 Documentations中的一些示例

      要限制从您的网站访问,您可以使用 Referrer 上的条件:

      {
        "Version":"2008-10-17",
        "Id":"http referer policy example",
        "Statement":[
          {
            "Sid":"Allow get requests referred by www.mysite.com and mysite.com",
            "Effect":"Allow",
            "Principal":"*",
            "Action":"s3:GetObject",
            "Resource":"arn:aws:s3:::example-bucket/*",
            "Condition":{
              "StringLike":{
                "aws:Referer":[
                  " http://www.mysite.com/*",
                  " http://mysite.com/*"
                ]
              }
            }
          }
        ]
      }
      

      【讨论】:

      • 不幸的是,这会阻止我从我的站点打开文件
      • 检查您的拼写是否正确: aws:Referer - 与 HTTP 引荐来源网址字段相同。还要检查您的网站 URL 是否以正确的格式发送。去掉条件,检查图片的标题。
      • 如何检查我的网站 URL 的发送格式?每当我将引荐来源网址放入时,我都无法从该网站打开回形针附件:-(
      • 使用例如 Chrome 开发者工具:developers.google.com/chrome-developer-tools
      • 这里不是有一个危险信号,表明 直接流量 访问该网站不会看到任何资产负载(因为不会将引荐来源网址设置到该特定网站那个时间点)
      猜你喜欢
      • 1970-01-01
      • 2020-12-18
      • 1970-01-01
      • 2018-05-21
      • 2021-06-28
      • 2016-12-10
      • 1970-01-01
      • 2018-08-09
      相关资源
      最近更新 更多