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

如何为GCP VM本地用户授权上传文件到GCP存储桶

核心规则说明

GCP IAM 权限体系仅识别云侧管理的身份主体(包括Google个人/企业账号、服务账号、Google群组、Workload Identity 联邦身份等),不会感知虚拟机内部通过adduser创建的本地操作系统用户,因此在云控制台IAM页面无法检索到user1属于正常情况,需要通过「云身份代理」的方式为本地用户授予访问权限。

方案1:统一服务账号授权(适合VM内所有可信用户共享存储权限的场景,配置最简单)

该方案直接给VM实例绑定的服务账号授权,VM内所有能调用gcloud/gsutil的本地用户默认继承该服务账号的权限:

  • 确认VM绑定的服务账号
    进入Compute Engine控制台,打开vm001的详情页,找到「服务账号」字段,记录对应的服务账号邮箱,默认格式一般为<你的项目ID>-compute@developer.gserviceaccount.com。
  • 检查VM的API访问范围
    同样在VM详情页找到「Cloud API访问范围」配置项,如果Cloud Storage对应的权限是「只读」或者「无访问权限」,需要先停止VM,将存储权限修改为「读写」,或者直接选择「允许对所有Cloud API的完整访问权限」,修改完成后再启动VM。注意:访问范围是VM层面的权限闸门,哪怕IAM给了权限,范围没放开也会报403。
  • 给服务账号绑定存储桶权限
    进入Cloud Storage控制台,打开bucket1的「权限」页,点击「授予访问权限」,主体填写上一步记录的VM服务账号邮箱,根据需求绑定对应角色:
    • 仅需要上传文件:选择Storage Object Creator角色
    • 需要上传/下载/删除等完整操作权限:选择Storage Object Admin角色
  • 本地用户侧验证
    切换到user1账号,执行gsutil cp -r dir_name gs://bucket1即可正常上传,不需要额外做账号登录配置——VM上的gcloud/gsutil默认会通过元数据服务自动获取绑定服务账号的临时凭证。
方案2:独立服务账号授权(适合需要给不同本地用户分配不同云权限的场景,权限隔离性好)

如果需要给user1单独分配权限,禁止其他本地用户获取bucket1的访问权,可采用独立服务账号+密钥的方式配置:

  • 创建专用服务账号
    进入IAM控制台的「服务账号」页面,新建一个专门给user1使用的服务账号(比如命名为vm-user1-sa),给这个服务账号绑定bucket1的Storage Object Creator(或其他实际需要的)角色。
  • 生成并下发服务账号密钥
    进入刚创建的服务账号详情页,切换到「密钥」标签,点击「添加密钥」->「创建新密钥」,选择JSON格式下载密钥文件。将密钥文件上传到vm001的/home/user1/目录下,重命名为gcp-sa-key.json,执行以下命令修正权限,避免其他本地用户窃取凭证:
    chown user1:user1 /home/user1/gcp-sa-key.json
    chmod 600 /home/user1/gcp-sa-key.json
    
  • 配置user1的默认认证身份
    切换到user1账号,执行以下命令激活服务账号身份:
    gcloud auth activate-service-account --key-file=/home/user1/gcp-sa-key.json
    
  • 验证上传
    执行原gsutil cp命令即可正常上传,该身份仅对user1生效,其他本地用户默认不会获取该服务账号的权限。
生产环境可选优化方案:Workload Identity 免密钥映射

如果不想在VM本地存储服务账号密钥文件,可以开启GCE的Workload Identity功能,直接将VM内的本地OS用户/用户组映射到指定的云服务账号,全程通过元数据服务自动获取临时凭证,无密钥泄露风险,适合生产环境使用,配置逻辑和方案2类似,仅省去本地存储密钥文件的步骤。

常见踩坑点
  • 不要给服务账号绑定超出需求的权限,比如只需要上传就不要授予存储桶管理员权限,遵循最小权限原则
  • 服务账号密钥文件一旦泄露,任何持有文件的主体都可以访问对应云资源,必须严格控制文件的读取权限
  • 配置完成后如果仍报403错误,可先执行gsutil ls gs://bucket1排查是权限问题还是路径错误,再依次校验IAM角色绑定、VM访问范围、本地认证身份三个配置项是否正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:45:41