如何设置Google Cloud Storage Bucket文件夹的访问权限

G L*_*Lee 6 google-cloud-storage

如何设置存储桶中整个文件夹的访问权限?例; 我在一个存储桶中有2个文件夹(包含许多子文件夹/对象)(让我们将其称为文件夹“ A”和“ B”)和项目团队中的4个成员。所有4个成员都可以对文件夹A进行读取/编辑访问,但是只有2个成员可以访问文件夹“ B”。有没有一种简单的方法可以为每个文件夹设置这些权限?每个文件夹中有成千上万个文件,为每个文件设置权限将非常耗时。谢谢你的帮助。

小智 13

看起来这已经通过IAM Conditions成为可能。

您需要设置 IAM 条件,例如: resource.name.startsWith('projects/_/buckets/[BUCKET_NAME]/objects/[OBJECT_PREFIX]')

但该条件不能用于许可storage.objects.list。将两个角色添加到组/用户。第一个授予对整个存储桶的列表访问权限,第二个包含上述条件以允许对“文件夹”中的所有对象进行读/写访问。这样,组/用户可以列出存储桶中的所有对象,但只能读取/下载/写入允许的对象。

这里有一些限制,例如不再能够使用gsutil acl ch其他答案中引用的命令。


小智 11

把它留在这里,这样其他人就不会浪费一个下午的时间去撞墙。事实证明,“列表”权限是在 GCS 中的存储桶级别处理的,您无法使用基于对象名称前缀的条件来限制它们。如果这样做,您将无法访问存储桶中的任何资源,因此您必须为成员设置不受限制的“存储对象查看者”角色,并为“存储对象管理”或“存储对象”使用具有指定对象前缀的条件Creator' 来限制(覆盖)写入访问。如果您想将存储桶中的内容保密,则不太理想。

https://cloud.google.com/storage/docs/access-control/iam

“由于 storage.objects.list 权限是在存储桶级别授予的,因此您无法使用 resource.name 条件属性来限制对存储桶中对象子集的对象列表访问。在存储桶中没有 storage.objects.list 权限的用户级别可能会遇到控制台和 gsutil 功能降级的情况。”


car*_*tor 7

它的记录很差,但在gsutil acl ch联机帮助页中搜索“文件夹” :

授予具有指定规范 ID 的用户对 example-bucket 中以 folder/ 开头的所有对象的读取访问权限:

gsutil acl ch -r \
  -u 84fac329bceSAMPLE777d5d22b8SAMPLE785ac2SAMPLE2dfcf7c4adf34da46:R \
  gs://example-bucket/folder/
Run Code Online (Sandbox Code Playgroud)

  • 如果您尝试使用此方法,请注意 /sf/ask/2700281181/#comment78886746_38577891。Brandon 是正确的,这不会为“文件夹”设置权限,而是为当前文件夹中的所有对象设置 ACL。新对象将具有默认 ACL。 (5认同)

Bra*_*ugh 2

您无法在 GCS 中执行此操作。GCS提供了对桶的权限和对对象的权限。“文件夹”不是 GCS 概念,并且不具有任何属性或权限。