Google Cloud Platform IAM设置允许项目级RO访问存储桶

时间:2018-10-09 22:22:24

标签: google-cloud-storage service-accounts google-cloud-iam

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

答案here提出以下建议之一:

  • 创建自定义IAM策略
  • 在每个存储桶上分配旧式存储桶查看器角色
  • 使用ACL允许bucket.get访问

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

  • 授予只读访问权限似乎太常见了,需要使用自定义策略
  • 在名称中加上“旧版”,使得此权限似乎很快就会退休,并且任何新存储桶都需要修改
  • Google建议使用IAM over ACL,任何新的存储分区都需要修改

是否有某种方法可以避免bucket.get的要求并仍然访问存储桶中的对象?还是有另一种我不知道的提供访问的方法?

1 个答案:

答案 0 :(得分: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