4. 网络配置基础:VPC与子网规划、安全组规则、网络ACL策略

在蓝绿发布流水线中,网络配置是保障流量隔离与安全防护的第一道防线。错误的VPC规划或松散的访问控制策略,可能导致蓝绿环境流量串扰、攻击面扩大或发布回退失败。本章聚焦VPC与子网设计、安全组规则、网络ACL策略三个核心维度,为后续流水线集成防护验证奠定网络基础。

4.1 VPC与子网规划:蓝绿环境的网络隔离底座

VPC(Virtual Private Cloud)为蓝绿发布提供逻辑隔离的网络空间。子网划分决定了蓝绿集群、负载均衡器、数据库等组件的部署位置与路由策略。合理的规划应遵循以下原则:

  • 独立VPC策略:为蓝绿环境分别创建独立的VPC,实现完全的网络隔离。适用于金融、医疗等强合规场景。
  • 单VPC多子网策略:在同一个VPC内,为蓝绿环境分配不同的子网(如 10.0.1.0/24 为蓝环境,10.0.2.0/24 为绿环境),通过路由表和安全策略控制互通。适用于中小规模、追求资源复用率的团队。
  • 子网粒度规划:每个子网至少预留 /24 掩码(254个可用IP),避免后期扩容困难。将前端负载均衡子网、应用子网、数据子网分层规划。
规划要点:蓝绿环境的子网CIDR块不应重叠,且需预留至少一个备用子网用于紧急回退或灰度验证。建议使用 10.0.0.0/16 大段,按环境切分为 /24 子网。
VPC与子网规划架构图 VPC与子网规划架构图 VPC 蓝环境 (10.0.0.0/16) 蓝-应用子网 10.0.1.0/24 蓝集群节点 蓝-数据子网 10.0.3.0/24 RDS / Redis 蓝-LB子网 10.0.5.0/24 ALB / NLB 蓝-备用子网 10.0.7.0/24 紧急回退 VPC 绿环境 (10.1.0.0/16) 绿-应用子网 10.1.1.0/24 绿集群节点 绿-数据子网 10.1.3.0/24 RDS / Redis 绿-LB子网 10.1.5.0/24 ALB / NLB 绿-备用子网 10.1.7.0/24 紧急回退 隔离 每个VPC包含应用、数据、LB、备用四类子网,CIDR不重叠,支持独立路由与安全策略

4.2 安全组规则:实例级状态化访问控制

安全组(Security Group)作为实例级别的虚拟防火墙,支持状态化检测:允许规则自动生成反向回程流量放行。在蓝绿发布中,安全组规则需精确控制蓝绿集群之间的互访、负载均衡器到后端的流量、以及运维管理通道。

规则方向 源/目标 协议与端口 用途说明
入站(LB→应用) 蓝-LB安全组 TCP 8080 允许负载均衡器转发流量到蓝环境应用实例
入站(LB→应用) 绿-LB安全组 TCP 8080 允许负载均衡器转发流量到绿环境应用实例
入站(运维) 堡垒机安全组 TCP 22 SSH管理通道,仅允许跳板机访问
出站(应用→数据) 数据子网CIDR TCP 3306 应用实例访问RDS数据库
出站(应用→外部) 0.0.0.0/0 TCP 443 应用实例对外HTTPS调用(需最小化)
安全组避坑:蓝绿环境的安全组应使用安全组ID作为源/目标,而非CIDR。这样当蓝绿环境迁移或扩缩容时,安全组规则自动适配,无需手动修改IP列表。同时,拒绝所有入站流量(默认deny),仅显式放行必要端口。

4.3 网络ACL策略:子网级无状态访问控制

网络ACL(Access Control List)作用于子网边界,提供无状态的出入站规则。与安全组不同,ACL需要同时配置入站和出站规则,且规则按编号从小到大顺序匹配。在蓝绿发布场景中,ACL用于实现子网级别的粗粒度隔离,作为安全组的补充防线。

以下为蓝环境应用子网的ACL策略示例:

# 蓝环境应用子网网络ACL (10.0.1.0/24)
# 入站规则
Rule #100: 允许 LB子网 (10.0.5.0/24) → TCP 8080
Rule #110: 允许 堡垒机 (10.0.100.0/24) → TCP 22
Rule #120: 允许 蓝环境内部 (10.0.0.0/16) → 所有协议
Rule #*: 拒绝 所有流量

# 出站规则
Rule #100: 允许 → 数据子网 (10.0.3.0/24) TCP 3306
Rule #110: 允许 → 外部API (特定CIDR) TCP 443
Rule #120: 允许 → 蓝环境内部 (10.0.0.0/16) 所有协议
Rule #*: 拒绝 所有流量
ACL与安全组协同策略:网络ACL负责子网边界的粗粒度过滤(如禁止非LB子网流量进入应用子网),安全组负责实例级别的细粒度控制(如仅允许特定应用端口)。两者结合形成“边界+实例”纵深防御体系。
安全组与网络ACL协同防护流程 安全组与网络ACL协同防护流程 外部流量 网络ACL 子网边界无状态过滤 安全组 实例级状态化过滤 应用实例 蓝/绿集群 ACL拒绝 → 丢弃 安全组拒绝 → 丢弃 协同防护流程说明 1. 外部流量首先到达子网边界,网络ACL按规则顺序进行无状态匹配; 2. 通过ACL的流量进入子网后,由安全组进行实例级状态化检查; 3. 两层均通过则流量到达应用实例;任意一层拒绝则直接丢弃; 4. 蓝绿环境各自独立配置ACL和安全组,实现子网级+实例级纵深防御。

4.4 蓝绿发布中的网络配置验证清单

在流水线集成蓝绿发布前,需对网络配置进行逐项验证,确保流量隔离与安全防护符合预期。以下为验证清单:

验证项 检查内容 预期结果
VPC隔离性 蓝绿VPC之间是否存在对等连接或路由泄露 无直接路由,流量完全隔离
子网CIDR唯一性 蓝绿子网CIDR是否重叠 CIDR无重叠,预留备用段
安全组最小权限 是否仅放行LB→应用、堡垒机→应用等必要端口 无0.0.0.0/0入站放行(除LB健康检查外)
ACL规则顺序 ACL规则编号是否合理,拒绝规则是否在末尾 显式允许在前,隐式拒绝在后
状态化回程 安全组是否依赖状态化自动放行回程流量 无需手动配置出站回程规则
蓝绿切换连通性 切换后LB能否正常转发到新环境应用实例 健康检查通过,流量正常分发
自动化验证建议:将上述验证清单集成到CI/CD流水线中,使用基础设施即代码(IaC)工具(如Terraform、AWS CloudFormation)进行网络配置的自动化校验。每次发布前执行网络预检,避免人为配置错误导致生产故障。