RBAC(Role-Based AccessControl,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。
与ACL实现的区别在于,不能直接为用户分配权限,只能从角色那里继承而来。
RBAC权限模型
在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。(如下图)
角色是什么?可以理解为一定数量的权限的集合,权限的载体。例如:一个论坛系统,“超级管理员”、“版主”都是角色。版主可管理版内的帖子、可管理版内的用户等,这些是权限。要给某个用户授予这些权限,不需要直接将权限授予用户,可将“版主”这个角色赋予该用户。
引入用户分组
当用户的数量非常大时,要给系统每个用户逐一授权(授角色),是件非常烦琐的事情。这时,就需要给用户分组,每个用户组内有多个用户。除了可给用户授权外,还可以给用户组授权。这样一来,用户拥有的所有权限,就是用户个人拥有的权限与该用户所在用户组拥有的权限之和。(下图为用户组、用户与角色三者的关联关系)
引入资源模型
在应用系统中,权限表现成什么?对功能模块的操作,对上传文件的删改,菜单的访问,甚至页面上某个按钮、某个图片的可见性控制,都可属于权限的范畴。有些权限设计,会把功能操作作为一类,而把文件、菜单、页面元素等作为另一类,这样构成“用户-角色-权限-资源”的授权模型。而在做数据表建模时,可把功能操作和资源统一管理,也就是都直接与权限表进行关联,这样可能更具便捷性和易扩展性。(见下图)
请留意权限表中有一列“权限类型”,我们根据它的取值来区分是哪一类权限,如“MENU”表示菜单的访问权限、“OPERATION”表示功能模块的操作权限、“FILE”表示文件的修改权限、“ELEMENT”表示页面元素的可见性控制等。
这样设计的好处有二。其一,不需要区分哪些是权限操作,哪些是资源,(实际上,有时候也不好区分,如菜单,把它理解为资源呢还是功能模块权限呢?)。其二,方便扩展,当系统要对新的东西进行权限控制时,我只需要建立一个新的关联表“权限XX关联表”,并确定这类权限的权限类型字符串。
这里要注意的是,权限表与权限菜单关联表、权限菜单关联表与菜单表都是一对一的关系。(文件、页面权限点、功能操作等同理)。也就是每添加一个菜单,就得同时往这三个表中各插入一条记录。这样,可以不需要权限菜单关联表,让权限表与菜单表直接关联,此时,须在权限表中新增一列用来保存菜单的ID,权限表通过“权限类型”和这个ID来区分是种类型下的哪条记录。
基于RBAC权限模型的扩展模型完整视图
到这里,RBAC权限模型的扩展模型的完整设计图如下:
随着系统的日益庞大,为了方便管理,可引入角色组对角色进行分类管理,跟用户组不同,角色组不参与授权。例如:某电网系统的权限管理模块中,角色就是挂在区局下,而区局在这里可当作角色组,它不参于权限分配。另外,为方便上面各主表自身的管理与查找,可采用树型结构,如菜单树、功能树等,当然这些可不需要参于权限分配。
以上,是从基本的RBAC模型进行了扩展,具体的设计要根据项目业务的需要作调整。
参考http://www.cnblogs.com/zwq194/archive/2011/03/07/1974821.html
分享到:
相关推荐
对基于角色的访问控制(RBAC)模型进行了延伸和拓展,提出了一种细粒度权限控制的改进模型FG-RBAC,并在此模型基础上设计开发了一套能为企业信息系统(EIS)开发者和用户提供更简单、更实用、更快速的数据级权限管理...
一个通用的权限管理模型的设计方案,基于RBAC模型
本源码为基于SpringBoot和SpringSecurity的RBAC后台权限管理系统设计,共包含535个文件,其中js文件151个,java文件96个,gif图片76张,css文件66个,html文件52个,PNG图片22张,map文件14个,xml文件13个,svg文件...
.NET 权限管理模块设计参考 作者原话在项目开发中,往往需要涉及到权限模型的问题,现在比较流行的设计方案是RBAC3模型,为了使权限系统更加通用,减少开发人员在项目开发过程中的重复劳动,介绍一个比较通用的权限...
本文提出了在企业 PKI和目录服务的基础上 ,使用 X.5 0 9证书和属性证书实现 RBAC的方案 ,分析了单纯使用 X.5 0 9证书实现 RBAC所面临的安全性和灵活性问题 ,设计了一种组合式属性证书 ,并提出了角色赋予、权限赋予和...
深度定制Spring Security真正实现了基于RBAC , jwt和oauth2的无状态统一权限认证的解决方案 提供应用管理,方便第三方系统接入,支持多租户(应用隔离) 帖子组件化的思想实现高内聚低取代和高度可配置化 重点法规...
基于springboot+mybatis+shiro+vue的前后端分离汽车租赁管理系统,适合个人开发学习,毕业设计,课程设计等,项目经过测试,可完美运行! 功能模块包含以下几部分: 用户管理 角色管理 权限菜单管理 汽车管理 订单...
一种基于角色的权限管理方案的设计与实现,王菁梅,徐国爱,本文对访问控制进行了简述,并对基于角色的权限控制(Role-Based Access Control,RBAC)的基本思想和基本模型进行了介绍,进而给出了一种�
本论文介绍了开发背景,开发平台,并基于需求分析实现了教务管理平台中基于角色控制的权限系统(RBAC)及公共模块的设计与开发。RBAC实现了用户与访问权限的逻辑分离,更符合教务平台的用户、数据和应用特征;在公共...
在大型信息系统的设计中,访问控制一直是一项复杂的工作。...RBACCCS中用了参数化权限,在权限检查时用上下文变量实例化这些参数化权限,这样就解决了上下文的表示和上下文作用机制问题。最后对RBACCCS模型进行
介绍了基于角色的访问控制模型,阐述了用户、角色、... NET MVC下基于RBAC权限认证提出了一种实用可行的解决方案。该方案引入了角色的概念,实现了用户与权限的逻辑分离,以便适应大多数应用系统对用户访问控制的需求。
本论文介绍了开发背景,开发平台,并基于需求分析实现了教务管理平台中基于角色控制的权限系统(RBAC)及公共模块的设计与开发。RBAC实现了用户与访问权限的逻辑分离,更符合教务平台的用户、数据和应用特征;在公共...
8、RBAC权限设计方案| 9、刷脸登录解决方案| 10、自定义代码生成器| 11、Activiti工作流开发| 涵盖知识点: 1.结合Activiti7工作流引擎的应用教程。 2.基于Shiro+Redis的分布式session解决方案。 3.可...
基于RBAC的权限访问控制设计 RBAC是指基于角色的访问控制,本篇主要描述了ThinkPHP的RBAC设计思想和使用实例,给出了一个统一和方便的权限控制解决方案
⾓⾊权限设计⽅案 RBAC(Role-Based Access Control,基于⾓⾊的访问控制),就是⽤户通过⾓⾊与权限进⾏关联。简单地说,⼀个⽤户拥有若⼲⾓⾊,每⼀个⾓⾊拥有若⼲权限。这样, 就构造成"⽤户-⾓⾊-权限"的授权...
真正实现了基于RBAC、jwt和oauth2的无状态统一权限认证的解决方案,面向互联网设计同时适合B端和C端用户,支持CI/CD多环境部署,积分商城,分销商城并提供应用管理方便第三方系统接入;同时还集合各种微服务治理功能...
然后基于 RBAC 权限模型,设计了一种基于角色的可定制访问控制权限模型以满足服装设计协作对于二十五个协作内容的各种操作权限控制需求。最后采用 Java技术、 Spring Cloud 框架、Docker 容器和 Rancher 容器管理...
本论文介绍了开发背景,开发平台,并基于需求分析实现了教务管理平台中基于角色控制的权限系统(RBAC)及公共模块的设计与开发。RBAC实现了用户与访问权限的逻辑分离,更符合教务平台的用户、数据和应用特征;在公共...
youlai-boot 是【有来开源组织】基于Spring Boot 3 + Spring Security 6 + JWT + Mybatis-Plus + Redis + XXL-Job + Vue3 等主流技术栈搭建的前后...3. 基于 RBAC 模型的权限设计,细粒度接口方法、按钮级别权限控制。
随着电子商务和电子政务在我国的发展,网络日益显示...简要介绍了PMI的功能及其基本构架,详细论述了一种应用于网络的基于角色访问的PMI权限系统RBAC/Web系统的设计方案,并对RBAC/Web系统的安全性进行了进一步的分析。