【问题标题】:How do I give a GCP service account storage.buckets.list access with read only access?如何为 GCP 服务帐户 storage.buckets.list 授予只读访问权限?
【发布时间】:2019-11-14 20:34:47
【问题描述】:

我正在尝试做gsutil ls,但这会导致:

ubuntu@ip:~$ gsutil ls
AccessDeniedException: 403 xxxxxxxxxxxx@xxxxxxxxxx.iam.gserviceaccount.com does not have storage.buckets.list access to project xxxxxxxxxxxxxxx.

我可以通过only读取/查看者访问 IAM 角色授予此权限吗?

【问题讨论】:

    标签: google-cloud-platform google-cloud-iam


    【解决方案1】:

    你当然可以。至少,您始终可以创建具有您想要的权限的custom role。您可以通过单击roles tab 顶部的创建角色按钮来执行此操作。然后,一旦创建,将该角色应用到您在 IAM page 上的服务帐户,就像任何其他角色一样。

    或者,您可以使用云控制台中的same roles tab 明确搜索该权限,以查看哪些角色包含它,看看是否有适合您的角色。

    在这种情况下,我没有看到明显的默认值是有限的。也就是说,在这种情况下,您可以将 Storage Legacy Bucket Reader (roles/storage.legacyBucketReader) 作为自定义角色的起点——如果您在角色选项卡上选择此角色,您可以“从选择中创建角色”来使用它作为起点)。

    【讨论】:

    • 谢谢,是的,我只需要创建一个具有特定权限的自定义角色。
    【解决方案2】:

    命令gsutil ls 列出您项目中的存储桶。

    要列出存储桶,您需要storage.buckets.list 权限。

    要列出存储桶中的对象,您需要权限storage.objects.list

    这些权限都不允许您读取对象。要读取对象,您需要storage.objects.get 权限。

    要只读取一个对象,您不需要列表权限。但是,由于您使用的是gsutil 命令,因此您可以这样做。

    您可以将多个预定义角色附加到您的服务帐户,以授予 gsutil 必要的权限。

    推荐:

    roles/storage.objectViewer
    

    或以下两个角色:

    roles/storage.legacyObjectReader
    roles/storage.legacyBucketReader
    

    如果您只想分配角色来读取对象但不列出它们:

    roles/storage.legacyObjectReader
    

    【讨论】:

    • -1 在我测试了roles/storage.objectViewer 之后,可以预见的是does not have storage.buckets.list access to the Google Cloud project
    • @kubanczyk - 谢谢,你是对的。在我回答的第一部分中,我提供了访问对象的角色。在第二部分中,我回答了列出存储桶。我把问题简单化了,以至于我的部分答案是错误的。
    【解决方案3】:

    自 2022 年 1 月起对 GCP GCS 存储分区的只读权限:

    storage.buckets.get
    storage.buckets.list
    storage.objects.get
    storage.objects.list
    

    【讨论】:

      猜你喜欢
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-04
      • 1970-01-01
      • 2019-10-03
      • 1970-01-01
      相关资源
      最近更新 更多