0
点赞
收藏
分享

微信扫一扫

【KubeSphere】多租户和RBAC的关系

KubeSphere 的多租户

【KubeSphere】多租户和RBAC的关系_多租户

多租户简介

用户是 KubeSphere 的帐户实例,可以通过平台角色绑定被设置为平台层面的管理员参与集群的管理,也可以通过企业空间角色绑定被添加到企业空间中参与项目协同。

企业空间是最小的租户单元,企业空间提供了跨集群、跨项目(即 K8S 中的命名空间 namespace)共享资源的能力。企业空间中的成员(用户)可以在授权集群中创建项目

KubeSphere 权限控制的核心是 RBAC 基于角色的访问控制,但是又在 Kubernetes 模仿原生的 RBAC,使用 crds 资源/第三方插件,新增了新的平台角色和平台角色绑定、企业空间角色和企业空间角色绑定(平台角色是全局概念、企业空间是部分)

多租户元素

资源类型

来源

用户

users.iam.kubesphere.io

Kubesphere crds

平台角色

globalroles.iam.kubesphere.io

Kubesphere crds

平台角色绑定

globalrolebindings.iam.kubesphere.io

Kubesphere crds

企业空间


workspaces.tenant.kubesphere.io

Kubesphere crds

workspacesTemplate.tenant.kubesphere.io

Kubesphere crds

企业空间角色

workspaceroles.iam.kubesphere.io

Kubesphere crds

企业空间角色绑定

workspacerolebindings.iam.kubesphere.io

Kubesphere crds

项目

namespace

k8s 自带

项目角色

roles

k8s 自带

项目角色绑定

rolebindings

k8s 自带

用户 Users

用户是 KubeSphere 的帐户实例,是登陆 KubeSphere 控制台的实体账号,在 KubeSphere 中使用 users.iam.kubesphere.io

【KubeSphere】多租户和RBAC的关系_多租户_02

【KubeSphere】多租户和RBAC的关系_命名空间_03

用户信息中保存了用户名、密码、最后登陆时间等信息

【KubeSphere】多租户和RBAC的关系_用户管理_04

平台角色 globalroles

在 KubeSphere 中平台角色使用 globalroles.iam.kubesphere.io 资源抽象。安装成功后,会预创建 4 个内置的平台角色,每个平台角色实际又关联着一个或多个平台模板角色(平台角色的权限是关联模板角色权限的集合)。

内置角色

描述

workspaces-manager

企业空间管理员,管理平台所有企业空间。

users-manager

用户管理员,管理平台所有用户。

platform-regular

平台普通用户,在被邀请加入企业空间或集群之前没有任何资源操作权限。

platform-admin

平台管理员,可以管理平台内的所有资源。

【KubeSphere】多租户和RBAC的关系_命名空间_05

以 users-manager 角色为例子,其关联了 用户查看 | 角色查看 | 用户管理 | 角色管理 四个模板角色,这让 users-manager 角色拥有了这四个角色模板下所对应的资源访问权限。

【KubeSphere】多租户和RBAC的关系_多租户_06

【KubeSphere】多租户和RBAC的关系_多租户_07

平台角色绑定 globalrolebindings

创建用户后,需要为用户分配一个平台角色,使用 globalrolebindings.iam.kubesphere.io资源来抽象用户和平台角色的绑定关系。

【KubeSphere】多租户和RBAC的关系_多租户_08

【KubeSphere】多租户和RBAC的关系_多租户_09

【KubeSphere】多租户和RBAC的关系_命名空间_10

在创建一个新的平台角色时,需要编辑权限,此时就是为新创建的平台角色关联预创建的角色模板

【KubeSphere】多租户和RBAC的关系_多租户_11

企业空间 WorkSpace

企业空间是 KubeSphere 中用来管理项目、DevOps 项目、应用模板和应用仓库的一种逻辑单元。可以在企业空间中控制资源访问权限,也可以安全地在团队内部分享资源。在 KubeSphere 中使用 workspaces.tenant.kubesphere.ioworkspacesTemplate.tenant.kubesphere.io

企业空间角色 workspaceroles

