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

GCP Secret Manager本地可用,部署至Cloud Run后无法访问问题排查

问题解决:Cloud Run部署后无法访问Google Secret Manager密钥

问题概述

本地运行Spring Boot应用时,通过application.properties配置:

spring.config.import=sm://
my.secret.key=${sm://my_key}

可正常拉取Secret Manager密钥,但部署到Cloud Run后启动失败,核心报错:

Caused by: io.grpc.StatusRuntimeException: PERMISSION_DENIED: Permission 'secretmanager.versions.access' denied for resource 'projects/demo/secrets/email_host/versions/latest' (or it may not exist).

解决方案

1. 确认Cloud Run使用的服务账号

Cloud Run默认使用项目的默认计算服务账号[你的项目编号]-compute@developer.gserviceaccount.com,可在Cloud Run服务详情的权限标签页查看当前生效的服务账号。

2. 为服务账号添加Secret Manager访问权限

  • 进入Google Cloud控制台的Secret Manager页面,找到报错中提到的email_host密钥(或所有应用需要访问的密钥);
  • 点击密钥详情→权限→添加成员,输入Cloud Run使用的服务账号邮箱;
  • 为该账号分配Secret Manager Secret Accessor角色(该角色包含secretmanager.versions.access权限,满足密钥读取需求);
  • 若需要批量授权,也可直接在IAM页面给服务账号绑定该角色,授权范围可选择单个密钥、Secret Manager服务或项目级别(按需选择)。

3. 验证密钥的存在性与路径

检查配置中引用的密钥路径是否与实际一致(比如sm://my_key对应projects/demo/secrets/my_key),同时确认该密钥的latest版本未被删除或禁用。

4. 重启Cloud Run服务

权限变更后,需重启Cloud Run服务,确保新的权限配置生效。

补充说明

本地开发环境能正常访问密钥,是因为使用了你的个人Google账号权限(如gcloud login认证的身份),而Cloud Run运行时使用的是服务账号,两者权限相互隔离,因此必须单独为Cloud Run的服务账号配置Secret Manager访问权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:26:19