华为云 VPC 安全组 vs 网络 ACL:选型与常见误配对照

举报
yd_294423728 发表于 2026/10/26 11:38:32 2026/10/26
【摘要】 华为云 VPC 安全组 vs 网络 ACL:选型与常见误配对照很多人在华为云上刚建好 VPC、子网和 ECS 后,会同时看到「安全组」和「网络 ACL」两个入口。常见的情况是:只配了安全组,网络 ACL 保持默认;或者两边规则互相打架,SSH / 健康检查 / 跨子网互访莫名不通。本文用选型对照和误配清单,把两者讲清楚,方便按场景落地。 一句话区别维度安全组(Security Group)...

华为云 VPC 安全组 vs 网络 ACL:选型与常见误配对照

很多人在华为云上刚建好 VPC、子网和 ECS 后,会同时看到「安全组」和「网络 ACL」两个入口。常见的情况是:只配了安全组,网络 ACL 保持默认;或者两边规则互相打架,SSH / 健康检查 / 跨子网互访莫名不通。本文用选型对照和误配清单,把两者讲清楚,方便按场景落地。

一句话区别

维度 安全组(Security Group) 网络 ACL(Network ACL)
作用对象 弹性网卡 / 实例级(挂到 ECS、ELB 等) 子网级(绑到整个子网)
规则状态 有状态:回程流量自动放行 无状态:入、出方向都要显式放行
默认行为 新建安全组通常「出方向全放行、入方向仅本安全组互通」等(以控制台当前默认为准) 默认网络 ACL 一般允许所有入/出;自定义 ACL 未匹配时默认拒绝
规则顺序 多条规则之间是「允许优先」一类的集合语义(命中允许即可) 按优先级编号从小到大匹配,先匹配先生效
典型用途 业务端口、跳板机、数据库只给应用网段 子网隔离、临时封禁网段、统一收口南北向

可以记成:安全组管「这台机器 / 这块网卡」,网络 ACL 管「这个子网里所有人」。

什么时候用安全组就够

以下场景,很多人只配安全组就够用:

  1. 单层业务:几台 ECS 同子网,对外开 80/443,管理口 22 只给办公网或堡垒机。
  2. 应用 → 数据库:应用安全组出方向访问 3306/6379;数据库安全组入方向只放行应用安全组 ID(比写散落的 IP 更稳)。
  3. ELB 后面的后端:后端安全组放行 ELB 健康检查源地址与业务端口(共享型常见探测网段与独享型不同,需按产品文档核对)。

安全组的有状态特性,对「客户端主动连出、服务端被动应答」特别友好:入方向放行 443 后,回程不用再写一条出站放行。

什么时候值得加网络 ACL

网络 ACL 更适合「子网边界」策略,例如:

  1. 多子网分层:Web 子网、App 子网、DB 子网;希望在子网边界统一禁止 DB 子网直接访问公网。
  2. 应急封禁:某个网段扫端口,需要在子网级快速拒绝,而不必逐台改安全组。
  3. 合规分区:测试子网与生产子网之间强制「默认拒绝 + 白名单放行」。

注意:网络 ACL 是无状态的。放行入方向 TCP 443 时,还要放行出方向的回程(常见写法是放行 ephemeral 端口范围,或按实际客户端端口规划)。只写半边规则,是很多人第一次配 ACL 时最容易踩的坑。

选型建议(可直接照着选)

  • 默认起步:安全组做细粒度端口控制;子网继续用默认网络 ACL(全放行),先把连通性跑通。
  • 需要子网级隔离或统一封禁:再创建自定义网络 ACL,绑到对应子网。
  • 两者同时存在时:流量必须同时满足安全组和网络 ACL。任一侧拒绝,表现就是「ping 不通 / 连接超时」。
  • 优先级心智:先想「这台实例该不该开这个端口」(安全组),再想「这个子网整层该不该出现这类流量」(ACL)。

