安全组规则优先级冲突的本质是高优拒绝规则覆盖低优放行规则。需按优先级升序检查入方向规则,导出规则横向比对,用流日志或诊断工具验证拦截点,临时禁用可疑拒绝规则做因果验证。

安全组规则优先级冲突不是“规则没生效”,而是“生效了错的那条”。它不报错、不告警,只默默把本该放行的流量拦在门外。排查关键在于看清规则执行顺序,而不是反复确认端口是否写了80或22。
看清楚规则方向和优先级数值
安全组规则分入方向和出方向,公网访问服务必须查入方向。每条规则都有一个“优先级”数值,数字越小,优先级越高,匹配顺序越靠前。系统一旦命中某条规则(无论允许或拒绝),就立即终止后续匹配。
- 登录云控制台,进入安全组规则列表,切换到“入方向”页签
- 按“优先级”列升序排列(从小到大),顶部就是最先执行的规则
- 重点检查:是否存在一条优先级很小(如1、10、100)的“拒绝”规则,源IP是0.0.0.0/0或覆盖了你的访问IP,目标端口又恰好包含你业务端口
- 例如:优先级为1的规则拒绝所有TCP 80-8080端口,而你后来加的优先级为100的“允许TCP 80”就完全无效
用命令行导出全部规则做横向比对
控制台界面容易漏看隐藏规则,尤其当规则数超过20条时。直接拉取原始数据更可靠。
- 阿里云可使用CLI:
aliyun ecs DescribeSecurityGroupAttribute --SecurityGroupId sg-xxx - AWS可用:
aws ec2 describe-security-groups --group-ids sg-xxx - 导出后用Excel或文本编辑器筛选:协议=TCP、端口范围含你的业务端口、策略=Deny、优先级数值低
- 特别注意“默认拒绝”类规则——有些云平台会自动生成优先级65500的DenyAllInBound,它是兜底项,但不会在控制台显眼位置提示
模拟真实请求验证拦截点
别只看规则,要验证哪条真正在起作用。云平台通常提供流量验证工具,比人工猜更快。
- 阿里云:在ECS实例详情页 → “网络与安全” → “流日志” → 筛选“拒绝”动作 + 目标端口,查看action字段是否为drop,并记录securityGroupId
- Azure:用Network Watcher的IP Flow Verify,输入你的源IP、VM内网IP、目标端口(如3389),结果会明确返回“Denied by rule: DenyRDPFromInternet”
- 腾讯云:在CVM控制台 → “安全组” → 点击对应安全组 → “规则诊断”,输入测试参数一键检测
临时关闭高优拒绝规则做最小化验证
怀疑某条高优先级拒绝规则干扰时,不要删,先临时禁用(如果平台支持)或调低其优先级,观察业务是否恢复。这是最直接的因果验证方式。
- 禁用后若访问立刻正常,说明问题定位准确
- 恢复该规则前,应将你的放行规则优先级设得比它更低(数值更小),或改写拒绝规则的源IP/端口范围,避免交集
- 切记:测试完成后必须还原,避免生产环境暴露风险










