1

用例:

我有一个 GCP 设置:

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

可能的解决方案 :

对于 GCS,这很容易并且有文档记录

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

探索的解决方法:

  • 我尝试创建自定义 IAM 角色。我希望有某种方法可以过滤角色应用到的对象,其方式类似于 AWS IAM允许的Resource过滤器。这显然是不可能的。
  • 对于 GKE,我可以给每个用户一个Kubernetes Engine Cluster Viewer角色(基本上只允许列出集群和关于它们的基本信息,以及使用gcloudcli 工具登录),然后使用Kubernetes RBAC引擎提供非常细粒度的权限。这很好用,但不允许用户使用 Google Web 界面,这非常方便,特别是对于 k8s 的初学者。
  • Cloud SQL Client同样,对于 CloudSQL,我可以直接通过 postgres 访问控制系统赋予角色,并管理我的用户。这很好用,但我的用户能够连接到其他实例(当然,他们仍然需要这些实例上的帐户)。此外,不能仅在特定实例上允许诸如恢复备份之类的操作。

那么,我是否遗漏了一些明显的东西,或者有人找到了解决这些限制的方法?

4

1 回答 1

0

对于 GKE,似乎唯一的选择是使用 RBAC 通过命名空间内的RoleBinding或 ClusterRoleBinding 为集群范围内的权限授予用户细粒度的权限。

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

于 2019-04-03T23:29:21.617 回答