3. VPC网络生产安全设计
在 Google Cloud 上,生产环境网络安全的根基是 VPC(Virtual Private Cloud)。与许多云平台不同,Google Cloud 的 VPC 是全局资源:一个 VPC 可以横跨多个区域,子网则绑定到具体区域。理解这一层“全局 VPC + 区域子网”的结构,是后续做网络分段和微隔离的前提。生产设计的目标不是把网络连起来,而是让东西向流量默认不可达、南北向流量可审计、跨边界访问可管控。
一、VPC 与子网:先规划地址,再谈隔离
生产环境通常不会只用一个 VPC。推荐按“环境 + 用途”划分:例如 prod-shared-vpc 承载共享服务(集中出口、私有 DNS、日志汇聚),prod-app-vpc 承载业务应用,prod-data-vpc 承载数据库与数据平台。子网按区域和层级切分,例如在 asia-east1 下划分 app-tier-subnet 10.10.1.0/24、data-tier-subnet 10.10.2.0/24,在 asia-southeast1 下划分 app-tier-subnet 10.20.1.0/24。地址段要预留扩展空间,避免后期因 CIDR 冲突无法对等互联。
子网创建时有两个关键开关:Private Google Access 和 Flow Logs。前者允许没有外部 IP 的实例访问 Google API 与服务的公网地址;后者把子网内流量的五元组、字节数、时间戳写入 Cloud Logging,是事后审计与异常检测的数据源。生产子网应默认开启 Flow Logs,采样率可先设为 50%,高敏感子网设为 100%。
二、防火墙规则:从“允许”转向“默认拒绝 + 显式放行”
VPC 防火墙规则是有状态、按优先级(0–65535,数字越小优先级越高)匹配的。生产设计应遵循:入站默认拒绝,出站默认拒绝,只放行必要流量。规则通过“目标标签/服务账号 + 源标签/源范围 + 协议端口”三元组精确表达。例如,只允许前端实例访问后端 8080 端口:
gcloud compute firewall-rules create allow-fe-to-be-8080 \
--network=prod-app-vpc \
--direction=INGRESS \
--action=ALLOW \
--rules=tcp:8080 \
--source-tags=fe-tier \
--target-tags=be-tier \
--priority=1000
这里用网络标签而非 IP 段作为源,意味着实例迁移或扩缩容时规则无需改动,这是微隔离的关键。对于跨项目访问,应改用服务账号作为源和目标,避免标签被误用。出站规则同样要收紧:默认拒绝所有出站,再按需放行到特定 CIDR 或通过 0.0.0.0/0 配合目标标签放行到互联网,并配合 Cloud NAT 隐藏源地址。
三、私有 Google 访问与 Private Service Connect
生产实例不应拥有外部 IP。开启 Private Google Access 后,实例访问 *.googleapis.com 时流量走 Google 内部网络,不经过公网。但 Private Google Access 只解决“访问 Google API”,若要访问托管服务(如 Cloud SQL、Memorystore)的私有 IP,需要配置私有服务访问(Private Service Access),通过 VPC 对等连接到 Google 管理的服务网络。更现代的方式是 Private Service Connect:在消费者 VPC 中创建一个内部 IP 端点,指向服务附件,实现单向、可审计的私有访问,且不暴露服务方的整个网络。
四、VPC Service Controls:给数据画一条“防泄漏边界”
防火墙和私有访问解决的是“网络可达性”,而 VPC Service Controls(VPC SC)解决的是“数据能否被带出边界”。它围绕项目、VPC 和服务定义一条服务边界(Service Perimeter),边界内的 Cloud Storage、BigQuery 等资源默认不能被边界外的客户端访问,即使 IAM 权限允许。生产环境通常为数据平台单独建立边界,把 BigQuery、Cloud Storage、KMS 纳入其中,并配置访问级别(Access Levels)允许特定 IP 段或设备通过。边界模式建议先用试运行(Dry Run)观察哪些调用会被拦截,确认无误后再切换为强制模式。
五、生产分段与微隔离的落地顺序
实际落地时,建议按以下顺序推进,避免一次性改动引发业务中断。第一步,梳理现有实例的标签与服务账号,建立“谁需要访问谁”的流量矩阵;第二步,在非生产环境用 Flow Logs 观察真实流量,识别出被默认拒绝规则误伤的合法调用;第三步,先创建高优先级的放行规则,再逐步收紧默认规则;第四步,对数据层启用 VPC Service Controls 的 Dry Run 模式,观察 1–2 周;第五步,确认无异常后切换强制模式,并把访问级别与 IAM 条件结合使用。
tier=fe|be|data、env=prod,由 CI/CD 强制校验。六、验证与排障要点
规则生效后,用 gcloud compute firewall-rules list --filter="network=prod-app-vpc" 核对优先级与目标标签;用 Flow Logs 查询被拒绝的连接,确认是预期拦截还是配置遗漏。VPC Service Controls 的拦截会返回 PERMISSION_DENIED 并附带 vpcServiceControlsUniqueIdentifier,可据此在审计日志中定位是哪条边界规则触发。若发现 Dry Run 阶段有大量合法调用被标记,应优先调整访问级别而非直接放宽边界。
生产网络安全的本质是“默认不信任 + 可观测 + 可回滚”。VPC、子网、防火墙、私有访问和 VPC SC 各自解决不同层面的问题,只有把它们组合成一条完整的控制链,才能在保持业务连通的同时,把数据泄漏和横向移动的风险压到可控范围。