VPC 网络分为两层防御边界:子网级网络 ACL、实例级安全组,两层叠加构成从子网入口到单台 EC2 的纵深网络防护,两者机制、适用场景完全不同,分开搭配使用才能兼顾易用性与安全兜底。
一、安全组:绑定 ENI 的有状态实例级防火墙
安全组挂载在 EC2 弹性网卡 ENI 上,管控单实例进出流量,仅支持允许规则 ,所有未匹配规则默认全部丢弃;核心特性为有状态 :入方向放行某 IP 端口后,该连接的返回响应流量自动放行,无需额外配置出站规则。
1. 标准规则五元组与分层最佳实践
规则组成:协议、端口范围、源 / 目标(CIDR / 安全组 ID / 前缀列表)、描述。 高频规范入站规则:
- 引用 ALB 安全组 ID 放行 80/443 网页流量(不填固定 IP,ALB 节点 IP 动态变更无需改规则);
- 办公固定 CIDR 放行 SSH 22 远程管理;
- 公网 0.0.0.0/0 仅开放 80/443,禁止公网放开 22/3389 管理端口; 出站默认配置全量允许 0.0.0.0/0,信任实例主动发起的外部调用。
2. 安全组 ID 互引分层架构(微服务标准方案)
安全组可直接引用其他安全组作为访问源,搭建三层隔离:
- ALB 负载均衡安全组;
- Web 前端实例安全组,仅允许 ALB-SG 入站;
- API 后端实例安全组,仅允许 Web-SG 入站; 无需维护大量静态 IP 段,集群扩缩容、IP 变更无需修改任何访问规则。
配额说明(官方 2026 标准)
单安全组独立拥有 60 条入站 IPv4 规则、60 条出站 IPv4 规则,合计 120 条;IPv4 与 IPv6 规则分开计数;单弹性网卡最多绑定 5 个安全组,叠加总规则上限 1000 条,复杂多分层架构建议使用前缀列表合并大量 IP 段节省规则。
二、网络 ACL:子网全局无状态防火墙
网络 ACL 绑定整个子网,管控子网内所有实例进出流量,和安全组三大核心差异:
- 无状态 :入站、出站规则完全独立,放行入站访问后,必须额外配置出站临时端口(1024-65535)才能返回响应;
- 同时支持 Allow 允许、Deny 拒绝两类规则;
- 规则按编号从小到大依次匹配,命中第一条即停止校验。
适用场景(仅两类场景推荐开启自定义 NACL)
- 需要全局批量拒绝恶意攻击 IP 段(安全组仅支持白名单允许,无法批量黑名单拦截);
- 子网统一兜底拦截高危端口,作为安全组上层兜底防护。
配额硬性约束(原文数值修正)
- 单 VPC 最多可创建200 个独立网络 ACL 资源 ;
- 单条网络 ACL 默认仅支持入站 20 条、出站 20 条规则 ,最高可提工单扩容至 40 入 / 40 出;规则过多会降低子网转发性能,大批量 IP 拦截推荐使用 AWS Network Firewall。
关键限制:NACL 规则源 / 目标仅支持 CIDR 网段,无法引用安全组 ID ,多层业务隔离不适合仅靠 NACL 实现。
三、两者配合落地运维经验
- 安全组复用原则:同一业务角色实例共用一套安全组(web-sg、api-sg、db-sg),禁止单台实例单独新建安全组;统一修改规则即可全量生效,大幅降低运维成本。
- 强制填写规则描述:每条规则备注开放原因、对接方、联系人,避免长期无人知晓陌生 IP 段用途,示例:「允许合作伙伴测试环境 SSH 接入,对接人张三」。
- 自动化合规扫描,消除高危配置
- AWS Config 配置规则自动检测安全组存在0.0.0.0/0开放 22/3389 端口,及时告警;
- AWS Security Hub 内置 CIS 基线检查,自动扫描全网安全组、NACL 的开放式高危规则,统一汇总风险清单。
