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

如何在GCP中通过Terraform控制共享VPC中子网的访问权限

限制特定项目访问共享VPC生产子网的实现方案

一、核心思路:并非只能靠策略,可通过子网级IAM权限精准控制

共享VPC默认会把整个VPC的所有子网开放给已附加的服务项目,但你可以通过子网级别的IAM权限配置,直接指定哪些服务项目能访问特定子网(比如生产子网),这比全局策略更精准高效。当然也可以搭配防火墙规则做进一步流量管控,但IAM权限是基础的访问准入控制手段。

二、Terraform实现方法

在你现有配置的基础上,添加google_compute_subnetwork_iam_member资源,给允许访问生产子网的服务项目分配roles/compute.networkUser角色(该角色允许项目使用子网内的网络资源,比如创建虚拟机、访问子网IP等)。

示例代码(适配你的现有配置)

首先在variables.tf中定义允许访问生产子网的项目列表变量:

variable "allowed-production-projects" {
  type        = set(string)
  description = "允许访问生产子网的服务项目ID列表"
}

然后在现有配置末尾添加以下资源:

# 给指定服务项目分配生产子网的访问权限
resource "google_compute_subnetwork_iam_member" "production_subnet_access" {
  for_each = var.allowed-production-projects
  
  project    = var.host-project
  region     = google_compute_subnetwork.production.region
  subnetwork = google_compute_subnetwork.production.name
  role       = "roles/compute.networkUser"
  member     = "project:${each.key}"
}

三、补充说明

  1. 权限细分:roles/compute.networkUser是基础的子网使用权限,如果你需要更严格的控制(比如只允许读取子网信息而不能创建资源),可以替换为roles/compute.networkViewer等细分角色。
  2. 原配置的作用:你现有的google_compute_shared_vpc_service_project仅完成服务项目与共享VPC的绑定,不会限制子网访问范围,必须配合上述IAM配置才能实现子网级的访问限制。
  3. 防火墙增强管控:如果需要进一步限制流量(比如只允许特定项目的虚拟机访问生产子网的特定端口),可以添加google_compute_firewall资源,指定源项目为允许的服务项目,目标为生产子网的IP段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:32:42