Google Cloud容器引擎(GKE)上的IAM和RBAC冲突

Mat*_*son 7 google-compute-engine kubernetes google-kubernetes-engine google-iam kubernetes-security

上下文

通过Google Cloud IAM功能管理对Google Cloud(GKE)kubernetes群集的访问;

  1. 管理员邀请新用户(使用他们的Google帐户/登录信息)并为其分配角色.

    下面的示例角色是"Container Engine Viewer",它允许用户访问kubernetes集群并运行所有"视图"操作.

  2. 用户可以gcloud auth login在其本地计算机上使用,然后gcloud container clusters get-credentials对Google IAM进行身份验证,并让该gcloud工具将其写入kubernetes配置文件,准备使用群集.

  3. 然后,用户可以使用它kubectl来访问群集.通过上面的例子,读取工作...写入/更改不; 都好!

问题

GKE kubernetes集群的IAM角色非常简单,"Admin,Read/Write,Read".

为了对kubernetes集群进行更细粒度的控制,应集群中使用Kubernetes RBAC ,允许我将用户限制为单个命名空间,单个API端点,单个操作等.

但是,没有为用户指定IAM角色; 用户无法对群集进行身份验证(RBAC是授权,而不是身份验证).

然而,我可以设置的最低权限IAM角色是"Container Engine Viewer",因此无论我使用Kubernetes RBAC实施的限制如何,我的所有用户仍然具有完全读取权限.

有没有人找到一种方法来确保GKE中的所有权限来自RBAC,基本上取消了IAM的权限?

Mat*_*son 8

很奇怪写出这个问题会让你早日得到答案吗?

Google Cloud的IAM中有一个新的"Alpha"功能,上次我试图解决这个问题时并没有这个功能.

在IAM>角色下,您现在可以使用自己的权限子集创建自定义IAM角色.

我创建了一个允许gcloud container clusters get-credentials工作的最小角色,但没有别的,允许kubernetes集群内的权限由RBAC完全管理.

初步测试看起来不错.

IAM角色截图(具有所需权限)如下.

具有GKE集群访问权限的最小IAM角色

新的IAM角色alpha功能