0

我想授予服务帐户对项目中每个存储桶的只读访问权限。这样做的最佳做法是什么?

这里的答案建议其中之一:

  • 创建自定义 IAM 策略
  • 在每个存储桶上分配 Legacy Bucket Viewer 角色
  • 使用 ACL 允许bucket.get访问

这些对我来说似乎都不理想,因为:

  • 授予只读访问权限似乎太常见了,需要自定义策略
  • 将“Legacy”放在名称中会使此权限似乎很快就会被淘汰,并且任何新的存储桶都需要修改
  • Google 推荐IAM 而不是 ACL,任何新的存储桶都需要修改

有什么方法可以避免这个bucket.get要求并且仍然可以访问存储桶中的对象吗?还是有另一种我不知道的提供访问权限的方法?

4

1 回答 1

0

最接近的预建角色是对象查看器。这允许列出和读取对象。它不包括 storage.buckets.get 权限,但这不是通常需要的 - 弄乱存储桶元数据实际上是一种管理功能。它也不包括 storage.buckets.list ,它更常用,但仍然不是 GCS 正常使用模式的一部分 - 通常在设计应用程序时,您有固定数量的存储桶用于特定目的,因此列表不是有用。

如果您确实想提供服务帐户存储桶列表并获得权限,则必须在项目上创建自定义角色。这很容易,你可以这样做:

gcloud iam roles create StorageViewerLister --project=$YOUR_POJECT --permissions=storage.objects.get,storage.objects.list,storage.buckets.get,storage.buckets.list
gcloud projects add-iam-policy-binding $YOUR_PROJECT --member=$YOUR_SERVICE_ACCOUNT --role=StorageViewerLister
于 2018-10-10T20:47:16.397 回答