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

Google Cloud Build存储桶同步及本地执行gsutil rsync均出现403权限异常求助

解决GCS rsync时403权限拒绝(即使有Storage Admin/Owner权限)的问题

看起来你遇到了个挺让人头疼的权限问题——不管是Cloud Build的服务账号,还是本地的项目所有者账号,明明加了足够的权限,执行gsutil rsync时还是被拒绝访问目标桶的storage.objects.list权限。我来分享几个可能的原因和对应的解决办法:

1. 目标存储桶不在当前操作的项目中,跨项目权限未配置

这是最常见的原因之一:如果gs://my-bucket-destination属于另一个GCP项目,那你在当前项目给账号加的所有权限(包括Owner)都不会生效在目标桶上。GCP的IAM权限是分项目/资源的,跨项目的话必须在目标资源所在的项目里单独配置权限。

解决步骤:

  • 先确认目标桶的所属项目:执行 gsutil ls -L gs://my-bucket-destination | grep "Project"
  • 切换到目标桶所在的项目,打开IAM页面,添加你的两个账号:
    • Cloud Build服务账号:xxxxxx@cloudbuild.gserviceaccount.com
    • 本地用户账号:XXXXX@YYYY.com
  • 给他们分配至少Storage Object Viewer权限(这个权限包含storage.objects.list),或者直接用Storage Admin

2. 目标桶启用了Bucket Policy Only(BPO),项目级IAM被忽略

如果目标桶开启了BPO,那么项目级的IAM权限会被完全忽略——哪怕你是项目Owner,也必须直接在桶的IAM设置里配置权限,项目级的权限不会继承过来。

验证和解决:

  • 先检查目标桶的BPO状态:执行 gsutil bucketpolicyonly get gs://my-bucket-destination
  • 如果返回Enabled,那直接去目标桶的IAM页面,添加你的两个账号,分配需要的权限(比如Storage Object Admin或者Storage Object Viewer)

3. 权限缓存延迟(可能性较低,但值得排查)

GCP的IAM权限有时候会有几分钟的缓存延迟,刚添加的权限可能不会立即生效。不过你提到加了Owner权限还是不行,这个可能性相对小,但可以试试:

  • 本地账号:执行 gcloud auth revoke XXXXX@YYYY.com,然后重新登录 gcloud auth login
  • Cloud Build:重新触发一次构建,或者等待10分钟左右再试

4. VPC Service Controls限制了访问

如果目标桶所在项目启用了VPC Service Controls,那么只有在允许的范围内(比如特定VPC、IP段、服务)才能访问桶。你的Cloud Build环境或者本地机器的IP可能不在允许列表里,导致被拒绝。

解决步骤:

  • 检查目标桶所属项目的VPC Service Controls配置,确认是否有访问限制
  • 如果有,将Cloud Build的服务账号加入允许的身份列表,或者把本地机器的IP添加到允许的IP范围中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:48:17