我在Varnish后面有一个PHP Symfony Web应用程序,其中包含存储在S3存储桶中的站点资产(即图像,视频) . 我想通过referrer使用s3存储桶策略来限制对这些资产的访问 . 我应用于存储桶的策略是(删除了识别信息):
{
"Version": "2012-10-17",
"Id": "http referrer policy example",
"Statement": [
{
"Sid": "Allow get & put requests referred by test.com.",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::mybucket/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"https://www.test.com/*",
"https://test.com/*"
]
}
}
},
{
"Sid": "Explicit deny to ensure requests are allowed only from specific referrer.",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::mybucket/*",
"Condition": {
"StringNotLike": {
"aws:Referer": [
"https://www.test.com/*",
"https://test.com/*"
]
}
}
}
]
}
我已经将我的政策与多个SO和其他论坛帖子进行了比较,看起来是正确的 . 如果我将此政策应用于我的存储桶,则我网站任何页面上的每个资产的请求都会显示为已关闭,并显示响应状态403禁止访问:
Request URL:http://mybucket.s3-eu-west-1.amazonaws.com/site-assets/img/film-icon.svg
Request Method:GET
Status Code:403 Forbidden
Remote Address:54.231.131.120:80
Referrer Policy:no-referrer-when-downgrade
如果我删除该策略,它将再次起作用 . 因此该策略正在生效,它只是不允许我自己的域(在此示例代码中,test.com)访问资产,但在存储桶策略中定义为“允许” .
如果它是相关的,我的网络应用程序使用KnpGaufrette作为配置为使用s3的文件系统,而这又被LiipImagineBundle用于处理所需的任何图像处理 . 我的服务器也在Web服务器前面安装了Varnish 4以提供缓存(我已经尝试清除清漆缓存,在应用策略后重新启动清漆和apache) .
如果你能提供帮助,那就太好了 .
1 回答
我遇到了同样的问题,你只需添加即可
到您的Bucket策略(用您的区域和存储桶名称替换URL),它将开始工作 .
希望它会有所帮助 .