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

Google OCR on-prem安装出现PERMISSION_DENIED权限错误如何解决?

这个报错是OCR服务访问GCS存储桶拉取模型文件时触发了权限拒绝,即使配置了高权限服务账号仍报错的常见原因及排查方案如下:

E0820 09:07:22.051148 1 gcs_utils.cc:29] Failed to download: DownloadFileImpl(ReadObjectRangeRequest={bucket_name=vision_onprem_assets, object_name=e2e_line_model/00000785/assets.extra/LabelMap.textproto, disable-md5-hash=1}, /tmp/e2e_line_model/00000785/assets.extra/LabelMap.textproto): cannot open download source object - status.message=Permanent error in Read(): [PERMISSION_DENIED] [PERMISSION_DENIED]

可能的故障原因
  • IAM权限传播延迟:刚为服务账号配置的权限存在最长5分钟的生效窗口期,实际未完成全网同步
  • Secret配置异常:部署时创建的密钥Secret未正确挂载到OCR服务实例,或密钥文件内容在写入Secret时出现编码错误、内容截断
  • 跨项目访问未授权:vision_onprem_assets存储桶所属的GCP项目与服务账号所属项目不一致,存储桶侧未单独对该服务账号开放读取权限
  • 上层策略拦截:GCP组织配置了VPC服务边界、IAM deny策略、资源访问限制类组织策略,即使服务账号本身具备Owner权限也会被上层规则拦截
  • 对象级ACL限制:存储桶内的模型文件单独配置了访问控制列表,未继承桶级权限,导致服务账号无法读取指定的LabelMap.textproto文件
  • 服务身份配置错误:OCR服务未加载你传入的服务账号密钥,而是使用了集群默认的未授权服务身份发起访问请求
排查步骤
  • 首先验证服务账号本身的访问权限:本地安装gcloud命令行工具后,执行gcloud auth activate-service-account --key-file=<你的本地密钥文件路径>完成身份激活,再执行gsutil cat gs://vision_onprem_assets/e2e_line_model/00000785/assets.extra/LabelMap.textproto,如果返回权限拒绝,说明服务账号本身确实没有该存储桶的读取权限;如果可以正常读取文件内容,说明问题出在集群部署配置环节
  • 验证Secret配置正确性:如果是Kubernetes容器化部署,执行kubectl describe secret <你创建的OCR服务密钥Secret名称>,确认密钥数据的Key名称与部署配置中指定的挂载Key完全一致;进入运行中的OCR服务Pod,查看挂载的密钥文件内容与本地的原始密钥文件是否完全匹配
  • 核查存储桶权限配置:登录GCP控制台进入vision_onprem_assets存储桶的权限管理页,确认你使用的服务账号邮箱在权限列表中,且具备storage.objects.get及以上权限,没有被同层级的Deny策略覆盖
  • 排查上层限制规则:在GCP控制台的组织策略页面,核查是否存在storage.restrictObjectGet、iam.allowedPolicyMemberDomains等限制类策略,确认未拦截该服务账号对GCS资源的访问请求
  • 验证服务身份加载配置:查看OCR服务的部署配置文件,确认GOOGLE_APPLICATION_CREDENTIALS环境变量指向的路径与密钥Secret的挂载路径完全一致,无拼写错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:09:04