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

如何授权Google服务账户管理Cloud Domain以解决Terraform部署报错?

问题:Terraform Cloud中服务账户无法创建Cloud Run域名映射

我使用Terraform管理Google Cloud资源,本地通过个人邮箱认证时执行计划和变更一切正常,曾多次成功创建google_cloud_run_domain_mapping资源——所用域名是通过Google购买的,且我的个人邮箱是该域名的已验证所有者。

近期我将所有Terraform状态迁移至Terraform Cloud,按照最佳实践创建了服务账户terraform@my-project.iam.gserviceaccount.com,为其赋予了管理所有资源的足够权限,并使用该服务账户密钥在Terraform Cloud中完成Google认证。现在所有资源变更均通过该服务账户执行,而非我的个人邮箱。

但目前创建google_cloud_run_domain_mapping资源时部署失败,报错信息如下:

Error: Error waiting to create DomainMapping: resource is in failed state "Ready:False", message: Caller is not authorized to administer the domain 'my-domain.com'.

已尝试的方案

  • 通过Google Registrar添加服务账户为域名用户:在域名设置的「注册设置>域名权限」页面,仅提示Domain permissions for my-domain.com are managed by Cloud Domains,无添加新用户的选项。
  • 通过Cloud Domains添加服务账户为域名用户:在Google Cloud项目的Cloud Domains注册列表页面,找不到添加服务账户至域名的操作入口。
  • 为服务账户添加Owner角色:给服务账户分配了权限过高的Owner角色,重新执行Terraform计划后仍出现相同报错(不确定是否需要等待权限变更生效)。
  • 尝试将个人邮箱添加为服务账户成员:找不到操作入口,同时不确定该方案是否有用——因为认证主体仍是服务账户。

解决方案

要让服务账户有权限管理Cloud Run域名映射,需完成以下核心操作:

  1. 验证服务账户的域名所有权
    服务账户需要成为域名的已验证所有者:

    • 用你的个人邮箱登录Google Search Console(你是当前域名的所有者)。
    • 将服务账户邮箱terraform@my-project.iam.gserviceaccount.com添加为域名的所有者权限。
    • 按照指引完成域名验证(通常通过添加DNS TXT记录实现,需在域名的DNS设置中配置对应记录)。
  2. 为服务账户分配必要的IAM权限
    除基础资源权限外,确保服务账户拥有以下关键权限:

    • run.domainMappings.create:允许创建Cloud Run域名映射
    • domains.registrations.get:允许获取域名注册信息
      可直接分配预定义角色roles/run.admin,或创建包含上述权限的自定义角色。
  3. 等待权限与验证生效
    权限变更和域名所有权验证通常需要15-30分钟生效,完成后重新执行Terraform计划即可。

额外说明:如果域名由Cloud Domains管理,还可在Cloud Domains的IAM设置中,为服务账户添加roles/domains.admin角色,确保其拥有域名管理的完整权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 11:55:28