在GCP IAM中提供基于对象的权限

时间:2019-03-14 13:11:32

标签: google-cloud-platform google-iam

用例:

我的GCP设置为:

基本上,我想授予比项目范围更细粒度的用户权限(即用户A只能访问存储区B,但可以访问CloudSQL实例C和D)

可能的解决方案:

对于GCS,这是easy and documented

但是,我找不到其他两个类似的东西。 CloudSQL文档甚至似乎说它是not possibleAll permissions are applied to the project. You cannot apply different permissions based on the instance or other lower-level object.

已探索的解决方法:

  • 我尝试创建custom IAM roles。我希望可以采用某种方式,以类似于AWS IAM allows with its Resource filter的方式,对角色所应用的对象进行过滤。 显然这不可能。
  • 对于GKE,我可以给每个用户一个Kubernetes Engine Cluster Viewer角色(它基本上只允许列出集群和有关集群的基本信息,以及使用gcloud cli工具登录),然后使用Kubernetes RBAC引擎可提供非常精细的权限。效果很好,但不允许用户使用Google Web界面,该界面非常方便,特别是对于使用k8s的初学者。
  • 类似地,对于CloudSQL,我可以担任Cloud SQL Client角色,并直接通过postgres访问控制系统管理用户。这可以正常工作,但是我的用户可以连接到其他实例(当然,他们仍然需要在这些实例上拥有一个帐户)。此外,诸如还原备份之类的操作仅在特定实例上是不允许的。

那么,我是否错过了一些显而易见的事情,还是有人找到了解决这些局限性的方法?

1 个答案:

答案 0 :(得分:0)

对于GKE,似乎唯一的选择是使用RBAC通过命名空间内的RoleBinding或ClusterRoleBinding来为用户提供精细的权限,以获取群集范围的权限。

关于CloudSQL,当前不支持基于实例的权限,但是您可以在此功能link中跟踪此功能请求的任何更新。