一. 权限系统
1.1 系统定义
用户管理:用户管理中的用户主要是功能系统的使用者,对应业务的用户有着基本相似的系统功能使用需求和权限等级,对个体进行关联性的初步分群或者分组
角色管理:角色是基于业务管理需求而预先在系统中设定好的,每个角色对应明确的系统权限,是众多最小权限颗粒的组成
权限管理:基于角色的访问权限控制(RBAC)模型,赋予用户的权限管理,可以分为两大类型:
功能权限: 功能权限是系统执行权限控制的基本单元。针对功能模块来划分用户权限是比较粗颗粒度的一种划分方式。不同角色的用户查看相同的数据字段,但可执行的功能操作不同
数据权限: 数据字段权限是较细颗粒度,实现不同角色用户进入同一模块时,可见的数据字段都有差异。这些字段共存在一个页面中,只是受限于不同的角色权限而已
二. RBAC模型
2.1 RBAC模型
成熟的权限模型强调用户与角色是多对多关系,角色与权限是多对多关系。以“用户”为单位的权限设计;以“权限”为单位的权限设计;以“用户”与“权限”结合的权限设计
2.2 RBAC-0模型
RBAC0是RBAC模型的核心基础思想,即用户通过被赋予角色和权限进行关联。用户、角色和权限之间的两两关系均是多对多关系,即一个用户可以被赋予多个角色,一个角色可以被赋予多个用户。一个角色可以拥有多项权限,一项权限可以赋予多个角色。
角色起到了桥梁的作用,连接了用户和权限的关系,每个角色可以关联多个权限,同时一个用户关联多个角色,那么这个用户就有了多个角色的多个权限。
2.3 RBAC-1模型
RBAC1是引入继承关系的RBAC模型,一个角色可以从另一个角色继承许可权,即角色具有上下级的关系.角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系允许角色间的多继承,受限继承关系则进一步要求角色继承关系是一个树结构
从上图举例,角色B继承自角色A,角色A拥有权限1-2,则无须再单独赋予角色B。角色B自动拥有权限1-2,并且还可以单独赋予权限3-4。例如一个部门中的多个业务小组,每个业务小组只能看到自己小组的数据,但部门经理可以看到全部小组的数据。
2.4 RBAC-2模型
RBAC-2模型在用户与角色间和角色与角色之间加入了一些规则。规定了权限被赋予角色时或角色被赋予用户时所应遵循的强制性规则。角色互斥、基数约束、先决条件角色等。
- 互斥角色:同一用户在两个互斥角色中只能选择一个,分为静态职责分离SSD和动态职责分离SSD
- 先决条件角色 :指要想获得较高的权限,要首先拥有低一级的权限。角色A为角色B的上级,要想为用户分配角色A,则必须先分配角色B
- 基数约束:一个角色被分配的用户数量受限;一个用户可拥有的角色数目受限;一个角色的权限数目受限
- 运行时互斥:允许一个用户具有两个角色,但在运行中不可同时激活这两个角色。运行时只能激活一个角色
2.6 用户组和权限组
基于RBAC的普通用户组,直接给用户组分配角色,再把用户加入用户组。这样用户除了拥有自身的权限外,还拥有了所属用户组的所有权限。若用户离开了当前用户组之后,就自动失去了该组的权限。同时用户在组中时,同样不影响对该用户单独赋予权限。具有上下级关系的用户组和权限组:权限组则是将多个权限直接打包,在赋予权限时,直接按权限组赋予
三. 设计过程
3.1 用户-角色-权限
用户-角色-权限的设计方式是最为简单的设计方式。把操作权限分配给角色,新增一个新的角色以后,就会给这个新增的角色分配相应的操作权限,包括操作权限和数据查看权限
3.2 功能权限的处理方式
功能权限定义:为可见、可以操作的功能范围。控制用户对字段的可见性,可编辑性
- 读写权限:用户具备该字段的最大权限,可见可编辑列表和详情页该字段
- 只读权限:可见列表和详情页该字段。但不可编辑
- 不可见权限:不可见不可编辑列表和详情页该字段
需要注意的一个问题是,权限控制的最小粒度。如果要实现每一个权限的控制,相当于每一个权限对应功能都需要做封装
3.3 数据权限的处理方式
数据权限定义:数据权限管理主要控制某条数据记录对用户是否可见,结合功能权限可以更灵活的配置业务过程中每一位员工的功能操作权限及数据可见范围
- 基础数据权限:即根据数据的负责人来决定
- 数据共享:根据基础数据权限中的数据记录所属将其共享给其它用户查看或编辑
数据共享规则是将某个部门/用户(数据来源)的负责的数据(可部分)共享给某个部门、用户或者用户组(共享范围)。配置数据共享规则后,被共享方对共享方所负责的所有数据可见,并具备共享权限对应的操作权限
- 数据来源于:即需要共享的数据,选择用户即指该用户负责的记录数据,选择部门即指该部门下员工负责的记录数据
- 共享的数据:选择需共享的对象,比如将用户A负责的客户数据共享给用户B。 数据共享到:被共享方,可选择用户、部门或用户组,被选择的用户、部门或用户组成员将可以看到共享的数据
- 共享后的权限:配置被共享方可对数据查看或是可编辑的权限。如果配置为“读写”权限后,被共享方对共享数据的权限可类比于负责人的权限
四、总结
4.1 结语
对于后台权限管理系统并不是越复杂越好,最有效的手段还是从使用场景出发,使用场景决定业务逻辑,业务逻辑决定功能逻辑。这也是对业务为导向的后台产品至关重要