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

绑定服务账号的GCP计算实例使用ADC认证Bucket遇权限拒绝

GCP Compute Instance 中ADC 无法正常工作的排查点
  • 检查实例的访问范围(Scopes)配置
    只指定服务账号还不够,必须给实例配置对应的云存储访问范围,否则ADC会被限制权限。默认实例的API访问权限有限,要确保添加storage-full或storage-object-admin这类合适的范围。创建模板时需加上--scopes参数:

    gcloud beta compute instance-templates create-with-container \
      --service-account my-service-account@my-project.iam.gserviceaccount.com \
      --scopes https://www.googleapis.com/auth/devstorage.full_control
    

    也可以在实例模板编辑页的“云API访问范围”选项中,确认存储服务权限已开启。

  • 验证容器是否继承实例服务账号权限
    如果用容器部署,要确认容器没覆盖实例的服务账号环境变量。部分容器镜像可能自带GCP认证环境变量或启动脚本设置了其他凭证,导致ADC优先读取错误凭证。可在容器内执行命令检查:

    echo $GOOGLE_APPLICATION_CREDENTIALS
    

    若该变量有值,说明容器加载了其他凭证文件,需移除这个环境变量配置,让ADC自动通过实例元数据服务获取凭证。

  • 确认元数据服务的访问权限
    检查实例能否正常访问元数据服务,在实例命令行执行:

    curl http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token -H "Metadata-Flavor: Google"
    

    若无法获取令牌,可能是实例网络配置(如防火墙规则)阻止了对169.254.169.254元数据服务地址的访问,需调整VPC规则允许该访问。

  • 检查Node.js客户端库版本
    旧版GCP Node.js客户端库对ADC的支持可能存在问题,建议升级到最新稳定版。比如针对@google-cloud/storage库:

    npm install @google-cloud/storage@latest
    

    同时确保代码中没有手动指定其他凭证——不要设置GOOGLE_APPLICATION_CREDENTIALS环境变量,也不要在初始化存储客户端时传入凭证参数,让ADC自动发现实例的服务账号凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:10:21