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

Python3环境GAE Standard访问Secret Manager报403权限错误

问题根因

本地运行正常是因为你使用的本地JSON服务账号密钥已经配置了Secret Manager访问权限,App Engine Standard环境报错的核心原因是GAE默认运行身份没有目标密钥的访问权限:
GAE Standard默认使用App Engine专属默认服务账号(邮箱格式为<你的项目ID>@appspot.gserviceaccount.com)发起所有云服务API调用,你没有给这个账号授予secretmanager.versions.access权限,因此被Secret Manager拒绝访问。日志里前面的gRPC _InactiveRpcError是权限错误抛出前的底层RPC异常,不是根因,核心错误就是明确标注的403 PermissionDenied。
你当前的依赖配置、业务代码、app.yaml基础配置都没有问题,不需要修改代码逻辑。

修复步骤
  • 定位GAE默认服务账号
    进入Cloud控制台IAM页面,在主账号列表里找到后缀为@appspot.gserviceaccount.com的服务账号,这就是你GAE应用运行时的实际身份。注意别和Compute Engine默认服务账号(后缀一般是@developer.gserviceaccount.com)搞混,加错账号不会生效。
  • 给服务账号授权
    遵循最小权限原则按需授权即可:
    • 仅需要访问API_OCR这一个密钥:进入Secret Manager中API_OCR的详情页,切到权限面板,添加上述GAE默认服务账号,绑定Secret Manager Secret Accessor角色。
    • 需要访问项目下所有Secret:直接在IAM页面给该服务账号绑定项目级别的Secret Manager Secret Accessor角色。
  • 重新部署验证
    IAM权限生效延迟一般在1分钟以内,执行gcloud app deploy重新部署应用后,再访问/s1接口就能正常拿到密钥值。
可选配置

如果你不想使用GAE默认服务账号,也可以在app.yaml中增加配置指定自定义服务账号,修改后的app.yaml示例如下:

runtime: python39
service_account: 你的自定义服务账号邮箱
automatic_scaling:
    max_instances : 2
    max_idle_instances : 1
    target_cpu_utilization : 0.9
    target_throughput_utilization : 0.9
    max_concurrent_requests : 80

注意提前给自定义服务账号绑定好Secret Manager的访问权限,同时确保该服务账号属于当前GAE应用所在的项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:21:34