无法从Cloud Dataproc(Pyspark)访问Secret Manager密钥报403权限错误
Dataproc访问Secret Manager 403权限不足问题解决方案
错误原因
PermissionDenied: 403 Request had insufficient authentication scopes.报错,与配置的IAM角色无关,是Dataproc集群节点默认的OAuth 2.0访问作用域未开放Secret Manager访问权限导致:GCP的VM(包括Dataproc集群节点)需要同时满足「服务账号有对应IAM权限」和「VM实例配置的scope允许访问对应服务」两个条件,才能正常调用服务API。
解决方法
方式一:新建集群时预先配置scope
创建Dataproc集群时主动添加Secret Manager的访问权限即可:
- 若使用gcloud命令行创建,在创建命令中添加如下参数:
开放所有GCP服务权限:--scopes https://www.googleapis.com/auth/cloud-platform
仅开放Secret Manager权限:--scopes https://www.googleapis.com/auth/secretmanager - 若使用GCP控制台创建,在集群配置的「节点」设置页中,找到「云API访问权限范围」配置项,选择「允许对所有Cloud API的完全访问」,或者手动勾选Secret Manager的访问权限。
方式二:修改已有集群的scope
如果集群已经创建不需要重建,可以手动修改节点scope:
- 先停止整个Dataproc集群
- 进入集群对应节点的VM实例详情页,找到「云API访问权限范围」配置项
- 修改配置添加Secret Manager的访问权限,或直接选择允许所有Cloud API访问
- 重新启动集群,再次运行代码即可生效
额外注意事项
当前使用的代码为创建密钥的逻辑,仅Secret Manager Secret Accessor角色不足以支持该操作:
- 仅读取已有密钥的内容:
Secret Manager Secret Accessor角色即可 - 要执行创建/删除/修改密钥的操作:需要给对应账号配置Secret Manager Admin角色
内容的提问来源于stack exchange,提问作者Snehil Singh
相关产品推荐
相关产品推荐

