You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制GKE指定工作负载访问同VPC内Cloud SQL数据库

GKE 限定指定工作负载访问同VPC Cloud SQL PostgreSQL 实现方案

你之前的节点池+IP白名单思路的核心卡点是对GKE网络配置的认知偏差:GKE 确实不支持为单个节点池配置集群级别的专属出口IP,但完全不需要靠集群全局IP做白名单,按以下优先级选方案即可实现最小粒度的访问控制:

方案1(生产首选):Workload Identity + IAM数据库认证 + Cloud SQL Auth Proxy

这是GCP官方推荐的零信任访问方案,完全不依赖网络层白名单,粒度精确到单个Pod使用的服务账号:

  • 提前给集群开启Workload Identity功能,为需要访问数据库的工作负载创建专属的Kubernetes服务账号(KSA),将其绑定到仅授予Cloud SQL Client最小权限的GCP服务账号(GSA),其他工作负载使用的KSA一律不绑定该GSA权限
  • 开启Cloud SQL PostgreSQL的IAM认证功能,在数据库内为上述GSA创建对应用户,仅授予其业务所需的最小库表权限
  • 为授权Pod注入Cloud SQL Auth Proxy Sidecar,Pod通过Proxy连接数据库时会自动用绑定的GSA身份做认证,无合法身份的连接请求会被直接拒绝
  • 该方案下哪怕其他未授权Pod网络上能探测到数据库地址,因为没有合法IAM身份、没有数据库权限,完全无法建立有效连接,安全性远高于IP白名单模式。

方案2(网络层强隔离):节点池网络标签 + VPC防火墙 + GKE网络策略

如果需要先在网络层阻断未授权流量,可按以下方式配置:

  • 创建专属授权节点池时,为该节点池的所有节点配置独有的VPC网络标签(该配置是节点池级别的,不需要集群全局设置)
  • 在VPC防火墙中添加入站规则,仅允许携带上述专属网络标签的实例访问Cloud SQL的5432端口,其余来源的访问全部拒绝
  • 开启GKE Dataplane V2或者部署Calico网络插件,配置GKE网络策略,仅允许带指定标签的授权Pod对外发起对Cloud SQL 5432端口的访问,避免同节点上的未授权Pod蹭节点网络权限访问数据库。

方案3(适配IP白名单硬性要求):节点池专属NAT出口

如果你的场景必须用固定IP白名单做访问控制,可以通过专属NAT实现节点池独立出口IP:

  • 在集群所属VPC中新建专属Cloud NAT网关,绑定提前申请的静态公网IP作为出口地址
  • 配置NAT流量规则,仅将授权节点池的节点内网IP段路由到该专属NAT网关,其余节点池的流量走默认NAT通道
  • 将该专属NAT的静态IP加入Cloud SQL的IP白名单即可,同样需要配合集群内网络策略限制Pod粒度的访问权限,避免越权。

注意:所有网络层控制都属于边界防护,生产环境必须在数据库层配置强身份校验,不要仅靠IP白名单做唯一的访问控制手段,避免出现网络规则配置疏漏导致的数据泄露风险。

内容的提问来源于stack exchange,提问作者tobias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 19:21:27