用例:
我有一个 GCP 设置:
- 多个Google Kubernetes Engine集群
- 多个CloudSQL实例
- 多个GCS 存储桶
基本上,我想以比项目范围更细的粒度授予用户权限(即用户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
角色(基本上只允许列出集群和关于它们的基本信息,以及使用gcloud
cli 工具登录),然后使用Kubernetes RBAC引擎提供非常细粒度的权限。这很好用,但不允许用户使用 Google Web 界面,这非常方便,特别是对于 k8s 的初学者。 Cloud SQL Client
同样,对于 CloudSQL,我可以直接通过 postgres 访问控制系统赋予角色,并管理我的用户。这很好用,但我的用户能够连接到其他实例(当然,他们仍然需要这些实例上的帐户)。此外,不能仅在特定实例上允许诸如恢复备份之类的操作。
那么,我是否遗漏了一些明显的东西,或者有人找到了解决这些限制的方法?