能否在GCP项目/文件夹/组织级基于IP范围限制资源访问?
可以实现:将GCP部署资源的访问限制在指定项目/文件夹/组织IP范围内
完全可以实现把部署资源的访问权限限制在指定GCP项目、文件夹或组织内的IP范围,以下是具体的实现方案:
一、针对VPC内部部署的资源(如VM、GKE集群、带VPC连接器的Cloud Run)
这类资源的访问控制可以通过VPC防火墙规则实现:
- 批量导出目标范围的子网CIDR
用gcloud命令导出目标文件夹/组织/项目下所有VPC子网的IP段:- 针对文件夹:
gcloud asset search-all-resources --asset-types=compute.googleapis.com/Subnetwork --folder=engg --format="value(ipCidrRange)" - 针对组织:
gcloud asset search-all-resources --asset-types=compute.googleapis.com/Subnetwork --organization=ORG_ID --format="value(ipCidrRange)" - 针对单个项目:
gcloud compute networks subnets list --project=engg --format="value(ipCidrRange)"
- 针对文件夹:
- 创建防火墙规则
- 新建允许规则:将上述导出的CIDR作为源IP范围,允许访问应用对应的端口(如80、443),设置较高优先级(如1000)
- 新建默认拒绝规则:拒绝所有非上述源IP的流量访问目标端口,设置较低优先级(如2000)
二、针对对外暴露的资源(如Cloud Run、App Engine、Cloud Load Balancing)
这类资源需要用Cloud Armor安全策略来做IP层面的访问控制:
- 收集目标范围的外部IP列表
导出项目/文件夹/组织下所有资源的外部IP(包括VM、负载均衡实例等):
若有负载均衡的外部IP,额外导出:gcloud asset search-all-resources --asset-types=compute.googleapis.com/Instance --folder=engg --format="value(networkInterfaces[0].accessConfigs[0].natIP)"gcloud compute forwarding-rules list --folder=engg --format="value(IPAddress)" - 创建Cloud Armor策略
- 新建安全策略,添加允许规则,将整理后的外部IP列表设为源IP范围
- 将该策略关联到应用的入口(比如Cloud Run的自定义域名负载均衡、App Engine的前端配置)
注意事项
- 动态IP维护:如果项目内使用临时外部IP的资源,需要定期更新IP列表,建议尽量为核心资源分配静态IP
- 批量管理:针对文件夹/组织级别的规则,可以用Terraform或Config Connector批量配置,减少手动维护成本
- 验证规则:设置完成后,用项目外的IP尝试访问,确认被拦截;用项目内资源的IP访问,确认正常通行
内容的提问来源于stack exchange,提问作者rohit agrawal
相关产品推荐
相关产品推荐

