You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开启Block all public access后,S3桶策略多IP段组合报错原因咨询

AWS S3桶策略与Block Public Access冲突问题解析

问题背景

我有一个已开启Block all public access的AWS S3存储桶,尝试应用如下桶策略:

{
    "Version": "2012-10-17",
    "Id": "Policy1702547312345",
    "Statement": [
        {
            "Sid": "Stmt1702547293870",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::samples3-900-sample/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "10.0.0.0/8",
                        "40.0.0.0/8",
                        "146.111.111.0/23"
                    ]
                }
            }
        }
    ]
}

但收到报错:您没有编辑桶策略的权限,或者您的桶策略授予的公共访问权限与Block Public Access设置冲突。。我是基础设施管理员,不存在权限缺失问题。当移除10.和40.网段、或移除146.网段保留前两个网段时,策略均可成功应用。请问为何无法将三个网段组合在一起应用?

原因分析

AWS的Block all public access机制会自动校验桶策略是否存在授予公共互联网访问的风险,核心逻辑如下:

  • 10.0.0.0/8 是RFC 1918定义的私有IP网段,仅用于内部网络,属于AWS认可的可信访问范围;
  • 40.0.0.0/8 是AWS专属的IP网段,仅由AWS官方服务使用,同样被视为可信访问范围;
  • 146.111.111.0/23 是公开的可互联网路由的第三方IP网段,不属于AWS认定的可信实体范畴。

当三个网段组合在同一条策略语句中时,策略相当于允许了非可信的公共互联网用户(通过146网段)访问桶内对象,直接违反了Block all public access中「阻止通过桶策略授予公共访问权限」的规则,因此AWS会拒绝应用该策略。

而单独保留前两个网段时,策略仅允许私有网络或AWS内部服务访问,符合可信访问要求,所以能通过校验;单独使用146网段时,可能是AWS的检测逻辑对单一特定公网IP段的判定存在例外,或者你可以再次确认Block all public access是否完全启用了所有子项。

解决办法

如果确实需要同时允许这三个网段访问,可采取以下两种方式:

  • 拆分策略语句:把三个网段分成两条独立的Statement,一条包含10.0.0.0/8和40.0.0.0/8,另一条单独包含146.111.111.0/23;
  • 调整Block Public Access设置:临时关闭「Block public access to buckets and objects granted through bucket policies」子项(此操作会降低安全性,仅在必要时使用)。

内容的提问来源于stack exchange,提问作者user2700022

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 00:00:56