常见误配清单

1. 只改了安全组入方向,忘了出方向或对端安全组

跨安全组互访时,常见情况是:A 的出方向默认已放行,但 B 的入方向没有放行 A 的安全组或网段;或者反过来,有人把出方向改成「拒绝全部」却没给必要目的端口留白名单。排查时习惯性两边一起看:源安全组出方向 + 目的安全组入方向。

2. 网络 ACL 只放开入方向,回程被默拒

无状态意味着:

  • 入方向允许 TCP 22;
  • 出方向还要允许对应回程(目的端口为客户端临时端口)。

很多教程示例会写「出方向允许 1024–65535」。具体范围以业务与镜像为准,但「出入成对」这条原则不要省。

3. ACL 优先级写反或重叠

网络 ACL 按优先级数字从小到大匹配。两条规则一个允许、一个拒绝时,数字更小的先生效。常见的情况是:想「拒绝某个 IP,再允许网段」,却把允许规则写在了更小的优先级上,导致拒绝永远轮不到。

4. 把安全组规则写到了错误的网卡 / 实例

一台 ECS 多网卡,或弹性网卡后来换绑时,安全组挂错网卡会导致「控制台看实例在、业务端口却不通」。改完规则后,确认关联的是正在跑业务的那块网卡。

5. ELB / 健康检查探测源被 ACL 或安全组拦掉

ELB 后端异常时,除了检查监听器和后端进程,还要核对:

  • 后端安全组是否放行探测源;
  • 后端所在子网的网络 ACL 入/出是否放行探测与回程。

只放安全组、ACL 仍拒绝探测网段,是「后端全变异常」的高频组合。

6. 用网络 ACL「细到端口级」替代安全组

技术上可以,但运维成本高:ACL 无状态、按子网生效,改一次影响子网内所有实例。端口级授权更适合放在安全组;ACL 更适合粗粒度隔离和黑白名单网段。

7. 默认 ACL 与自定义 ACL 绑错子网

新建自定义 ACL 后如果忘记绑定子网,策略不会生效;绑错到别的子网,则会出现「改了 A 子网规则,B 业务却挂了」。改完在控制台核对「关联子网」列表。

推荐落地顺序

  1. 画清子网:公网入口 / 应用 / 数据,能分则分。
  2. 每个角色一个安全组(web / app / db / bastion),用安全组 ID 互引,少写散落 IP。
  3. 连通性先在默认 ACL 下验证;稳定后再加自定义 ACL 做子网边界。
  4. 变更时一次只动一侧(先安全组或先 ACL),并保留回滚:记下原规则或先复制一份 ACL。
  5. 用同一 VPC 内的另一台 ECS curl / nc 验证,再从公网或专线侧验证,避免把「本机防火墙」和「云边规则」混在一起误判。

快速自检表

  • [ ] 目的实例的安全组入方向是否放行协议 / 端口 / 源(IP 或安全组)?
  • [ ] 源侧出方向是否被收紧?跨安全组时对端是否成对放行?
  • [ ] 子网是否绑定了自定义网络 ACL?入、出是否成对?
  • [ ] ACL 优先级是否按预期先匹配?
  • [ ] ELB / 健康检查探测源是否在安全组与 ACL 中都放行?
  • [ ] 规则是否挂在正确的网卡 / 正确的子网上?

小结

安全组负责实例级、有状态的精细授权;网络 ACL 负责子网级、无状态的边界控制。大多数业务可以「安全组为主、默认 ACL 为辅」;真正需要分区隔离或应急封禁时,再引入自定义网络 ACL,并牢记无状态成对放行和优先级顺序。两边同时生效,排查时按「安全组 → ACL → 本机防火墙 / 路由」的顺序对照,通常能较快定位误配点。

(配置项名称与默认值以华为云控制台当前区域文档为准;共享型 / 独享型 ELB 的探测源地址请对照对应产品说明。)

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。