如何设置存储桶策略以允许访问特定的引用者

时间:2017-07-19 03:40:19

标签: amazon-web-services amazon-s3 web-scraping policy bucket

我们的网站目前正在被机器人刮到S3上的内容。我正在尝试获取存储桶策略设置,以便除了我们的域之外,任何其他引用者都无法访问S3 URL。问题是它似乎没有检测到我们的域是引用者。以下是我们在下面设置的存储桶策略。

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::example/*",
            "Condition": {
                "StringNotLike": {
                    "aws:Referer": [
                        "https://www.example.com/*",
                        "http://www.example.com/*",
                        "https://*.example.com/*",
                        "https://*.example.com/*"
                    ]
                }
            }
        }
    ]
}

有谁知道为什么它不会认可www.example.com/blah/blah.html等作为推荐人?

当我通过我们的应用访问网址时,有没有办法看到AWS正在注册哪个推荐人?这有助于排除故障。

1 个答案:

答案 0 :(得分:2)

来自Bucket Policy Examples - Restricting Access to a Specific HTTP Referrer

{
  "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":"*",
      "Action":"s3:GetObject",
      "Resource":"arn:aws:s3:::examplebucket/*",
      "Condition":{
        "StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]}
      }
    }
  ]
}

如果Referer字符串与列表中显示的字符串类似,则此策略为允许访问。

您的费用是StringNotLike,因此只有在Referer 您列出的内容时才允许访问。