1 - 概述
-
Polarismesh(北极星) 的鉴权功能,您可以清晰地管理资源与用户的访问权限。北极星基于命名空间和服务资源维度实现权限管控。
-
Polarismesh(北极星) 引入策略的概念,将资源的访问权限与不同的用户角色联系到一起。例如下图,
-
Polarismesh(北极星) 默认账户
name: polaris password: polaris
鉴权模型
主账号
也可称为主用户,是所有北极星资源的拥有者,对所有北极星资源有操作权限。
- 主账户可以直接修改子账户的密码
- 主账户可以创建、删除用户
- 主账户可以创建、删除用户组
- 主账户可以为用户组添加、移除用户
- 主账户可以禁用用户、用户组token
- 主账户可以编辑鉴权策略
子账号
由主账户创建的协作账户,默认只能操作没有关联任何鉴权策的北极星资源。
- 子账户能够查看北极星的账户列表,但是只能查看自己的账户信息
- 子账户只能查看自身的token信息
- 子账户只能查看自己所在的用户组列表
- 子账户只能查看自己所在的用户组的token
用户组
北极星的用户组概念,是一组具有相同权限的用户。主账号可以通过创建用户组批量对用户进行授权与管理。
- 用户组只能由主账号创建和授权
- 用户组不能进行控制台登录
授权
主用户可以管理所有子用户以及用户分组的写权限。子用户可将自己拥有写权限的资源权限分配给其他子用户或者用户组。
- 如果用户UserA被加入用户组GroupA,那么UserA可以操作授权给GroupA的资源,但是GroupA无法操作UserA的资源。
- 如果用户UserA从用户组GroupA中被移除,那么UserA将无法操作授权给GroupA的资源。
- 默认策略只能编辑资源信息
资源操作凭据 Token
资源权限将通过token进行控制和管理,用户与用户组均可生成。
- 若用户UserA的token被禁用,则只能读取北极星的资源,但是无法创建、修改北极星的资源。
- 若用户组GroupA的token被禁用,则GroupA只能读取北极星的资源,但是无法创建、修改北极星的资源。
资源鉴权设计
未开启鉴权
- 命名空间、服务、配置分组的读写操作不受限制,任何人都可以对资源进行修改。
开启鉴权
- 开启鉴权前创建的资源,默认没有绑定鉴权策略,任何人都可以对资源进行修改。
- 鉴权行为仅针对有绑定策略的资源生效。
- 命名空间、服务、配置分组,创建之后默认仅能被管理员以及当前创建者进行读写操作。
命名空间
- 任何用户均可以创建命名空间
- 如果用户对该命名空间有写权限,则可以在该命名空间下创建服务以及配置分组。
- 用户可以在创建命名空间时,指定可以操作该命名空间的其他用户,或者用户组。
服务
- 用户可以在创建服务时,指定可以操作该服务的其他用户,或者用户组
- 如果用户对该服务有写权限,则可以对该服务的信息、实例进行操作。
- 如果用户对该服务有写权限,但是没有对应命名空间的写权限,也可以对该服务的信息、实例进行操作。
配置分组
- 如果用户对该配置分组有写权限,则可以对该配置分组的信息、配置文件进行操作。
- 如果用户对该配置分组有写权限,但是没有对应命名空间的写权限,也可以对该配置分组的信息、配置文件进行操作。
2 - 策略
服务端开启鉴权
- 修改服务端配置文件
polaris-server.yaml
auth:
# 鉴权插件
name: defaultAuth
option:
# token 加密的 salt,鉴权解析 token 时需要依靠这个 salt 去解密 token 的信息
# salt 的长度需要满足以下任意一个:len(salt) in [16, 24, 32]
# 如有自定义需求,需要在首次部署时指定
salt: polarismesh@2021
# 控制台鉴权能力开关,默认开启
consoleOpen: true
# 客户端鉴权能力开关, 默认关闭
clientOpen: false
# 是否启用鉴权的严格模式,即对于没有任何鉴权策略的资源,也必须带上正确的用户/用户组 token 才能操作, 默认开启
# 该配置项在 v1.17.2 版本开始舍弃,如果设置 strict == true, 则相当于 consoleStrict = true & clientStrict = false
strict: false
# 是否启用鉴权的严格模式,即对于没有任何鉴权策略的资源,也必须带上正确的用户/用户组 token 才能操作, 默认开启
# 该配置项在 v1.17.2 版本开始启用
consoleStrict: true
# 是否启用鉴权的严格模式,即对于没有任何鉴权策略的资源,也必须带上正确的用户/用户组 token 才能操作, 默认关闭
# 该配置项在 v1.17.2 版本开始启用
clientStrict: false
-
若为VM部署,修改每个polaris部署节点中的
polaris-server.yaml
文件,修改完后执行以下命令进行重启polarisbash tool/stop.sh bash tool/start.sh
bash tool/stop.cmd bash tool/start.cmd
-
若为容器化部署,则先修改名称为
polaris-server-config
的configmap,修改完之后,执行以下命令触发polaris的滚动重启kubectl rollout restart statefulset polaris
-
如果有修改 salt 的需要,则需要按照以下步骤执行
- 确定最终的 salt 值并将其修改至
polaris-server.yaml
中 - 执行auth/defaultauth/token_test.go中的
Test_CustomDesignSalt
函数,生成新的token
- 执行下列SQL
INSERT INTO `user` ( `id`, `name`, `password`, `source`, `token`, `token_enable`, `user_type`, `comment`, `owner` ) VALUES ( '65e4789a6d5b49669adf1e9e8387549c', 'polaris', '$2a$10$5XMjs.oqo4PnpbTGy9dQqewL4eb4yoA7b/6ZKL33IPhFyIxzj4lRy', 'Polaris', '${新的token}', 1, 20, 'default polaris admin account', '' );
- 这样就完成了主账户的
token
变更
- 确定最终的 salt 值并将其修改至
如何创建鉴权策略
- 单击新建策略。填写策略基本信息,在角色栏可以选择需要授权用户或用户组,单击下一步选择授权的资源。
- 在资源栏可选择北极星的资源类型,包括命名空间、服务等资源,主账号可对所有资源进行操作。
- 单击下一步,进入预览界面,详细展示该策略涉及的用户、用户组以及资源。确认信息无误后,单击完成。
- 主账号可在权限策略列表查阅现有的权限策略,可单击编辑进行授权或删除等操作。
新建资源如何选择可操作用户
创建命名空间
在命名空间页面中,点击新建,在弹出页面中,点击高级选择可以操作本资源的用户或者用户组。
创建服务
在服务列表页面中,点击新建,在弹出页面中,点击高级选择可以操作本资源的用户或者用户组。