导读:B端项目上,需要设计实现一个权限管理模块,就要知道到一个很重要的RBAC模型,所以整理总结了RBAC的一些知识。目前,使用最普遍的权限管理模型正是RBAC(Role-Based Access Control)模型,这篇文章主要是介绍基于RBAC 的权限管理系统,将会从RBAC是什么、如何设计RBAC两部分来介绍。
一、RBAC模型是什么?
1. RBAC模型概述
RBAC模型(Role-Based Access Control:基于角的访问控制)模型是20世纪90年代研究出来的一种新模型,但其实在20世纪70年代的多用户计算时期,这种思想就已经被提出来,直到20世纪90年代中后期,RBAC才在研究团体中得到一些重视,并先后提出了许多类型的RBAC模型。其中以美国George Mason大学信息安全技术实验室(LIST)提出的RBAC96模型最具有代表,并得到了普遍的公认。 RBAC认为权限授权的过程可以抽象地概括为:Who是否可以对What进行How 的访问操作,并对这个逻辑表达式进行判断是否为True的求解过程,也即是将权限问题转换为What、How的问题,Who、What、How构成了访问权限三元组,具体的理论可以去调查RBAC96的研究文件,这里就不做详细的展开介绍,让大家有个了解和即可。 轮椅电机2. RBAC的组成
在RBAC模型里面,有3个基础组成部分,分别是:用户、角和权限。
RBAC通过定义角的权限,并对用户授予某个角从而来控制用户的权限,实现了用户和权限的逻辑分离(区别于ACL模型),极大地方便了权限的管理。
下面在讲解之前,先介绍一些名词:
User(用户):每个用户都有唯一的UID识别,并被授予不同的角
Role(角):不同角具有不同的权限
Permission(权限):访问权限
用户-角映射:用户和角之间的映射关系
角-权限映射:角和权限之间的映射
它们之间的关系如下图所示:
爆震弹
例如下图,管理员和普通用户被授予不同的权限,普通用户只能去修改和查看个人信息,而不能创建创建用户和冻结用户,而管理员由于被授予所有权限,所以可以做所有操作。
例如下图,管理员和普通用户被授予不同的权限,普通用户只能去修改和查看个人信息,而不能创建创建用户和冻结用户,而管理员由于被授予所有权限,所以可以做所有操作。
3. RBAC支持的安全原则
RBAC支持三个著名的安全原则:最小权限原则、责任分离原则和数据抽象原则。
非法请求最小权限原则:RBAC可以将角配置成其完成任务所需的最小权限集合。
责任分离原则:可以通过调用相互独立互斥的角来共同完成敏感的任务,例如要求一个计账员和财务管理员共同参与统一过账操作。
数据抽象原则:可以通过权限的抽象来体现,例如财务操作用借款、存款等抽象权限,而不是使用典型的读、写、执行权限。
4. RBAC的优缺点
优点:简化了用户和权限的关系易扩展、易维护。
打铃器缺点:RBAC模型没有提供操作顺序的控制机制,这一缺陷使得RBAC模型很难适应哪些对操作次序有严格要求的系统。
5. RBAC的3种模型
1)RBAC0
RBAC0,是最简单、最原始的实现方式,也是其他RBAC模型的基础。
在该模型中,用户和角之间可以是多对多的关系,即一个用户在不同场景下是可以有不同的角,例如:项目经理也可能是组长也可能是架构师。同时每个
圆皂角角都至少有一个权限。这种模型下,用户和权限被分离独立开来,使得权限的授权认证更加灵活。
A、权限是用户可以访问的资源,包括页面权限、操作权限、数据权限。
a、页面权限:即用户登录系统可以看到的页面,由菜单来控制,菜单包括一级菜单和二级菜单,只要用户有一级和二级菜单的权限,那么用户就可以访问页面。
b、操作权限:即页面的功能按钮,包括查看、新增、修改、删除、审核等,用户点击删除按钮时,
后台会校验用户角下的所有权限是否包含该删除权限,如果是,就可以进行下一步操作,反之提示无权限。有的系统要求可见即可操作,意思是如果页面上能够看到操作按钮,那么用户就可以操作,要实现此需求,这里就需要前端来配合,前端开发把用户的权限信息缓存,在页面判断用户是否包含此权限,如果有,就显示该按钮,如果没有,就隐藏该按钮。某种程度上提升了用户体验,但是在实际场景可自行选择是否需要这样做。
扎胎器
c、数据权限:数据权限就是用户在同一页面看到的数据是不同的,比如财务部只能看到其部门下的用户数据,采购部只看采购部的数据,在一些大型的公司,全国有很多城市和分公司,比如杭州用户登录系统只能看到杭州的数据,上海用户只能看到上海的数据,解决方案一般是把数据和具体的组织架构关联起来,举个例子,再给用户授权的时候,用户选择某个角同时绑定组织如财务部或者合肥分公司,那么该用户就有了该角下财务部或合肥分公司下的的数据权限。