RBAC模型之实践

Posted 零售云技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RBAC模型之实践相关的知识,希望对你有一定的参考价值。

我们在做每个系统或产品时都会涉及到权限问题。在我们项目中运用到各种权限模型,那么今天以演进的思路去讲解下RBAC模型。

在讲RBAC模型之前我们了解下传统权限模型。

一个用户可以有一个或多个权限。虽然属于传统模型,现在系统中依然在使用,使用场景:

申请开店后需要在OA系统中审核开店信息,具有审核开店权限的运营人员直接登录自己的OA系统就能看到待审核的开店信息。

如果OA系统的功能非常多,一个用户要添加非常多的权限时,对传统权限模型会造成工作量非常大,那么我们就会引入RBAC模型。

RBAC模型是什么

RBAC(Role-Based Access Control )基于角色的访问控制。

在20世纪90年代期间,大量的专家学者和专门研究单位对RBAC的概念进行了深入研究,先后提出了许多类型的RBAC模型,其中以美国George Mason大学信息安全技术实验室(LIST)提出的RBAC96模型最具有系统性,得到普遍的公认。

在RBAC中,根据权限的复杂程度,又可分为RBAC0、RBAC1、RBAC2、RBAC3。

基本模型RBAC0


RBAC模型之实践

角色可以理解把权限进行分组,一个用户有一个或多个角色,也可以理解一个用户有一个或多个权限组。

应用场景:我在负责的APP中,一个用户可以拥有多个权限,每个用户都赋予多个权限不太现实,自引入角色后大大减轻配置工作。把权限分成老板角色、店长角色、财务角色、营业员角色等。一个角色具有一个或多个权限。

引入角色组RBAC1

在RBAC0为基础上,引入角色组的概念,就变成以下模型称RBAC1模型。


通过上一个场景,经过需求不断演变,当一家店人非常少,一个用户即可以当老板也可以当店长,即可以当库管又可以是财务。于是遇到这种情况一个用户要配置多个角色,非常复杂。采用此模型(RBAC1)对角色进行分组,当用户赋予角色组即可完成复杂操作。

通过以上还可以演进RBAC,引入用户组


使用场景: 根据用户组织划分,一个组织拥有一个或多个角色。如会员店、加盟店直接对店铺级别赋予角色

引入角色限制RBAC2

同时在RBAC0为基础上,引入对角色的限制条件,限制条件如下

 1.互斥角色

 2.优先级角色

使用场景:一个用户拥有营业员角色,不能拥有收银员角色。一个营业员要想当店长,需要经历采购和库管才能升为店长。

统一模型RBAC3

RBAC3是RBAC1和RBAC2的合集,所以RBAC3既有角色组,也包括可以增加各种限制。

统一模型RBAC3可以解决上面三个例子的所有问题。当然,只有在系统对权限要求非常复杂时,才考虑使用此权限模型。


以上是关于RBAC模型之实践的主要内容,如果未能解决你的问题,请参考以下文章

权限管理之RBAC模型

基于 RBAC 模型的 RESTful API 设计

基于RBAC权限控制模型的管理系统的设计与实现

基于RBAC权限控制模型的管理系统的设计与实现

RBAC从入门到精通

[Linux之权限管理⽤户组管理]