一、RBAC基础知识
1、RBAC的组成:
1:由3个基础的部分组成:用户、角色和权限;
2:RBAC通过定义角色的权限,并对用户授予某个角色从而来控制用户的权限,实现了用户和权限的逻辑分离,极大的方便了权限管理。(比如:班主任是个角色,而班主任的权限就是管理班级内所有大大小小的事物;我是李四,我被校领导批准当五年级3班班主任。这样李四的权限就是管理五年级3班所有的事情)
名词解释:
用户:每个用户都有唯一的uid,并被授予不同的角色;
角色:不同的角色有不同的权限;
权限:访问权限;
用户--角色的映射:用户和角色之间的映射关系;
角色--权限的映射: 角色和权限的映射关系;
2、RBAC支持的安全原则
RBAC支持三个著名的安全原则:最小权限原则、责任分离原则和数据抽象原则;
1、最小权限原则:RBAC可以通过限制分配给角色权限的大小和多少来实现,分配给某用户对应的角色的权限只要不超过该用户完成其任务的需求;
2、责任分离原则:可以通过调用相互独立互斥的角色来共同完成敏感的任务;
3、数据抽象原则:可以通过权限的抽象来提现
3、RBAC的优缺点
优点:1、简化了用户和权限的关系 ;
2、易扩展、易维护;
缺点:1、RBAC模型没有提供操作顺序的控制机制,这一缺陷使得RBAC模型很难适应哪些对操作次序有严格要求的系统
4、权限模型(直白点说……就是RBAC的分类)
1:RBAC0 ----基础,在这个模型中,我们把权限赋予角色,再把角色赋予用户。用户和角色,角色和权限都是多对多的关系。用户拥有的权限等于他所有角色持有的权限之和。
如图:
2:RBAC1----在RBAC0的基础上,在角色中引入了继承的概念。简单来说,就是给角色 分成了几个等级,每个等级权限不同,从而实现更细粒度的权限管理。
举例:一个公司除了有销售经理还有销售副经理,那其实销售副经理只有销售经理的部分权限。那我们就可以采用RBAC1的模型,把销售经理这个角色分成多个等级。
3:RBAC2 ---对用户、角色、权限三者之间增加了一些限制;
举例:给一个用户分配了销售经理的角色,就不能再给他分配财务经理的角色,否则他即可以录入合同又可以自己审核合同;
4:RBAC3 = RBAC1 + RBAC2:特别复杂的场景才会用到此模型;
5、基于RBAC的扩展------用户组
用户组的概念可以更方便的给群体用户授权,且不影响用户本来就有的角色权限
增加用户组的概念,直接给用户组分配角色,再把用户加入到用户组,这样用户除了有自己的权限外,还有了用户组的权限;
例如:我是属于公司技术部的,那就把技术部看成一个用户组,我除了自己的权限外还有技术部的权限;
二、如何设计RBAC
权限可以分为数据权限和功能权限两大块
数据权限其实就是一个账号能查看多少数据,如何实现A账号和B账号之间不能相互查看业务数据,这就是数据权限
功能权限按照范围可以分为菜单权限和按钮权限;按照操作可以分为查看和编辑权限
1、RBAC功能模块
2、RBAC执行流程
3、RBAC数据库设计