首页 > 解决方案 > 我被授予存储权限的服务帐户没有 storage.objects.list 访问 Google Cloud Storage 存储桶的权限

问题描述

我在谷歌云上的虚拟机中使用 Ubuntu。我有一个将文件备份到存储桶的 .sh 脚本。当我尝试运行脚本时,它会抛出一个错误:

AccessDeniedException: 403 blank@blank.iam.gserviceaccount.com does not have storage.objects.list access to the Google Cloud Storage bucket.

我授予服务帐户管理员存储权限。该帐户已激活,一切正常。我该如何解决?

标签: google-cloud-platformgoogle-cloud-storage

解决方案


由于您正在从 Ubuntu VM 执行脚本,并且 Ubuntu VM 通常具有只读访问范围。这可能会阻止将备份文件上传到 GCS 存储桶。

要更改实例的服务帐户和访问范围,必须暂时停止该实例。要停止您的实例,请阅读停止实例的文档。更改服务帐户或访问范围后,请记住重新启动实例。使用以下方法之一更改已停止实例的服务帐户或访问范围。

您还可以使用 gcloud 命令更改访问范围。

gcloud compute instances set-service-account [INSTANCE_NAME] \
   [--service-account [SERVICE_ACCOUNT_EMAIL] | --no-service-account] \
   [--no-scopes | --scopes [SCOPES,...]]

一旦您的实例关闭,您可以将存储的访问范围设置为完整,我认为这对您有用,因为您已将存储管理员角色分配给服务帐户。


推荐阅读