首页/云/云与容器速查/安全组与网络 ACL 的区别

安全组与网络 ACL 的区别

安全组作用于实例网卡且有状态;网络 ACL 作用于子网且无状态,适合整段子网的粗粒度隔离;两者叠加时取交集。

云与容器速查云更新于 2026-10-13

两者的层级不同

安全组作用在实例网卡上,是有状态的:一条入方向规则放行后,这条连接的回包自动通过。网络 ACL 作用在子网边界上,是无状态的:返回流量必须显式写规则放行。安全组适合精细化的实例访问控制,网络 ACL 适合整段子网的粗粒度隔离;两者同时存在时取交集,流量必须两层都能通过。

基本信息

作用对象安全组作用于实例与网卡;网络 ACL 作用于子网边界
状态性安全组有状态,回包自动放行;ACL 无状态,回包要显式放行
规则语义安全组支持允许与拒绝并带优先级;ACL 按编号顺序匹配,命中即停
绑定关系一个安全组可复用于多台实例;一个子网只能关联一个 ACL
默认行为安全组默认拒绝未放行方向;ACL 末尾通常有拒绝兜底规则
排查顺序先看安全组再看 ACL,两层都要确认,否则结论容易反复

安全组与网络 ACL 对比

维度安全组网络 ACL
作用对象实例与网卡子网
状态有状态,回包自动放行无状态,返回流量要显式放行
规则允许与拒绝,带优先级按编号顺序匹配,命中即停
典型用途精细化实例访问控制子网级粗粒度隔离与兜底
变更影响面只影响绑定该组的实例影响关联子网内的全部实例

典型使用场景

  • 用 ACL 给整个子网做兜底,防止运维误开安全组导致大范围暴露
  • 多租户环境按子网隔离不同业务或不同客户
  • 公网子网限制入方向只允许 80、443 与运维网段
  • 数据库子网只允许应用子网访问,其他来源一律拒绝
  • 合规要求多层防护时,安全组与 ACL 同时配置并留档

网络 ACL 规则示例

网络 ACL 规则示例
入:100 允许 TCP 10.10.0.0/16 → 子网          # 内网段放行
入:200 允许 TCP 3306 来自应用安全组或指定网段   # 精确放行数据库访问
入:*   拒绝 0.0.0.0/0(默认兜底)            # 末尾拒绝,顺序必须在最后
出:对称放行返回流量(无状态,必须写)            # 漏掉这步就是单向通
大多数团队用安全组就足够;多租户或强合规环境再加网络 ACL 做子网级兜底。加 ACL 的关系是补一层保险,而不是替代安全组,两者的规则要维持一致的意图。
ACL 无状态意味着返回流量要单独写规则:只配入方向会造成「请求能到、回包出不去」,表现为连接建立后长时间超时,很容易被误判成应用或数据库问题。

易错点

  • ACL 无状态忘放返回流量:单向能通双向不通,排查方向反复跑偏到应用层
  • ACL 与安全组规则打架:只检查了一层就下结论,改动后问题依旧
  • ACL 编号顺序写错:命中的是更靠前的通用规则,后面写的精确规则永远不生效
  • 忽略 ACL 的影响面:它作用于整个子网,误操作会瞬间影响同子网的全部实例

数据来源与参考

  • 阿里云文档:网络 ACL
  • 腾讯云文档:网络 ACL
  • 华为云文档:网络 ACL

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