我站后台的权限系统,是几年前写的php版本,一个比较粗糙的RBAC实现。那么,随着公司迅速壮大,线上操作的复杂性、安全性、效率问题,迫切需要重构。去年底开始,我便负责重构这块。
先抛个问题,后台权限系统,应该是什么样的?有哪些原则?
- 遵守RBAC,按角色分配权限,普通用户对权限点透明
- 权限收敛 这个是权限系统的安全性问题,等会细说
- 效率问题 老后台很多功能是缺失的,各种人肉操作
- 扩展性 灵活支持复杂业务权限需求
直奔主题,看看这个符合RBAC的权限架构(小伙伴画的不错)。
名词解释:
- Super Admin 超级管理员,这里主要是创建category(业务)和指定category admin,权限点能力下放,否则是个单点。
- Category Admin 通常是业务负责人或者产品大佬,负责创建和审批权限点,审批角色
- Role Admin 角色管理员 通常创建和负责赋予人角色
- Users 普通后台用户
- User Group,用户组是个扩展支持,并非必需设计。可以绑定多个角色,但同时也下放了角色绑定,有一定风险
用户角色划分清晰,权责明确。那么再浅谈几个关键点。
权限收敛
权限分配,不能滥用、也不能乱用。能临时,则临时权限。转岗的、离职的怎么回收?多久不用的权限是不是回收?关于审批,有明确负责人,合适的人才能审批好!等等细节很多
效率问题
主要是流程化、工单化,有一些后台页面能力,有一些批量操作能力,用户组也是一个扩展性支持。
扩展性
这本是2.0重点考虑的,权限点的设计上看一些业界做法
如何在权限点上,配置一些业务上更精细化的权限管理需求,实现差异化功能。比如我司业务常常需要的按照子业务区分返回资源列表。这里可以做的很复杂。