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

Google Cloud ML Engine访问Cloud KMS失败:解密加密文本遇权限范围不足错误

解决Cloud ML Engine调用Cloud KMS解密时的403权限范围不足问题

嘿,这个错误我之前在ML Engine里调用KMS的时候也碰到过!核心问题就是你的ML训练作业使用的服务账号没有被授予访问Cloud KMS所需的OAuth2权限范围——ML Engine默认的权限集合里可不包含KMS的访问权限,所以才会抛出这个403。

下面给你两个最直接的解决办法,结合起来用肯定能搞定:

1. 提交训练作业时指定包含Cloud KMS的权限范围

当你用gcloud ai-platform jobs submit training命令提交作业时,加上--scope参数,把KMS的权限范围加进去。如果追求便捷,可以直接用cloud-platform这个覆盖所有GCP服务的权限范围;要是想遵循最小权限原则,也可以单独指定KMS的scope:

便捷版(覆盖所有GCP服务权限)

gcloud ai-platform jobs submit training JOB_NAME \
  --package-path YOUR_PACKAGE \
  --module-name YOUR_MODULE \
  --runtime-version 2.11 \
  --python-version 3.9 \
  --scope=https://www.googleapis.com/auth/cloud-platform \
  --region YOUR_REGION

最小权限版(仅添加KMS和ML Engine必需的scope)

gcloud ai-platform jobs submit training JOB_NAME \
  --package-path YOUR_PACKAGE \
  --module-name YOUR_MODULE \
  --runtime-version 2.11 \
  --python-version 3.9 \
  --scope=https://www.googleapis.com/auth/cloudkms,https://www.googleapis.com/auth/ml.googleapis.com \
  --region YOUR_REGION

2. 给ML Engine的服务账号添加Cloud KMS解密角色

光有权限范围还不够,还得确保服务账号拥有实际的KMS解密操作权限:

  • 先找到你的ML Engine默认服务账号:格式是[你的项目编号]-compute@developer.gserviceaccount.com,可以在GCP控制台的IAM页面找到它
  • 给这个账号添加Cloud KMS CryptoKey Decrypter角色(如果需要更细粒度控制,也可以只针对你要解密的特定密钥授予权限)
  • 操作路径:GCP控制台 → IAM与管理员 → IAM → 找到对应的服务账号 → 编辑 → 添加角色 → 搜索“Cloud KMS CryptoKey Decrypter”并选择

代码里的小提醒

确保你的代码没有硬编码自定义凭证,让google-cloud-kms客户端自动使用ML Engine环境的默认凭证即可。比如Python里的调用应该是这样的:

from google.cloud import kms_v1

# 自动加载环境中的默认服务账号凭证
client = kms_v1.KeyManagementServiceClient()
# 后续的解密逻辑...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:51:59