子网级的粗粒度隔离
网络 ACL 是作用在子网边界的无状态防火墙,适合「整段子网一刀切」的隔离,例如生产子网只允许办公网段进入管理端口。规则按编号从小到大匹配、命中即结束,末尾通常是默认拒绝。因为作用层级是子网,它比安全组更稳定,不易被单实例的改动带偏,但粒度也更粗。
基本信息
| 特点 | 无状态:入方向放行后,返回流量需要单独放行 |
|---|---|
| 规则匹配 | 按编号从小到大匹配,命中即结束,末尾默认拒绝 |
| 适用场景 | 子网级兜底隔离、多租户环境、合规要求的双层控制 |
| 粒度与稳定性 | 比安全组粗,但作用于整段子网,不易被误改 |
| 变更影响 | 影响关联子网内的全部实例,不区分单台机器 |
| 与安全组叠加 | 两层同时生效时取交集,流量必须都放行 |
适用与不适用
| 场景 | 是否适合 | 原因 |
|---|---|---|
| 整段子网限制管理端口来源 | 适合 | 规则集中,一次配置可长期有效 |
| 多租户子网隔离 | 适合 | 租户边界通常划在子网层面 |
| 单实例精细化放行 | 不适合 | 粒度太粗,应交给安全组 |
| 频繁变化的临时放行 | 不适合 | 子网级改动影响面大,风险高 |
| 合规要求多层防护 | 适合 | 作为安全组之外的兜底层 |
典型使用场景
- 生产子网限制管理端口的来源网段
- 数据库子网只允许应用子网访问
- 公网子网只放开必要端口,其余一律拒绝
- 多租户环境按子网隔离不同租户的流量
- 安全事件处置时快速切断整个子网的进出流量
子网 ACL 规则示例
子网 ACL 规则示例
编号 100:入 允许 TCP 443 来自 0.0.0.0/0
编号 110:入 允许 TCP 22 来自 203.0.113.0/24
编号 120:入 允许 TCP 1024-65535 来自内网(返回流量)
编号 * :入 拒绝 全部
出方向同理对称配置 # 无状态:漏掉这一半就是单向不通安全组已经能覆盖大多数场景;加 ACL 之前先想清楚「谁来维护、多久审计一次」,否则规则腐烂会比没有 ACL 更糟:错误规则长期无人清理,还会挡住后续的正常变更。
无状态是 ACL 最大的坑:入方向放行后必须为返回流量单独写规则(常见做法是放行高位端口范围)。漏掉这一步会出现请求能到达、回包出不去,现象与应用超时极为相似。