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

GCP组织能否创建多Access Context Manager访问策略?默认策略如何修改?

问题描述

本人对组织策略管理完全不熟悉,若问题较为浅显,敬请谅解。

我尝试通过Terraform定义google_access_context_manager_access_policy资源,代码如下:

resource "google_access_context_manager_access_policy" "org-policy" {
  parent   = data.google_organization.org.name
  title    = "Parent policy for ACL restrictions"
}

但遇到如下错误:

╷
│ Error: Error creating AccessPolicy: googleapi: Error 409: Policy already exists with parent organizations/<my-org-id>
│
│   with google_access_context_manager_access_policy.org-policy,
│   on policies.tf line 1, in resource "google_access_context_manager_access_policy" "org-policy":
│    1: resource "google_access_context_manager_access_policy" "org-policy" {
│
╵

执行命令gcloud access-context-manager policies list --organization <my-org-id>后,发现存在一个从未手动设置过的默认组织策略:

NAME          ORGANIZATION   SCOPES  TITLE           ETAG
<redacted-id> <my-org-id>            default policy  <what-s-even-this>

请问:我能否创建另一个组织级访问策略,作为后续google_access_context_manager_access_level等依赖策略的基础?若无法创建,该如何重新定义这个默认策略?

补充信息

Terraform及hashicorp/google版本:

  • Terraform v1.2.9
terraform {
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = ">=3.85.0"
    }
  }
}
解答

1. 能否创建多个组织级访问策略?

不能。Google Access Context Manager规定,每个组织只能存在一个访问策略,你看到的默认策略是系统自动为组织创建的,无需手动操作,因此无法再创建第二个组织级访问策略。

2. 如何用Terraform管理这个默认策略?

不需要重新创建,可通过以下两种方式纳入Terraform管理:

方法一:用数据源获取现有策略

定义数据源拉取默认策略的信息,后续的access_level等资源直接引用该数据源即可:

data "google_access_context_manager_access_policy" "default" {
  parent = data.google_organization.org.name
}

# 示例:创建访问级别并关联默认策略
resource "google_access_context_manager_access_level" "example" {
  access_policy = data.google_access_context_manager_access_policy.default.name
  name          = "example-level"
  title         = "Example Access Level"

  basic {
    conditions {
      ip_subnetworks = ["192.168.0.0/16"]
    }
  }
}

方法二:将默认策略导入Terraform状态

如果需要修改默认策略的属性(比如标题),可先导入它:

  1. 执行导入命令,替换<policy-id>为gcloud命令输出里的NAME值:
terraform import google_access_context_manager_access_policy.org-policy organizations/<my-org-id>/accessPolicies/<policy-id>
  1. 导入后,更新Terraform配置块,确保配置与现有策略属性匹配(也可直接修改标题等属性):
resource "google_access_context_manager_access_policy" "org-policy" {
  parent   = data.google_organization.org.name
  title    = "Parent policy for ACL restrictions" # 此处修改标题后,Terraform会自动更新现有策略
}
  1. 执行terraform plan确认变更,再执行terraform apply完成修改。

注意事项

  • 导入后,该默认策略将由Terraform接管,后续所有变更需通过Terraform操作,避免手动修改导致状态不一致。
  • 访问策略是Access Context Manager所有资源(访问级别、服务边界等)的基础,所有相关资源必须关联到这个唯一的组织级策略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:55:34