到目前为止,最流行的权限设计模型是 RBAC 模型,即基于角色的访问控制
RBAC0 模型这是权限最基本、最核心的模型,包括用户/角色/权限,其中用户和角色是多对多的
,角色和权限也是多对多的。
角色加入的原因
有人会问,为什么用户不直接关联权限?在用户基数较小的系统中,例如20人的小型系统,管理员可以直接将用户与权限关联橙光游戏,工作量不大,选择一个用户并检查所需的权限。
但是,在实际的企业系统中,用户群比较大,而且很多用户都拥有相同的权限,属于普通的访问权限,如果管理员授权100人以上,工作量巨大。
这就引入了“角色”的概念,一个角色可以关联多个用户,管理员只需要将角色分配给用户,这样用户就拥有了该角色下的所有权限,不仅提高了效率角色权限设计,而且具有很大的扩展性。
权限资源的类型权限
是用户可以访问的资源,包括页面权限、操作权限和数据权限
数据权限
:数据权限是指用户在同一页面上看到不同的数据。例如,全国有很多城市和分支机构,例如杭州用户登录系统只能看到杭州的数据,上海用户只能看到上海的数据
以上是RBAC
的核心设计和模型分析,也叫RBAC0,基于核心概念,RBAC还提供了扩展模式。包括 RBAC1、RBAC2、RBAC3 型号。下面介绍这三种类型
RBAC1 模型
该模型引入了等级角色的概念开发学习,即角色具有从属关系,角色之间的继承关系可分为一般继承关系和限制继承关系。一般继承关系只要求角色继承关系是绝对偏序关系,允许角色之间进行多次继承。限制继承关系进一步要求角色继承关系为树状结构,实现角色间的单一继承。这种设计允许对角色进行分组和分层,在一定程度上简化了权限管理。
RBAC2 模型
基于核心模型,进行角色约束控制,在RBAC2模型中加入责任分离关系,该模型规定了在为角色分配权限时,或将角色分配给用户时,以及用户在特定时间激活角色时应遵循的强制性规则。责任分离
包括静态责任分离
以及动态分离的责任,主要包括以下约束:
基数约束:可以分配给角色的用户数量有限制;用户可以拥有的角色数量是有限制的;还应限制同一角色的访问权限数量,以控制系统中高级权限的分配。
先决条件角色:也就是说,为了让用户获得更高级别的角色,他们必须首先获得旁边的角色。
RBAC3 模型
那是
最全面的权限管理,基于 RBAC0,集成了 RBAC1 和 RBAC2。
用户组
当平台用户基数增加,角色类型增加,并且有些人具有相同的属性,例如财务部门的所有员工,如果直接给用户分配角色,管理员的工作量会非常大角色权限设计,如果将具有相同属性的用户归入一个用户组,则管理员直接为该用户组分配角色, 用户组中的每个用户都可以拥有该角色,并且
其他用户加入用户组后,可以自动获取该用户组的所有角色,退出该用户组。同时撤销用户组下的角色,管理员无需手动管理角色。
根据用户组是否有从属关系,可以分为上下级用户组和普通用户组
具有组织/职位/用户组的模型
根据系统的复杂性,多对多和一对一关系可能会有所不同在单系统、单用户类型的情况下,用户与组织是一对一的,组织与职位是一对多的,用户与职位是一对一的,组织与角色是一对一的,
职位与角色是一对一的,用户与用户组是
多对对,用户组和角色是一对一的,当然,这些关系也可以根据具体业务进行调整。模型设计并没有死,如果一个小型系统不需要用户组,则可以将其删除。
对于分布式系统和单一用户类型,这里的权限系统将
变得很复杂,这里会介绍一个“系统”的概念,此时的系统架构是一个分布式系统,权限系统是独立的,负责所有系统的权限控制,其他业务系统如商品中心、订单中心、用户中心,每个系统都有自己的角色和权限,那么权限系统可以配置其他系统的角色和权限。