gpt4 book ai didi

symfony - S3 Bucket Policy by domain 返回 403 Forbidden for object requests in Symfony app with Varnish

转载 作者:行者123 更新时间:2023-12-03 17:44:51 25 4
gpt4 key购买 nike

我在 Varnish 后面有一个 PHP+Symfony 网络应用程序,网站 Assets (即图像、视频)存储在 S3 存储桶中。我想通过引用者使用 s3 存储桶策略来限制对这些 Assets 的访问。我应用于存储桶的策略是(删除了识别信息):

{
"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 和其他论坛帖子进行了比较,它似乎是正确的。如果我将此策略应用到我的存储桶,对我网站任何页面上的每项 Assets 的请求都显示为中断,响应状态为 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)访问 Assets ,但它在存储桶策略中定义为“允许”。

如果相关,我的网络应用程序使用 KnpGaufrette 作为文件系统,配置为使用 s3,LiipImagineBundle 反过来使用它来处理任何需要的图像处理。我的服务器还在Web服务器前面安装了Varnish 4以提供缓存(我已经尝试清除varnish缓存,在应用策略后重新启动varnish和apache以防万一)。

如果你能帮忙,那就太好了。

最佳答案

我遇到了同样的问题,你只需要添加

   "aws:Referer": [
"https://www.test.com/*",
"https://test.com/*",
"https://s3-us-west-2.amazonaws.com/mybucket/*"
]

到您的存储桶策略(将 URL 替换为您的区域和存储桶名称),它将开始工作。

希望对您有所帮助。

关于symfony - S3 Bucket Policy by domain 返回 403 Forbidden for object requests in Symfony app with Varnish,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44829630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com