在Jenkins中模拟GCP SA-developer账号登录及连接GCP服务的方案咨询
在Jenkins中模拟GCP服务账号访问及Vault集成方案
一、Jenkins中实现模拟GCP服务账号的方法
方法1:Google Cloud SDK插件+服务账号密钥(通用方案)
- 安装Jenkins的Google Cloud SDK插件,确保构建节点已部署gcloud命令行工具
- 在Jenkins凭据管理中添加sa-developer服务账号的JSON密钥文件,存储为"Secret file"类型凭据
- 在构建步骤中调用以下命令完成身份配置:
# 激活目标服务账号 gcloud auth activate-service-account sa-developer@project-id.iam.gserviceaccount.com --key-file=${JENKINS_SECRET_FILE_PATH} # 设置应用默认凭据的配额项目 gcloud auth application-default set-quota-project project-id
- 后续构建任务中的应用会自动通过ADC(应用默认凭据)机制使用该服务账号权限,访问Secret Manager或PubSub
方法2:工作负载身份(GKE部署场景最优)
- 若Jenkins运行在GKE集群,可配置工作负载身份绑定:将Jenkins Pod使用的K8s服务账号,与GCP的sa-developer服务账号建立绑定关系
- 绑定完成后,Pod内的ADC会自动获取sa-developer的身份权限,无需手动管理密钥,直接访问GCP服务
二、通过Vault连接GCP服务账号的方案
可以借助Vault的GCP Secrets Engine实现短期凭据的生成与管理,步骤如下:
- 在Vault中启用GCP Secrets Engine:
vault secrets enable gcp
- 配置Vault使用具备模拟权限的GCP服务账号(需提前为该账号授予
roles/iam.serviceAccountTokenCreator角色,允许模拟sa-developer) - 创建Vault角色,关联到sa-developer服务账号:
vault write gcp/roles/gcp-sm-access \ service_account_email=sa-developer@project-id.iam.gserviceaccount.com \ token_scopes="https://www.googleapis.com/auth/cloud-platform"
- 在Jenkins中安装Vault插件,配置Vault服务器连接,在构建步骤中获取短期GCP凭据,将其写入临时文件并设置环境变量:
export GOOGLE_APPLICATION_CREDENTIALS=/tmp/gcp-creds.json vault read -format=json gcp/roles/gcp-sm-access/token | jq -r '.data.token' > $GOOGLE_APPLICATION_CREDENTIALS
- 应用即可通过ADC读取该临时凭据,以sa-developer身份访问GCP服务
内容的提问来源于stack exchange,提问作者user09
相关产品推荐
相关产品推荐

