本文介绍了托管IP限制桶策略的CloudFront和S3网站不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用S3和CloudFront进行了静态网站设置。正在使用CloudFront附加公司SSL证书,不需要缓存。起初,我们的存储桶是完全公开的,但最近,我们正在改变网站范围,它将在内部使用。所以我需要限制除我们公网IP之外的所有访问权限。

我使用的存储桶策略类似;

{
    "Version": "2012-10-17",
    "Id": "SourceIP",
    "Statement": [
        {
            "Sid": "SourceIP",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::bucket-name",
                "arn:aws:s3:::bucket-name/*"
            ],
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": [
                        "ip1/32",
                        "ip2/32",
                        "ip3/32",
                        "ip4/32"
                    ]
                },
                "IpAddress": {
                    "aws:SourceIp": "0.0.0.0/0"
                }
            }
        }
    ]
}

我做了一些研究,在相同的情况下使用WAF满足了这种要求。但我不太明白为什么WAFless设置(启用静态网站托管的CloudFront+S3 Bucket+Bucket策略)不起作用。CloudFront正在将X-Forwarded-For标头附加到保留源IP的请求,但当我将我的IP写入存储桶策略以允许时,我收到的访问被拒绝。我不明白为什么会这样。

任何帮助或解释都将不胜感激。致以最诚挚的问候。

推荐答案

doc: Evaluation logic for conditions with multiple keys or values

在您的示例中,"NotIpAddress""IpAddress"的计算结果为和。这就是问题所在。拆分或只删除"IpAddress"部分即可。

这篇关于托管IP限制桶策略的CloudFront和S3网站不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 04:59