(十二)权限之RBAC

这几天一直在研究权限,突然发现RBAC是权限中的基础,所以花儿点时间详细解释一下。

在这里加一些个人理解吧。在实际开发中,不同的用户登录后显示不同的菜单、按钮之类的,这些无外乎就是权限实现的,在这里可以用RBAC就可以实现,但是为什么还要用shrio或者 Spring Security这些东东呢,刚接触的时候我也一知半解的,但是可以这样理解的,框架是高大上的,你虽然使用rbac实现了菜单的权限控制,但是你直接使用其url还是可以访问的呀,这时候你用一些高大上的东西,比如shiro或者 Spring Security这个,就可以拦截你没有权限的那些url不允许直接被访问了,原理类似拦截器。所有权限的基础还是RBAC,究竟什么是RBAC呢,下面为大家更为详细的介绍一下。

百度百科关于RBAC的解释:

基于角色的访问控制(RBAC)是实施面向企业安全策略的一种有效的访问控制方式。

其基本思想是,对系统操作的各种权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个角色集合。每一种角色对应一组相应的权限。一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限。这样做的好处是,不必在每次创建用户时都进行分配权限的操作,只要分配用户相应的角色即可,而且角色的权限变更比用户的权限变更要少得多,这样将简化用户的权限管理,减少系统的开销。

RBAC:

个人理解为实际上就是对于权限这块的表结构的设计,设计之初遵循了RBAC的原则,但是根据不同的实际业务,对于RBAC的表结构设计也会有些许的出入,这里不要太过纠结。RBAC是一种模型,是一种思想,是一种核心思想,但是就其思想而言,不是要你完全参照,而是你在这个基础之上,融入你自己的思想,赋予你的业务之上,达到适用你的业务。

总之:不要让框框架架来限制你的业务,也不要让你的业务局限于框框架架。但是也不推荐你去改动框框架架,而是基于框框架架做业务封装。

RBAC简介

RBAC是Role Based Access Control的缩写,意思是基于角色访问控制。

RBAC实际上就是针对产品去发掘需求的时候所用到的Who(角色)、What(拥有什么资源)、How(有哪些操作)的一种方式。

在RBAC模型中,who、what、how构成了访问权限三元组,也就是“Who对What进行How的操作。

RBAC主要包含四个子模型:RBAC0、RBAC1、RBAC2和RBAC3,整体又叫做RBAC96。

RBAC0

RBAC0是RBAC96模型家族中的基础,也被称作核心部分,RBAC1、RBAC2和RBAC3就是在此基础之上发展演变过来的。

可以理解它是由四个部分组成的,分别有:用户、角色、会话、权限
这就导致了这种分配关系是多对多:用户对应多个角色、角色对应多个权限。
用户与会话一对一,会话与角色一对多

RBAC1

RBAC1是在RBAC0模型基础之上增加了角色分层概念和角色之间的继承关系。

角色分层指的是同一个角色可以用不同等级,不同等级又对应着不同的权限;
角色继承关系指的是子角色可以对父角色的权限进行继承,但是子角色的权限一定小于父角色。

RBAC2

RBAC2是在RBAC0模型基础之上增加了角色约束,主要约束哪些操作是可进行,哪些是不可进行。

主要约束有以下三个方面:

  • 角色互斥约束:是指在系统运行中,只可以同时激活运行时互斥角色集合中的一个角色;
  • 角色基数约束:是限制某一个用户最多被分配或者激活的角色数目,或者限制某一个角色最多被赋予的权限数目;
  • 先决条件角色约束:是指某些用户只有在己经拥有特定角色的前提下,才能被分配到某种角色,或者某种角色只有在已经被分配到特定权限的前提下,才能被赋予某些权限

RBAC3

RBAC3则是集聚了RBAC1和RBAC2的全部特点,同时将角色继承关系和约束条件关系两者都融入到模型中了。

原文地址:https://www.cnblogs.com/changyuyao/p/14167032.html