S3网站终端节点在忽略存储桶策略下进行301重定向

0

【以下的问题经过翻译处理】 这个Bucket授予特定来源IP的GET请求权限。

{
    "Version": "2012-10-17",
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "BUCKETNAME/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "8.8.8.8"
                }
            }
        }
    ]
}

如果Bucket是这样设置的:

  • 静态网站托管:已启用
  • 托管类型:托管静态网站

那么,如果请求来自指定的IP之外:

然而,如果托管类型更改为“重定向对象的请求”,那么来自未经授权的IP的请求会导致:

重定向的目标无关紧要,我在测试中使用了google.com。如果将其设置为重定向到与Bucket URL不同的域名,则网站端点会忽略策略未授予GET权限的事实,并响应301重定向。

curl -v http://BUCKETNAME.s3-website-us-east-1.amazonaws.com
*   Trying 52.217.100.51:80...
* Connected to BUCKETNAME.s3-website-us-east-1.amazonaws.com (52.217.100.51) port 80 (#0)
> GET / HTTP/1.1
> Host: BUCKETNAME.s3-website-us-east-1.amazonaws.com
> User-Agent: curl/7.85.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 301 Moved Permanently
< x-amz-id-2: sqsvHiKbD... 
< x-amz-request-id: TNTFX...
< Date: Thu, 20 Apr 2023 19:59:25 GMT
< Location: http://google.com/
< Server: AmazonS3
< Content-Length: 0
<
* Connection #0 to host BUCKETNAME.s3-website-us-east-1.amazonaws.com left intact
* 

问题是策略是否还应阻止未经授权IP的网站端点的GET请求,因为目前它只会阻止对API端点的请求。

profile picture
EXPERTE
gefragt vor 5 Monaten50 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 301重定向到哪里?是指“https://BUCKETNAME.s3.us-east-1.amazonaws.com/index.html”吗?如果是的话,最终结果将会是403错误。

更新:如果你将重定向到一个外部网站,那么该策略仍然按设计工作 - 此时它没有检索到对象,而是执行重定向,因此未执行“无法执行GetObject调用”的逻辑。 更大的问题:你在这里试图达到什么最终结果?如果你在桶内重定向,那么事情将会按预期工作:第一次调用将会重定向到一个对象,然后拒绝访问该对象。或者有另一种期望的结果吗?

更新二:API和网站端点肯定是不同的 - 在这种情况下(获取不存在对象的GET请求),API端点的行为像预期的一样,因为GET请求到达存储层,然后被计算存储策略,才能“看到”该对象是否存在。网站端点是不同的,因为它遵循Web服务器语义; 重定向首先生效 - 在这种情况下,它是针对一个不存在对象的。 我对Cloudflare不太熟悉,但如果你使用CloudFront做这个重定向,我会在CDN内的“www”站点进行重定向 - 这样你就不必拥有第二个存储桶,可以节省时间和成本。

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen