保护 Google 存储桶的惯用方法

Jos*_*ick 4 google-cloud-storage google-compute-engine

我的目标是授予在某种程度上对谷歌的存储桶的计算实例模板读写权限仅授予那些必要的,但我感到困惑的是怎么考虑的GCP惯用给出的权限许多访问控制选项为谷歌存储桶。

目前,我正在创建托管实例组和计算实例模板并分配以下范围:

  • https://www.googleapis.com/auth/userinfo.email
  • https://www.googleapis.com/auth/compute.readonly
  • https://www.googleapis.com/auth/devstorage.read_write

到计算实例上的默认服务帐户。这似乎工作正常,但鉴于上面的链接,我想知道是否应该将存储桶上的访问控制列表 (ACL) 也显式设置private为?但同一页面还说“仅当您需要对单个对象进行细粒度控制时才使用 ACL”,而在这种情况下,我需要一个粗粒度的策略。这让我想知道我是否应该使用 IAM 权限 (?) 但我应该在哪里分配它?

配置它的惯用方法是什么?

Jos*_*ick 5

原来这里的关键文档是Google Cloud Storage的身份和访问管理概述。从那里,我学到了以下内容:

  • GCS 存储桶ACL指定零个或多个“条目”,其中每个条目授予对某个范围(例如 Google Cloud 用户或项目)的权限。现在的ACL被认为是一个斗分配权限的遗留方法,因为他们只允许粗粒度的权限,和。READERWRITEROWNER

  • 为所有 GCP 资源分配权限的首选方法是使用IAM 策略概述)。IAM 策略附加到整个组织、项目文件夹、特定项目或特定资源,并且还指定一个或多个“条目”,其中每个条目向一个或多个成员授予角色

  • 使用 IAM 策略,您不会直接向成员授予权限。相反,您声明角色具有哪些权限,并授予成员角色。

最终,希望您在层次结构的适当级别分配 IAM 策略,知道层次结构的较低级别(如单个资源)继承较高级别(如项目级别)的 IAM 策略声明的权限。

基于此,我得出以下结论:

  • 您应该尝试通过在层次结构的正确级别分配 IAM 策略来为 GCS 存储桶分配权限。
  • 但是,要在每个对象的基础上限制权限,您必须使用 ACL。
  • 当新创建了一个水桶,除非你指定,否则,它被定义的默认罐头ACLprojectPrivate
  • 在此答案中,Terraform 尚未对 IAM 策略提供成熟的支持,而google_storage_bucket_acl资源代表了保护 Bucket 的传统方法的接口。

警告:我只是总结了这里的文档,到目前为止对 Google Cloud 的实践经验非常有限!欢迎对以上任何更正。