# 授权用户访问名称空间
本文描述了如何授予用户/用户组访问 Kubernetes 的一个名称空间。
# 前提条件
- 已安装 Kuboard v3,版本不低于
v3.1.1.0
# 两阶段授权
Kuboard v3 中,采用两阶段授权的方式控制用户/用户组在 Kuboard / Kubernetes 中的权限。
第一阶段授权,控制当前用户:
- 可以操作哪个集群
- 以什么样的身份操作该集群
第二阶段授权,控制用户:
- 在集群内具备什么样的权限
本文描述了如何在 Kuboard 界面中为用户组 mygroup
授权,允许该用户组中的用户以 admin
角色访问集群 k8s-21
中的 default
名称空间。使用该用户组下 test
用户登录 Kuboard 后,首页界面如下所示:
假设用户
test
以及用户组mygroup
已经实现创建好
test
用户所查询到的集群列表结果为空;- 点击右上角的用户名,可以显示当前登录用户的基本信息以及其所属的用户组;
# 第一阶段授权
使用管理员账号登录 Kuboard 首页,并导航到
用户与权限
->角色
->sso-user
,如下图所示:sso-user
为安装 Kuboard 时默认创建的第一阶段授权的角色,该角色具备KubernetesCluster.act-as-impersonate-user
的GET
权限,允许与此角色关联的用户/用户组以使用 ServiceAccount kuboard-admin 扮演
的身份操作 Kubernetes 集群。切换到
关联用户/用户组(集群级别)
标签页,并点击创建角色绑定(集群级别)
填写表单,如下图所示:
字段名 填写内容 备注 主体类型 用户组 用户组 mygroup Kubernetes 集群 k8s-21 选择已经激活的集群 此时,用
test
账号登录 Kuboard 首页,此时用户已经可以在 Kubernetes 集群列表中查看到被授权的k8s-21
这个集群,如下图所示:点击该集群,弹出对话框中:
- 可以激活
使用 ServiceAccount kuboard-admin 扮演 test
这个选项 - 名称空间列表中的所有名称空间都为不可访问的状态
- 可以激活
# 第二阶段授权
以管理员用户登录到 Kuboard 首页,点击集群列表中的集群
k8s-21
,进入集群页面,并切换到访问控制
->第一阶段授权
页面,如下图所示:在此页面中,可以查看到该集群已经授权给
mygroup
用户组(操作步骤参考前文)。切换到
访问控制
->第二阶段授权
->用户组
,如下图所示:点击图中
为新 Group 授权
按钮,并填入mygroup
作为被授权的用户组名称,然后点击确定按钮,如下图所示:在
Group
详情页面,切换到default
名称空间,并点击 RoleBinding 后面的添加
按钮,如下图所示:在弹出对话框中,
关联的 ClusterRole/Role
字段选择ClusterRole
、admin
,并点击保存按钮,如下图所示:点击保存后,可以看到该用户组在
default
名称空间中的权限,如下图所示:
# 进入名称空间
完成前述 第一阶段授权、第二阶段 两个步骤后,以 test
用户登录 Kuboard 界面,并点击首页的 k8s-21
集群,在弹出框中可以看到 default
名称空间已经变成了已授权的状态,点击 default
可以进入该名称空间,如下图所示:
# selfsubjectaccessreviews
Kuboard 客户端需要调用 Kubernetes 的 /apis/authorization.k8s.io/v1/selfsubjectrulesreviews
接口用于确定界面上哪些菜单显示,哪些菜单不显示。极少部分情况下,您的集群可能没有授予 system:authenticated
用户组该权限,例如阿里云托管的 K8S 集群。
在这种情况下,Kuboard (v3.1.1.8及以上版本)将在界面上做出如下提示:
解决此问题的办法是,将 system:basic-user
、system:discover
、system:public-info-viewer
这三个 ClusterRole 绑定到您的用户或者用户组,步骤如下:
点击右上角的用户名,确认当前用户所属的用户组,如下图所示:
图中,用户属于
administrators
用户组。如果您的界面上显示,当前用户属于多个用户组,您只需要挑选其中一个用户组与system:basic-user
、system:discover
、system:public-info-viewer
这三个 ClusterRole 绑定。使用 Serviceaccount kuboard-admin 的身份切换到菜单 访问控控制 --> 用户组,如下图所示:
在上图中,点击 为新 Group 授权 并填写 Group Name
administrators
,然后点击确定,将跳转到如下界面:点击上图中 ClusterRoleBinding 后面的 添加 按钮,如下图所示:
在关联的 ClusterRole 里选择名称为
system:basic-user
的 ClusterRole,并点击 保存 按钮,此步骤将创建一个 ClusterRoleBinding,将用户组administrators
与 ClusterRolesystem:basic-user
关联到一起。重复上述步骤,再创建两个 ClusterRoleBinding,并将
administrators
与system:discover
以及system:public-info-viewer
关联起来。
完成上述步骤后,您在使用被授权用户访问 Kuboard 界面就可以正常了。