【发布时间】:2021-12-21 15:18:39
【问题描述】:
我有一个使用 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 存储桶 + 存储桶策略)不起作用。 CloudFront 将 X-Forwarded-For 标头附加到请求以保留源 IP,但是当我将我的 IP 写入存储桶策略以允许时,我收到拒绝访问。我不明白它的原因。
任何帮助或解释将不胜感激。 最好的问候。
【问题讨论】:
-
真正的问题是什么?“他的这种请求是在同样的情况下通过使用WAF实现的。但我不太明白为什么?”这是什么意思?这和WAF有什么关系?
-
嗨@ErmiyaEskandary 是的,实际上,我在问为什么这个设置在没有WAF 的情况下不起作用。我启用了存储桶日志,在请求中看到了我的 IP,但仍然被拒绝访问。我知道 WAF 选项在我的口袋里。但我的第一个选择是 CloudFront + S3 Bucket + Bucket Policy(如果可能的话)
标签: amazon-web-services amazon-s3 amazon-cloudfront