KubeSphere多租户和RBAC的关系
用户是 KubeSphere 的帐户实例,可以通过平台角色绑定被设置为平台层面的管理员参与集群的管理,也可以通过企业空间角色绑定被添加到企业空间中参与项目协同。企业空间是最小的租户单元,企业空间提供了跨集群、跨项目(即 K8S 中的命名空间 namespace)共享资源的能力。企业空间中的成员(用户)可以在授权集群中创建项目。
KubeSphere 的多租户
多租户简介
用户是 KubeSphere 的帐户实例,可以通过平台角色绑定被设置为平台层面的管理员参与集群的管理,也可以通过企业空间角色绑定被添加到企业空间中参与项目协同。
企业空间是最小的租户单元,企业空间提供了跨集群、跨项目(即 K8S 中的命名空间 namespace)共享资源的能力。企业空间中的成员(用户)可以在授权集群中创建项目
KubeSphere 权限控制的核心是 RBAC 基于角色的访问控制,但是又在 Kubernetes 模仿原生的 RBAC,使用 crds 资源/第三方插件,新增了新的平台角色和平台角色绑定、企业空间角色和企业空间角色绑定(平台角色是全局概念、企业空间是部分)。
多租户元素 | 资源类型 | 来源 |
用户 | | Kubesphere crds |
平台角色 | | Kubesphere crds |
平台角色绑定 | | Kubesphere crds |
企业空间 | | Kubesphere crds |
| Kubesphere crds | |
企业空间角色 | | Kubesphere crds |
企业空间角色绑定 | | Kubesphere crds |
项目 | | k8s 自带 |
项目角色 | | k8s 自带 |
项目角色绑定 | | k8s 自带 |
用户 Users
用户是 KubeSphere 的帐户实例,是登陆 KubeSphere 控制台的实体账号,在 KubeSphere 中使用 users.iam.kubesphere.io
用户信息中保存了用户名、密码、最后登陆时间等信息
平台角色 globalroles
在 KubeSphere 中平台角色使用 globalroles.iam.kubesphere.io
资源抽象。安装成功后,会预创建 4 个内置的平台角色,每个平台角色实际又关联着一个或多个平台模板角色(平台角色的权限是关联模板角色权限的集合)。
内置角色 | 描述 |
workspaces-manager | 企业空间管理员,管理平台所有企业空间。 |
users-manager | 用户管理员,管理平台所有用户。 |
platform-regular | 平台普通用户,在被邀请加入企业空间或集群之前没有任何资源操作权限。 |
platform-admin | 平台管理员,可以管理平台内的所有资源。 |
以 users-manager 角色为例子,其关联了 用户查看 | 角色查看 | 用户管理 | 角色管理 四个模板角色,这让 users-manager 角色拥有了这四个角色模板下所对应的资源访问权限。
平台角色绑定 globalrolebindings
创建用户后,需要为用户分配一个平台角色,使用 globalrolebindings.iam.kubesphere.io
资源来抽象用户和平台角色的绑定关系。
在创建一个新的平台角色时,需要编辑权限,此时就是为新创建的平台角色关联预创建的角色模板
企业空间 WorkSpace
企业空间是 KubeSphere 中用来管理项目、DevOps 项目、应用模板和应用仓库的一种逻辑单元。可以在企业空间中控制资源访问权限,也可以安全地在团队内部分享资源。在 KubeSphere 中使用 workspaces.tenant.kubesphere.io
和 workspacesTemplate.tenant.kubesphere.io
企业空间角色 workspaceroles
在 KubeSphere 中企业空间角色使用 workspaceroles.iam.kubesphere.io
名称 | 描述 |
workspace-viewer | 企业空间观察员,可以查看企业空间中所有资源。 |
workspace-self-provisioner | 企业空间普通成员,可以查看企业设置、管理应用模板、创建项目和 DevOps 项目。 |
workspace-regular | 企业空间普通成员,可以查看企业空间设置。 |
workspace-admin | 企业空间管理员,可以管理企业空间中的所有资源。 |
以 system-workspace-viewer 为例子,其关联了 企业空间设置查看 | 角色查看 | 成员查看 | 部门查看 | 项目查看 | DevOps 项目查看 | 应用模板查看 | 应用仓库查看 八个模板角色。
企业空间角色绑定 workspacerolebindings
在企业空间中,可以在企业空间成员处邀请用户加入企业空间,邀请用户加入时,还需要为其分配企业空间角色,使用 workspacerolebindings.iam.kubesphere.io
资源来抽象用户和企业空间角色的绑定关系。
此处以企业空间的默认管理员角色为例(管理员的角色绑定是在创建企业空间时选择管理员时绑定)
项目 NameSpace
KubeSphere 中项目就是 K8S 中的命名空间,使用的就是 NameSpace 资源来抽象项目,企业空间和项目的关系是一对多,即一个企业空间下,可以创建多个项目。K8S 的默认命名空间和 KubeSphere 系统相关的命名空间,都归属于默认企业空间 system-workspace
下面在前面创建的 demo-ws
企业空间下创建一个新的项目 demo-ws-project-01
项目角色 roles
在 KubeSphere 中项目角色对应的就是 K8S 自带的 roles
资源。但是通过 KubeSphere 创建新项目时,会自动创建 3 个内置的项目角色,每个项目角色实际又关联着一个或多个项目模板角色(项目角色的权限是关联项目模板角色权限的集合)。
内置角色 | 描述 |
viewer | 项目观察者,可以查看项目下所有的资源。 |
operator | 项目维护者,可以管理项目下除用户和角色之外的资源。 |
admin | 项目管理员,可以对项目下的所有资源执行所有操作。此角色可以完全控制项目下的所有资源。 |
下图展示的是 demo-ws-project-01
项目下的项目角色,如需查看其他项目下的角色,需要带-n
参数指定项目名(命名空间)
以 viewer 角色为例,关联了如下的项目模板角色
项目角色绑定 rolebindings
在项目下,可以在项目成员处邀请用户加入项目,邀请用户加入时,还需要为其分配项目角色,此时使用的就是 K8S 自带的 rolebindings
资源
以 demo-ws-project-01
项目下绑定关系为例
从下图可以看到,admin 用户绑定了该项目下的 admin 角色
集群 Cluster
集群角色 ClusterRole
在 KubeSphere 的多租户架构中,无法直接管理 ClusterRole,KubeSphere 创建了两个角色 cluster-admin
和 cluster-viewer
分别用来查看和管理集群资源,用户无法额外再新增ClusterRole,也无法查看和修改现有的 ClusterRole
更多推荐
所有评论(0)