Terraform运行plan报GCP 403权限错误及gcloud登录问题求助
问题根因
你碰到的403报错和ADC登录提示本质是同一个问题:当前Terraform调用GCP API使用的身份未完成正确授权,既没有GCP组织节点的读取权限,也没有配置有效的应用默认凭证。
第一步:完成ADC凭证配置
你看到的remote-bootstrap提示是无浏览器环境下的授权引导,在Cloud Shell环境里不需要找其他带浏览器的设备操作,按以下步骤走即可:
- 先执行
gcloud config set project <你部署landing zone所用的GCP项目ID>,把gcloud上下文切换到目标项目 - 跳过提示里带remote-bootstrap参数的命令,直接执行
gcloud auth application-default login --no-launch-browser - 终端会输出一个授权链接,直接点击该链接,在跳转的Google登录页选择你持有GCP组织管理权限的账号,走完授权流程后,页面会展示一串授权码
- 把这串授权码复制,粘贴回Cloud Shell中
Enter the output of the above command:对应的输入位置,按回车即可完成ADC配置 - 配置完成后可以执行
gcloud auth application-default print-access-token,如果能正常返回一长串token字符串,说明凭证配置生效
第二步:修复组织节点403权限错误
报错里的权限拒绝问题,按以下点逐一排查:
- 确认你当前授权的账号,在GCP组织根节点上被授予了
Organization Administrator角色,或至少绑定了resourcemanager.organizations.get权限,注意权限必须绑定在组织层级,绑定在单个项目上无效 - 检查Terraform代码里
google_organization数据源的组织ID配置,把占位用的000000000000替换成你自己的真实组织ID,可以执行gcloud organizations list查询当前账号有权限访问的所有组织ID - 如果你用Cloud Shell内置的默认服务账号操作,不需要走ADC用户授权流程,直接给该服务账号绑定上述组织层级的权限即可
- 权限配置完成后,重新执行
terraform init、terraform plan验证问题是否修复
注意事项
- 未绑定GCP组织的个人Gmail账号无法部署GCP landing zone,landing zone核心模块强依赖组织层级资源,个人免费账号无对应资源会持续报组织不存在错误
- Cloud Shell环境的临时凭证有效期较短,后续如果复现同类权限报错,优先重新走一遍ADC授权流程再排查其他问题
内容的提问来源于stack exchange,提问作者Raaid Chaudry
相关产品推荐
相关产品推荐

