Terraform创建GCP负载均衡报invalid_grant 所有者无法查看SA权限
GCP Terraform部署HTTPS负载均衡问题排查方案
核心配置错误修复
当前Terraform转发规则配置存在两处致命错误,是触发异常的首要原因:
- 资源类型选择错误:
EXTERNAL_MANAGED方案的全局HTTPS负载均衡对应的转发规则是全局资源,必须使用google_compute_global_forwarding_rule资源,不能用区域级的google_compute_forwarding_rule,全局资源不需要传入region参数。 - 字段映射完全错误:转发规则通过
ip_address字段绑定静态IP,target字段必须指向负载均衡的目标HTTPS代理资源的self_link,不能直接传入静态IP值。
修正后的最小转发规则配置参考:
# 原有全局静态IP配置无问题 resource "google_compute_global_address" "main" { name = "main" } resource "google_compute_global_forwarding_rule" "lb" { name = "lb" provider = google-beta project = "owlee-software" ip_protocol = "TCP" load_balancing_scheme = "EXTERNAL_MANAGED" port_range = "443" ip_address = google_compute_global_address.main.self_link target = google_compute_target_https_proxy.lb.self_link # 需提前创建关联的目标HTTPS代理资源 network_tier = "PREMIUM" }
注意:完整部署HTTPS负载均衡还需补全SSL证书、URL映射、后端存储桶、后端服务等关联资源,缺失关联资源同样会导致部署失败。
invalid_grant: Account has been deleted错误排查
该错误多数场景为配置非法触发google-beta provider异常鉴权返回,并非真的服务账号被删除,按以下步骤处理:
- 清理本地凭证缓存:删除本地
~/.config/gcloud/路径下的旧凭证文件,在Terraform的google provider块中显式指定新创建服务账号的密钥路径,避免环境变量、默认凭证中残留已删除旧服务账号的密钥信息。 - 等待权限传播:如果是刚删除旧服务账号立刻创建同名新服务账号,GCP侧IAM数据全局传播最长需要15分钟,等待后重新执行
terraform plan即可。 - 给Terraform使用的服务账号分配负载均衡相关最小权限,无需直接绑定Editor粗粒度角色,核心需要的权限覆盖全局地址、全局转发规则、目标HTTPS代理、URL映射、后端存储桶、SSL证书的增删改查操作即可。
IAM策略报告无法查看问题处理
该报错与项目级权限无关,是云资产服务的权限校验逻辑导致:
- 云资产的IAM策略分析能力要求在组织节点或项目所属的文件夹节点绑定
Cloud Asset Owner/Cloud Asset Viewer角色,项目级绑定该类角色不生效,因为该能力默认需要从组织层级枚举全量资源。 - 角色绑定后等待5-10分钟的全局权限传播周期,再刷新控制台访问即可。
- 如果是个人免费版GCP账号,默认没有组织节点,该策略报告功能本身不支持使用,直接关闭对应视图即可,不影响正常资源部署操作。
内容的提问来源于stack exchange,提问作者SebastianG
相关产品推荐
相关产品推荐

