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

S3桶IP限制与VPC(ECS集群)限制共存配置:ECS访问被拒排查

S3桶IP+VPC访问限制配置错误分析

你的Deny策略逻辑存在问题,同时ECS的访问方式可能不符合要求,导致被拒绝:

核心问题

当前策略的Condition是**逻辑与(AND)**关系,即只有当请求同时满足「来源IP不在指定列表」和「来源VPC不是目标VPC」时才会触发Deny。但实际场景中:

  • 如果ECS通过公网访问S3(而非VPC端点),请求不会携带aws:sourceVpc标识,此时StringNotEquals条件会被判定为成立(因为不存在该键,自然不等于指定VPC ID);同时ECS的公网IP不在你指定的列表中,NotIpAddress条件也成立,两个条件同时满足就触发了Deny。
  • 即使ECS通过VPC端点访问,若策略未处理aws:sourceVpc不存在的情况,也可能出现逻辑判定异常。

修正方案

1. 确保ECS通过S3 VPC端点访问

只有通过VPC端点访问S3的请求,才会携带aws:sourceVpc标识,让策略能识别来源VPC。需要在目标VPC中创建S3网关端点,并确保ECS所在子网的路由表指向该端点,安全组允许相关访问。

2. 修正桶策略的Condition逻辑

调整策略,拒绝所有**既不在指定IP列表,又不属于目标VPC(或无VPC标识)**的请求:

{
    "Effect": "Deny",
    "Principal": "*",
    "Action": [
        "s3:PutObject",
        "s3:ListBucket",
        "s3:GetObject",
        "s3:DeleteObject"
    ],
    "Resource": [
        "arn:aws:s3:::wb-bucket-stag",
        "arn:aws:s3:::wb-bucket-stag/*"
    ],
    "Condition": {
        "NotIpAddress": {
            "aws:SourceIp": [
                "133.32.11.11/32",
                "59.106.11.1/32"
            ]
        },
        "Or": [
            {
                "StringNotEquals": {
                    "aws:sourceVpc": "vpc-0fb1bf67df9b206aa"
                }
            },
            {
                "Null": {
                    "aws:sourceVpc": true
                }
            }
        ]
    }
}

这个策略的逻辑是:

  • 当请求来源IP不在指定列表,并且(来源VPC不是目标VPC,或者请求没有VPC标识)时,执行Deny;
  • 反之,指定IP的请求,或者来自目标VPC的请求(通过VPC端点),都会被允许。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 02:06:32