保护Google存储桶的惯用方法

时间:2017-09-01 01:41:59

标签: google-cloud-storage google-compute-engine

我的目标是将Google存储的读写权限授予计算实例模板,其方式仅授予必要的权限,但我对GCP中被认为是惯用的内容感到困惑鉴于Google存储桶的many access control options

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

  • 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权限(?),但我会在哪里分配?

配置此内容的惯用方法是什么?

1 个答案:

答案 0 :(得分:3)

事实证明,此处的关键文档是Google云端存储的Identity and Access Management overview。从那里,我学到了以下内容:

  • GCS Bucket ACL 指定零个或多个“条目”,其中每个条目都向某些范围授予权限,例如Google Cloud用户或项目。 ACL现在被认为是为存储桶分配权限的传统方法,因为它们只允许粗粒度权限READERWRITEROWNER

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

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

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

基于此,我得出结论:

  • 您应该尝试通过在层次结构的正确级别分配IAM策略来为GCS Bucket分配权限。
  • 但是,要基于每个对象限制权限,必须使用ACL。
  • 当新创建Bucket时,除非您另行指定,否则将其定义为projectPrivate的默认Canned ACL
  • 截至此答案,Terraform尚未对IAM策略提供成熟的支持,google_storage_bucket_acl资源代表了保护Bucket的传统方法的接口。

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