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

Terraform修改Org Policy时无法识别正确项目的解决求助

问题

我在本地终端用Terraform给特定项目配置禁用「Disable Service Account Key Creation」策略,阻止它继承父组织的策略,代码如下:

# Disable the Disable Service Account Key Creation policy for the project
resource "google_org_policy_policy" "disableServiceAccountKeyCreation" {
  name   = "projects/${var.project_id}/policies/iam.disableServiceAccountKeyCreation"
  parent = "projects/${var.project_id}"

  spec {
    inherit_from_parent = false
    rules {
      enforce = "FALSE"
      }
    }
}

但一直碰到下面的错误:

Error: Error creating Policy: failed to create a diff: failed to retrieve Policy resource: googleapi: Error 403: Your application is authenticating by using local Application Default Credentials. The orgpolicy.googleapis.com API requires a quota project, which is not set by default. To learn how to set your quota project, see https://cloud.google.com/docs/authentication/adc-troubleshooting/user-creds .
│ Details:
│ [
│   {
│     "@type": "type.googleapis.com/google.rpc.ErrorInfo",
│     "domain": "googleapis.com",
│     "metadata": {
│       "consumer": "projects/7640********",
│       "service": "orgpolicy.googleapis.com"
│     },
│     "reason": "SERVICE_DISABLED"
│   }
│ ]

我已经做了这些操作:

  • 用gcloud auth application-default login完成认证
  • 已设置配额项目(确认配置正确)
  • 目标项目已经启用Org Policy API

注意到错误里的projects/7640********项目编号和我的项目编号不符,这个编号来自application_default_credentials.json里client_id的前几位。想问怎么解决?这是不是bug?之前有谷歌人员在GitHub提过相同问题但没得到回复。

解决方案

1. 重置应用默认凭据并指定配额项目

执行以下命令,重新生成凭据并明确绑定你的目标项目作为配额项目:

gcloud auth application-default login --quota-project=YOUR_TARGET_PROJECT_ID

替换YOUR_TARGET_PROJECT_ID为你实际的项目ID,这会覆盖旧的application_default_credentials.json,确保配额项目指向正确的项目。

2. 手动修改凭据文件

如果上述命令无效,找到本地的application_default_credentials.json文件(通常在~/.config/gcloud/目录下),添加或修改quota_project_id字段,设置为你的目标项目ID:

{
  ...
  "quota_project_id": "YOUR_TARGET_PROJECT_ID",
  ...
}

保存后重新运行Terraform命令。

3. 直接在Terraform配置中指定凭据和配额项目

在Terraform的Google Provider配置里,明确指定凭据路径和配额项目,避免依赖默认ADC:

provider "google" {
  project     = var.project_id
  credentials = file("path/to/your/service-account-key.json")
  quota_project = var.project_id
}

推荐使用服务账号密钥而非用户凭据,因为用户ADC容易出现这类配额项目不匹配的问题,服务账号的权限也更可控。

4. 检查目标项目的API启用状态

再次确认目标项目中Org Policy API确实已启用,同时检查错误信息里的那个陌生项目编号(7640开头的),如果是谷歌的默认项目,可能是你的凭据关联了不必要的项目,通过重置凭据可以解除关联。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:03:22