如何授予 GCP 服务帐户 storage.buckets.list 只读访问权限?

Chr*_*ski 6 google-cloud-platform google-cloud-iam

我正在尝试这样做,gsutil ls但结果是:

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

Run Code Online (Sandbox Code Playgroud)

我可以仅使用读取/查看器访问 IAM 角色授予此权限吗?

rob*_*emb 9

你当然可以。至少,您始终可以创建具有所需权限的自定义角色。您可以通过单击角色选项卡顶部的“创建角色”按钮来完成此操作。然后,创建后,将该角色应用到IAM 页面上的服务账户,就像任何其他角色一样。

或者,您可以使用云控制台中的相同角色选项卡显式搜索该权限,以查看哪些角色包含该权限,并查看是否有任何角色适合您。

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


Joh*_*ley 5

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

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

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

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

如果仅读取对象,则不需要列表权限。但是,由于您正在使用该gsutil命令,因此您会这样做。

您可以将多个预定义角色附加到您的服务帐户,以授予gsutil.

受到推崇的:

roles/storage.objectViewer
Run Code Online (Sandbox Code Playgroud)

或者以下两个角色:

roles/storage.legacyObjectReader
roles/storage.legacyBucketReader
Run Code Online (Sandbox Code Playgroud)

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

roles/storage.legacyObjectReader
Run Code Online (Sandbox Code Playgroud)