权限模型迄今为止最为普及的权限设计模型是RBAC模型

权限模型迄今为止最为普及的权限设计模型是RBAC模型

到目前为止,最流行的权限设计模型是 RBAC 模型,即基于角色的访问控制

RBAC0 模型这是权限最基本、最核心的模型,包括用户/角色/权限,其中用户和角色是多对多的

,角色和权限也是多对多的。

角色权限设计_用户角色权限设计_角色权限设计图

角色加入的原因

有人会问,为什么用户不直接关联权限?在用户基数较小的系统中,例如20人的小型系统,管理员可以直接将用户与权限关联橙光游戏,工作量不大,选择一个用户并检查所需的权限。

但是,在实际的企业系统中,用户群比较大,而且很多用户都拥有相同的权限,属于普通的访问权限,如果管理员授权100人以上,工作量巨大。

这就引入了“角色”的概念,一个角色可以关联多个用户,管理员只需要将角色分配给用户,这样用户就拥有了该角色下的所有权限,不仅提高了效率角色权限设计,而且具有很大的扩展性。

权限资源的类型权限

是用户可以访问的资源,包括页面权限、操作权限和数据权限

数据权限

:数据权限是指用户在同一页面上看到不同的数据。例如,全国有很多城市和分支机构,例如杭州用户登录系统只能看到杭州的数据,上海用户只能看到上海的数据

用户角色权限设计_角色权限设计_角色权限设计图以上是RBAC

的核心设计和模型分析,也叫RBAC0,基于核心概念,RBAC还提供了扩展模式。包括 RBAC1、RBAC2、RBAC3 型号。下面介绍这三种类型

RBAC1 模型

该模型引入了等级角色的概念开发学习,即角色具有从属关系,角色之间的继承关系可分为一般继承关系和限制继承关系。一般继承关系只要求角色继承关系是绝对偏序关系,允许角色之间进行多次继承。限制继承关系进一步要求角色继承关系为树状结构,实现角色间的单一继承。这种设计允许对角色进行分组和分层,在一定程度上简化了权限管理。

用户角色权限设计_角色权限设计图_角色权限设计

RBAC2 模型

基于核心模型,进行角色约束控制,在RBAC2模型中加入责任分离关系,该模型规定了在为角色分配权限时,或将角色分配给用户时,以及用户在特定时间激活角色时应遵循的强制性规则。责任分离

包括静态责任分离

以及动态分离的责任,主要包括以下约束:

基数约束:可以分配给角色的用户数量有限制;用户可以拥有的角色数量是有限制的;还应限制同一角色的访问权限数量,以控制系统中高级权限的分配。

先决条件角色:也就是说,为了让用户获得更高级别的角色,他们必须首先获得旁边的角色。

RBAC3 模型

那是

最全面的权限管理,基于 RBAC0,集成了 RBAC1 和 RBAC2。

用户组

当平台用户基数增加,角色类型增加,并且有些人具有相同的属性,例如财务部门的所有员工,如果直接给用户分配角色,管理员的工作量会非常大角色权限设计,如果将具有相同属性的用户归入一个用户组,则管理员直接为该用户组分配角色, 用户组中的每个用户都可以拥有该角色,并且

其他用户加入用户组后,可以自动获取该用户组的所有角色,退出该用户组。同时撤销用户组下的角色,管理员无需手动管理角色。

根据用户组是否有从属关系,可以分为上下级用户组和普通用户组

具有组织/职位/用户组的模型

角色权限设计_用户角色权限设计_角色权限设计图

根据系统的复杂性,多对多和一对一关系可能会有所不同在单系统、单用户类型的情况下,用户与组织是一对一的,组织与职位是一对多的,用户与职位是一对一的,组织与角色是一对一的,

职位与角色是一对一的,用户与用户组是

多对对,用户组和角色是一对一的,当然,这些关系也可以根据具体业务进行调整。模型设计并没有死,如果一个小型系统不需要用户组,则可以将其删除。

对于分布式系统和单一用户类型,这里的权限系统将

变得很复杂,这里会介绍一个“系统”的概念,此时的系统架构是一个分布式系统,权限系统是独立的,负责所有系统的权限控制,其他业务系统如商品中心、订单中心、用户中心,每个系统都有自己的角色和权限,那么权限系统可以配置其他系统的角色和权限。

角色权限设计图_角色权限设计_用户角色权限设计

文章来源:https://juejin.cn/post/7046614333610000397