如何限制内部HTTP(S)负载均衡器(ILB)仅允许白名单IP访问?
限制内部HTTP(S)负载均衡器(ILB)仅允许指定IP访问的可行方案
结合你提到的共享VPC、GKE+ILB、HA VPN连接Connectivity Hub的场景,以下是几个可落地的方案,解决跨环境流量管控问题:
方案1:直接在ILB后端服务配置访问控制(推荐,生产端精准管控)
GCP内部HTTP(S) LB的后端服务支持直接配置访问控制策略,基于客户端真实IP做白名单限制,无需依赖VPC防火墙的实例标签,避免之前标签规则无效的问题:
- 进入
svpc-projectB的GCP控制台,找到对应生产环境ILB的后端服务 - 编辑后端服务,在「访问控制」模块中,添加允许的源IP范围:仅保留生产环境跳板机IP、必要的内部运维IP,其余IP全部拒绝
- 原理:内部LB会保留客户端真实源IP,因此直接基于源IP的访问控制能精准匹配跨环境流量
方案2:优化VPC防火墙规则(针对ILB VIP而非后端实例)
你之前用GKE实例标签的规则无效,核心原因是:ILB转发到后端GKE实例的流量,源IP是ILB的内部VIP,而非客户端(如projectA跳板机)的真实IP,导致源为projectA子网的规则无法匹配。调整方案如下:
- 在
svpc-projectB中创建高优先级入站允许规则:- 目标:指定生产ILB的内部VIP(或对应转发规则的IP)
- 源:仅允许生产跳板机IP、授权IP范围
- 端口:80/443(对应ILB的服务端口)
- 再创建低优先级入站拒绝规则:
- 目标:同上述ILB VIP
- 源:0.0.0.0/0
- 端口:80/443
- 这样就能确保只有白名单IP能访问生产ILB,其他流量全部被拦截
方案3:组织级防火墙规则(适配多部门VPC推广)
如果需要将规则推广到其他部门VPC,避免项目级规则的局限性,可在组织或Connectivity Hub层面配置组织级防火墙规则:
- 创建高优先级组织级入站允许规则:
- 应用范围:覆盖所有共享VPC(包括
svpc-projectB及其他部门VPC) - 目标:生产ILB的VIP及端口
- 源:授权IP范围(生产跳板机、必要运维IP)
- 应用范围:覆盖所有共享VPC(包括
- 创建低优先级组织级入站拒绝规则:
- 应用范围:同上述范围
- 目标:生产ILB的VIP及端口
- 源:非生产子网(如projectA子网)、其他部门非授权子网
- 组织级规则会自动应用到所有关联的VPC,无需逐个部门配置
方案4:GKE Network Policy(后端服务层面补充管控)
如果后端是GKE服务,可配合GKE Network Policy在服务层做二次限制:
- 确保
projectB的GKE集群已启用Network Policy(需提前开启对应组件) - 创建Network Policy,指定目标为ILB关联的GKE服务:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: restrict-ilb-access namespace: <你的服务命名空间> spec: podSelector: matchLabels: <你的服务标签>: <对应值> policyTypes: - Ingress ingress: - from: - ipBlock: cidr: <授权IP范围,如生产跳板机IP/32> ports: - protocol: TCP port: 80 - protocol: TCP port: 443 - 该规则会仅允许指定IP访问GKE后端服务,作为ILB访问控制的补充
关于之前方案无效的说明
- 方案1(svpc-projectA出站拒绝)有效但无法推广:因为是项目级规则,仅对当前VPC生效,无法覆盖其他部门VPC
- 方案2(svpc-projectB入站拒绝用GKE标签)无效:ILB转发流量到后端实例时,源IP是ILB的VIP,而非客户端真实IP,导致源为projectA子网的规则无法匹配流量
内容的提问来源于stack exchange,提问作者Joby Kurian
相关产品推荐
相关产品推荐

