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

如何通过HashiCorp Vault自动为Terraform获取GCP默认应用凭据?

问题分析

你遇到的核心问题是:Terraform初始化GCS后端的优先级高于加载Vault数据源。执行terraform init时,Terraform会先尝试连接GCS存储桶保存状态,但此时还未读取Vault中的GCP凭据,因此后端认证失败,抛出找不到默认凭据的错误。

解决方案

以下是无需手动执行gcloud命令或保留本地凭据文件的自动化方案:

方法1:用Vault GCP Secrets Engine生成临时凭据供初始化使用

  1. 先在Vault中配置GCP Secrets Engine,创建具备GCS存储桶读写权限的角色(比如gcs-terraform-state-role)。
  2. 执行terraform init前,通过Vault CLI获取临时凭据:
    # 获取临时服务账号密钥并写入临时文件
    vault read -field=private_key_data gcp/roles/gcs-terraform-state-role > temp_gcp_creds.json
    # 设置环境变量供Terraform后端使用
    export GOOGLE_APPLICATION_CREDENTIALS=./temp_gcp_creds.json
    
  3. 执行terraform init完成后端初始化。
  4. 后续执行terraform plan/apply时,你的原有配置会自动从Vault读取GCP凭据供google provider使用。
  5. 执行完成后清理临时文件:
    rm ./temp_gcp_creds.json
    unset GOOGLE_APPLICATION_CREDENTIALS
    

方法2:拆分配置,先初始化后端再加载主配置

  1. 创建单独的backend.tf文件,仅包含后端配置:
    terraform {
      backend "gcs" {
        bucket = "my-terraform-bucket"
        prefix = "terraform/state"
      }
    }
    
  2. 用临时凭据(比如CI/CD管道中通过Vault自动获取的)执行terraform init完成后端初始化。
  3. 创建主配置文件(如main.tf),保留你原有的Vault和google provider配置:
    provider "vault" {
      # 确保Vault认证自动化,比如通过VAULT_TOKEN、VAULT_ADDR环境变量
    }
    
    data "vault_generic_secret" "credentials" {
      path = "gcp-credentials"
    }
    
    provider "google" {
      credentials = data.vault_generic_secret.credentials.data["app_credentials.json"]
      # 补充project、region等必要配置
    }
    
    # 你的资源定义
    
  4. 后续执行terraform plan/apply时,Terraform会自动加载Vault中的凭据,无需再处理后端认证(除非凭据过期)。

方法3:CI/CD管道中全程自动化

如果是在CI/CD环境运行,可在管道步骤中:

  1. 自动完成Vault认证(比如通过机器角色或预配置的Vault token)。
  2. 获取GCP临时凭据并设置GOOGLE_APPLICATION_CREDENTIALS环境变量。
  3. 依次执行terraform init、plan、apply命令。
  4. 管道结束后自动清理临时凭据。
关键注意事项
  • Terraform后端初始化的优先级最高,无法直接依赖配置中的Vault数据源,必须单独解决后端的认证问题。
  • 确保Vault自身的认证是自动化的,避免手动登录操作,比如通过环境变量传递Vault地址和token,或使用IAM角色绑定认证(如果运行在GCP环境中)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 00:42:28