在 KubeSphere 中企业空间角色使用 workspaceroles.iam.kubesphere.io

名称

描述

workspace-viewer

企业空间观察员,可以查看企业空间中所有资源。

workspace-self-provisioner

企业空间普通成员,可以查看企业设置、管理应用模板、创建项目和 DevOps 项目。

workspace-regular

企业空间普通成员,可以查看企业空间设置。

workspace-admin

企业空间管理员,可以管理企业空间中的所有资源。

【KubeSphere】多租户和RBAC的关系_多租户_12

以 system-workspace-viewer 为例子,其关联了 企业空间设置查看 | 角色查看 | 成员查看 | 部门查看 | 项目查看 | DevOps 项目查看 | 应用模板查看 | 应用仓库查看 八个模板角色。

【KubeSphere】多租户和RBAC的关系_命名空间_13

【KubeSphere】多租户和RBAC的关系_命名空间_14

企业空间角色绑定 workspacerolebindings

在企业空间中,可以在企业空间成员处邀请用户加入企业空间,邀请用户加入时,还需要为其分配企业空间角色,使用 workspacerolebindings.iam.kubesphere.io 资源来抽象用户和企业空间角色的绑定关系。

【KubeSphere】多租户和RBAC的关系_多租户_15

此处以企业空间的默认管理员角色为例(管理员的角色绑定是在创建企业空间时选择管理员时绑定)

【KubeSphere】多租户和RBAC的关系_用户管理_16

【KubeSphere】多租户和RBAC的关系_多租户_17

项目 NameSpace

KubeSphere 中项目就是 K8S 中的命名空间,使用的就是 NameSpace 资源来抽象项目,企业空间和项目的关系是一对多,即一个企业空间下,可以创建多个项目。K8S 的默认命名空间和 KubeSphere 系统相关的命名空间,都归属于默认企业空间 system-workspace

【KubeSphere】多租户和RBAC的关系_用户管理_18

下面在前面创建的 demo-ws 企业空间下创建一个新的项目 demo-ws-project-01

【KubeSphere】多租户和RBAC的关系_命名空间_19

【KubeSphere】多租户和RBAC的关系_命名空间_20

项目角色 roles

在 KubeSphere 中项目角色对应的就是 K8S 自带的 roles 资源。但是通过 KubeSphere 创建新项目时,会自动创建 3 个内置的项目角色,每个项目角色实际又关联着一个或多个项目模板角色(项目角色的权限是关联项目模板角色权限的集合)。

内置角色

描述

viewer

项目观察者,可以查看项目下所有的资源。

operator

项目维护者,可以管理项目下除用户和角色之外的资源。

admin

项目管理员,可以对项目下的所有资源执行所有操作。此角色可以完全控制项目下的所有资源。

下图展示的是 demo-ws-project-01 项目下的项目角色,如需查看其他项目下的角色,需要带-n参数指定项目名(命名空间)

【KubeSphere】多租户和RBAC的关系_多租户_21

以 viewer 角色为例,关联了如下的项目模板角色

【KubeSphere】多租户和RBAC的关系_多租户_22

【KubeSphere】多租户和RBAC的关系_命名空间_23

项目角色绑定 rolebindings

在项目下,可以在项目成员处邀请用户加入项目,邀请用户加入时,还需要为其分配项目角色,此时使用的就是 K8S 自带的 rolebindings 资源

demo-ws-project-01 项目下绑定关系为例

【KubeSphere】多租户和RBAC的关系_命名空间_24

从下图可以看到,admin 用户绑定了该项目下的 admin 角色

【KubeSphere】多租户和RBAC的关系_命名空间_25

【KubeSphere】多租户和RBAC的关系_命名空间_26

集群 Cluster

集群角色 ClusterRole

在 KubeSphere 的多租户架构中,无法直接管理 ClusterRole,KubeSphere 创建了两个角色 cluster-admincluster-viewer 分别用来查看和管理集群资源,用户无法额外再新增ClusterRole,也无法查看和修改现有的 ClusterRole

【KubeSphere】多租户和RBAC的关系_命名空间_27


举报

相关推荐

0 条评论