RBAC模型设计
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RBAC模型设计相关的知识,希望对你有一定的参考价值。
参考技术A 一、什么是RBAC模型RBAC(Role-Based Access Control)即:基于角色的权限控制。通过角色关联用户,角色关联权限的方式间接赋予用户权限。
二、RBAC模型的分类
RBAC模型可以分为:RBAC0、RBAC1、RBAC2、RBAC3 四种。
1、RBAC0模型
最简单的用户、角色、权限模型。这里面又包含了2种:
用户和角色是多对一关系,即:一个用户只充当一种角色,一种角色可以有多个用户担当。
用户和角色是多对多关系,即:一个用户可同时充当多种角色,一种角色可以有多个用户担当。
2、RBAC1模型
相对于RBAC0模型,增加了子角色,引入了继承概念,即子角色可以继承父角色的所有权限。
3、RBAC2模型
基于RBAC0模型,增加了对角色的一些限制:角色互斥、基数约束、先决条件角色等。
角色互斥: 同一用户不能分配到一组互斥角色集合中的多个角色,互斥角色是指权限互相制约的两个角色。案例:财务系统中一个用户不能同时被指派给会计角色和审计员角色。
基数约束: 一个角色被分配的用户数量受限,它指的是有多少用户能拥有这个角色。例如:一个角色专门为公司CEO创建的,那这个角色的数量是有限的。
先决条件角色: 指要想获得较高的权限,要首先拥有低一级的权限。例如:先有副总经理权限,才能有总经理权限。
运行时互斥: 例如,允许一个用户具有两个角色的成员资格,但在运行中不可同时激活这两个角色。
4、RBAC3模型
称为统一模型,它包含了RBAC1和RBAC2,利用传递性,也把RBAC0包括在内,综合了RBAC0、RBAC1和RBAC2的所有特点。
三、 什么是权限
1、页面权限:
所有系统都是由一个个的页面组成,页面再组成模块,用户是否能看到这个页面的菜单、是否能进入这个页面就称为页面权限。
如下图:
客户列表、客户黑名单、客户审批页面组成了客户管理这个模块。对于普通用户,不能进行审批操作,即无客户审批页面权限,在他的账号登录后侧边导航栏只显示客户列表、客户黑名单两个菜单。
2、操作权限 :
用户凡是在操作系统中的任何动作、交互都是操作权限,如增删改查等。
3、数据权限:
一般业务管理系统,都有数据私密性的要求:哪些人可以看到哪些数据,不可以看到哪些数据。
简单举个例子:某系统中有销售部门,销售专员负责推销商品,销售主管负责管理销售专员日常工作,经理负责组织管理销售主管作业。
如下图:
按照实际理解,‘销售专员张三’登录时,只能看到自己负责的数据;销售主管2登录时,能看到他所领导的所有业务员负责的数据,但看不到其他团队业务员负责的数据。
要实现数据权限有多种方式:
1. 可以利用RBAC1模型,通过角色分级来实现。
2. 在‘用户-角色-权限’的基础上,增加用户与组织的关联关系,用组织决定用户的数据权限。
具体如何做呢?
① 组织层级划分:
②数据可视权限规则制定:
上级组织只能看到下级组织员工负责的数据,而不能看到其他平级组织及其下级组织的员工数据等。
简单设计一个RBAC权限权限模型
RBAC权限模型
RBAC的基本思想是,对系统操作的各种权限不是直接授予具体的用户,而是在用户集 合与权限集合之间建立一个角色集合。每一种角色对应一组相应的权限。一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限。这样做的好处是,不必在每次创建用户时都进行分配权限的操作,只要分配用户相应的角色即可,而且角色的权限变更比用户的权限变更要少得多,这样将简化用户的权限管理,减少系统的开销。
RBAC模型中的权限是由模块和行为合并在一起而产生的,在MySQL中,有模块表(tb_module〉和行为表(tb_action),这两张表的记录合并在一起就行程了权限记录,保存在权限表(tb_permission〉中。
到目前为止,JSON类型已经支持索引机制,所以我们不用担心存放在JSON字段中的数据检索速度慢了。MySQL为JSON类型配备了很多函数,我们可以很方便的读写JSON字段中的数据。
接下来我们看看角色是怎么关联到用户的,其实我在用户表(tb_user)上面设置role字段,类型依旧是JSON的。这样我就可以把多个角色关联到某个用户身上了。
以上是关于RBAC模型设计的主要内容,如果未能解决你的问题,请参考以下文章