我们有一个 S3 存储桶,其中包含网站内容,通过代理缓存向公众提供。存储桶的访问权限仅限于代理使用的 IP。一切正常。
最近有新的 IP 添加到代理中,但我们无法将其添加到策略中。直接编辑策略会导致“权限被拒绝”,无论用户拥有什么权限。我们发现可以通过暂时解除对存储桶的公共访问的阻止来解决这个问题。但是,如果我们添加新的 IP,在重新阻止公共访问后,我们会发现全部请求被阻止。如果我们将策略更改恢复为原始 IP 列表,则它会恢复正常工作。
该政策相当基础,如下所示(为保护隐私进行了编辑):
{
"Version": "2012-10-17",
"Id": "my-bucket",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-bucket/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"23.235.32.0/20",
"43.249.72.0/22",
"103.244.50.0/24",
"103.245.222.0/23",
"103.245.224.0/24",
"104.156.80.0/20",
"140.248.64.0/18",
"140.248.128.0/17",
"146.75.0.0/17",
"151.101.0.0/16",
"157.52.64.0/18",
"167.82.0.0/17",
"167.82.128.0/20",
"167.82.160.0/20",
"167.82.224.0/20",
"172.111.64.0/18",
"185.31.16.0/22",
"199.27.72.0/21",
"199.232.0.0/16",
"2a04:4e40::/32",
"2a04:4e42::/32"
]
}
}
}
]
}
答案1
我想你可能会碰到这。
我相信如果你有一个很大的 IP 列表,和你有阻止公共访问在帐户级别打开,然后您就会遇到这种边缘情况。
启用 BPA 后,S3 会检查策略以防止人们允许0/0
或类似行为。对于足够大的 IP 范围或列表,S3 在后台用于确定“公共”的检查范围会太广,并且会超时或出错。
如果您可以缩小一些范围,或者找到另一种方法来保护数据,那么就应该没问题。