如何为Terraform Cloud配置Google Cloud Platform (GCP)身份认证
Terraform Cloud与GCP身份认证配置方案
你遇到的报错是因为Terraform Cloud的远程运行环境中没有GCP的身份凭据,本地执行gcloud auth application-default login生成的凭据仅在本地生效,无法被Terraform Cloud读取。按照以下步骤完成配置即可:
方案1:通过Terraform Cloud环境变量配置(无需修改现有代码)
- 第一步:在GCP控制台的IAM服务中创建专用服务账号,为其分配当前Terraform配置所需的权限(例如本例操作存储桶需要Storage相关权限),导出JSON格式的服务账号密钥文件。
- 第二步:打开对应Terraform Cloud工作区,进入「Variables」配置页,在Environment Variables分类下新增变量:
- 变量名:
GOOGLE_CREDENTIALS - 变量值:粘贴刚才导出的JSON密钥完整内容
- 勾选「Sensitive」选项,确保密钥不会被明文展示
- 变量名:
- 第三步:保存配置后重新触发Terraform运行,即可正常完成身份认证。
方案2:修改Provider配置通过Terraform敏感变量传递凭据
如果需要显式在Provider块中指定凭据,可按以下方式修改配置:
- 新增敏感变量定义,用于接收密钥内容:
variable "gcp_credentials" { type = string sensitive = true description = "GCP服务账号JSON密钥" }
- 修改google provider块,添加
credentials参数:
provider "google" { project = "my-project-id" region = "europe-west3" zone = "europe-west3-a" credentials = var.gcp_credentials }
- 进入对应Terraform Cloud工作区的「Variables」配置页,在Terraform Variables分类下新增变量:
- 变量名:
gcp_credentials - 变量值:粘贴导出的JSON密钥完整内容
- 勾选「Sensitive」选项后保存即可。
注意事项
- 禁止将服务账号密钥明文写入代码提交到版本仓库,所有敏感凭据必须通过Terraform Cloud的敏感变量存储。
- 定期轮换服务账号密钥,不再使用的密钥及时在GCP控制台吊销。
内容的提问来源于stack exchange,提问作者Slava Fomin II
相关产品推荐
相关产品推荐

