执行gcloud builds.submit报错403:服务账号无storage.objects.get访问权限
问题排查与解决步骤
- 首先核对报错信息中标记的
<SERVICE ACCOUNT>是否为Cloud Build默认服务账号:默认格式为[项目编号]@cloudbuild.gserviceaccount.com,多数权限配置错误的原因是误给其他自定义服务账号、本地登录账号授予了权限,而非Cloud Build实际使用的默认服务账号。 - 确认权限配置后等待5-10分钟再重试:IAM权限配置存在最长10分钟的生效延迟,刚修改完权限立即执行命令可能仍会触发报错。也可先执行
gcloud auth revoke --all注销当前登录凭证,重新登录后再提交构建任务。 - 排查存储桶归属与单独权限:如果Cloud Build使用的源码暂存桶属于其他项目,仅给服务账号授予当前项目的存储管理员/所有者角色不生效,需要到对应存储桶的IAM配置页,单独给报错的服务账号授予
storage.objects.get权限。 - 检查额外限制规则:确认存储桶是否配置了IAM条件、组织访问策略、公共访问阻止规则,这类上层规则会覆盖项目级的角色权限,即使服务账号是项目所有者也可能被拦截。
- 权限验证与临时规避方案:
可执行以下命令验证服务账号是否实际持有目标桶的对应权限:gcloud storage buckets get-iam-policy gs://[你的存储桶名称] --filter="bindings.members:serviceAccount:[报错的服务账号邮箱]"
也可手动指定有权限的存储桶作为暂存目录绕过报错:gcloud builds submit --gcs-source-staging-dir gs://[可正常访问的存储桶路径]/stage --tag gcr.io/project_id/pubsub
内容的提问来源于stack exchange,提问作者Adriano Matos
相关产品推荐
相关产品推荐

