【发布时间】:2019-08-05 09:40:13
【问题描述】:
用例:
我有一个 GCP 设置:
- 多个Google Kubernetes Engine 集群
- 多个CloudSQL 实例
- 多个GCS buckets
基本上,我想为用户授予比项目范围更细粒度的权限(即用户A只能访问存储桶B,但可以访问CloudSQL实例C和D)
可能的解决方案:
对于 GCS,这是easy and documented。
但是,我找不到其他两个类似的东西。 CloudSQL 文档甚至似乎说它是not possible (All 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
Resourcefilter。 这显然是不可能的。 - 对于 GKE,我可以给每个用户
Kubernetes Engine Cluster Viewer角色(基本上只允许列出集群和有关它们的基本信息,以及使用gcloudcli 工具登录),然后使用Kubernetes RBAC引擎提供非常细粒度的权限。这很好用,但不允许用户使用非常方便的 Google 网络界面,尤其是对于 k8s 的初学者。 - 同样,对于CloudSQL,我可以赋予
Cloud SQL Client角色,通过postgres访问控制系统直接管理我的用户。这很好用,但我的用户能够连接到其他实例(当然,他们仍然需要这些实例上的帐户)。此外,不能只在特定实例上进行恢复备份等操作。
那么,我是否遗漏了一些明显的东西,或者有人找到了解决这些限制的方法?
【问题讨论】:
-
您是通过计算实例还是 appengine 连接到 cloudsql?使用 appengine 可以限制对特定服务角色的实例访问。
-
我从计算引擎间接使用它(因为k8s节点是计算引擎实例)
标签: google-cloud-platform google-iam