我们的网站目前正在被机器人刮到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正在注册哪个推荐人?这有助于排除故障。
答案 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 不您列出的内容时才允许访问。