【问题标题】:My service account which was given storage permissions does not have storage.objects.list access to the Google Cloud Storage bucket我被授予存储权限的服务帐户没有 storage.objects.list 访问 Google Cloud Storage 存储桶的权限
【发布时间】:2021-05-01 12:32:00
【问题描述】:

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

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

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

【问题讨论】:

  • 将服务帐号作为“Storage legacy bucket Owner”添加到存储桶中。存储 > 选择存储桶 > 权限选项卡 > 将 SA 添加为存储旧存储桶所有者,然后尝试
  • @Mahboob,我刚做了,同样的错误仍然出现。
  • 根据FAQ,为什么用户在授予权限后不能立即访问资源,或者在删除权限后继续访问资源?通常,授予或撤销成员的访问权限不到 60 秒。但是,在某些情况下,这些更改最多可能需要 7 分钟才能在系统中完全传播。
  • 在 Google Cloud Console 中检查哪些 Cloud API access scopes 分配给了 Compute Engine 实例。
  • @JohnHanley 是对的,我认为您需要在 Ubuntu VM 上将 Storage API 设置为 Full。通常 Ubuntu VM 对存储桶具有只读访问权限。

标签: google-cloud-platform google-cloud-storage


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2020-11-17
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    相关资源
    最近更新 更多