基于角色管理(RBAC)的权限系统
这里的权限系统要区分2个概念:
粗粒度:表示类(model)别级,即仅考虑对象的类别(the type of object),不考虑对象的某个特定的实例。比如,对合同这个类别(contract)的管理中,创建、删除等操作,对所有的用户都一视同仁,并不区分具体的对象实例(销售合同,生产合同)。
细粒度:表示实例(instance)级别,即需要考虑具体对象的实例(the instance of object),当然,细粒度是在考虑粗粒度的对象类别之后才再考虑特定实例。比如,销售合同管理中,合同所有者拥有查看、修改、删除等权限,其他用户只有合同的查看权限。
权限系统的设计原则:权限逻辑配合业务逻辑。即权限系统以为业务逻辑提供服务为目标。
细粒度的权限问题因为其业务相关性而不具通用意义,它们被理解为是“业务逻辑”的一部分。比如,要求:“某个合同只能被它的创建者删除,与创建者同组的用户可以修改,所有的用户能够浏览”。这既是一个细粒度的权限问题,也是一个业务逻辑问题。在这里它是业务逻辑问题,在整个权限系统的架构设计之中不予考虑。当然,权限系统的构架设计也必须要能支持这样的业务逻辑。或者说,系统提供足够多但不是完全的控制能力。即,设计原则归结为:“系统只提供粗粒度的权限,细粒度的权限被认为是业务逻辑的职责”。
权限逻辑 ßà 粗粒度
业务逻辑 ßà 细粒度
概念:
Object: 指系统中各种功能模块,业务模型(Model),业务对象(Object),界面元素等,它是主体能访问到的所有对象。由于对象的类型不同,被访问的权限也不同。
(1) 系统功能模块:系统中除了公用的界面,公用的模块外,其他均为业务功能模块,业务操作在设计阶段完成,因此不存在实例的概念。可以直接针对角色进行授权。
(2) 界面元素:除了功能菜单受到控制外,如要控制功能模块的界面元素其功能模块界面元素也需定义,大部分界面元素均包含有相关的业务功能操作,因此可以与数据模型统一来处理。
(3) 业务模型,业务对象:业务模型是我们的Domain Model,开发人员在设计开发阶段就已经定义好了相关的业务操作,也就是相应的权限。 业务对象是我们业务模型的实例化Domain Object。是用户在系统运行时创建的,因此它的权限也是用户在系统运行时创建的。
粗粒度
|
|
细粒度
|
|
Domain Model
|
业务模型,比如合同(Contract Model)
|
Domain Object
|
业务模型的某个实例话对象,比如销售合同(Sell Contract Object)
|
Privilege(Operative, Permission) : 是Object Related的操作。就是指,这个权限是绑定在特定的对象上的。比如说部门新闻的发布权限,叫做"部门新闻发布权限"。这就表明,该Privilege是一个发布权限,而且是针对部门新闻这种资源的一种发布权限。权限,包括系统定义权限和用户自定义权限,用户自定义权限之间可以指定排斥和包含关系(如:读取,修改,管理三个权限,管理 权限 包含 前两种权限)。
Role: 是权限的集合,是粗粒度和细粒度(业务逻辑)的接口。一个基于粗粒度控制的权限框架软件,对外的接口应该是Role,具体业务实现可以直接继承或拓展丰富Role的内容,Role不是如同User或Group的具体实体,它是接口概念,抽象的通称。Role的继承通过Group来体现,所以不考虑Role的继承关系。但是Role可以与相关的Group相关联,便于授权。
Group: 用户组,权限分配的单位与载体,直接映射组织关系。权限不考虑分配给特定的用户。组可以包括组(以实现权限的继承)。组可以包含用户,组内用户继承组的权限。Group要实现继承。即在创建时必须要指定该Group的Parent是什么Group。在粗粒度控制上,可以认为,只要某用户直接或者间接的属于某个Group那么它就具备这个Group的所有操作许可。细粒度控制上,在业务逻辑的判断中,User仅应关注其直接属于的Group,用来判断是否“同组” 。
但是Group的继承导致的权限继承和组织关系正好相反,组织关系的上层相应的权限更大,所以是一种逆向继承。
User: 纯粹的用户,与权限(operative?permission?privilege)分离,只能通过Role去关联相应的权限。
关系:
Privilege ß n : 1 à Resource
Role ß n : n à Privilege
Group ß n : n à User
Group ß n : n à Role
User ß n : n à Role
<oval id="_x0000_s1029" style="LEFT: 7997px; WIDTH: 1563px; POSITION: absolute; TOP: 11539px; HEIGHT: 846px"></oval><textbox></textbox><shapetype id="_x0000_t93" coordsize="21600,21600" o:spt="93" path="m@0,l@0@1,3375@1,3375@2@0@2@0,21600,21600,10800xem1350@1l1350@2,2700@2,2700@1xem0@1l0@2,675@2,675@1xe" adj="16200,5400"></shapetype><stroke joinstyle="miter"></stroke>
<formulas>
</formulas>
<f eqn="val #0"></f><f eqn="val #1"></f><f eqn="sum height 0 #1"></f><f eqn="sum 10800 0 #1"></f><f eqn="sum width 0 #0"></f><f eqn="prod @4 @3 10800"></f><f eqn="sum width 0 @5"></f>
<handles></handles><h position="#0,#1" xrange="3375,21600" yrange="0,10800"></h><shape id="_x0000_s1030" style="LEFT: 4240px; WIDTH: 1096px; POSITION: absolute; TOP: 11675px; HEIGHT: 667px" type="#_x0000_t93"></shape><shape id="_x0000_s1031" style="LEFT: 6901px; WIDTH: 1096px; POSITION: absolute; TOP: 11675px; HEIGHT: 667px" type="#_x0000_t93"></shape><oval id="_x0000_s1032" style="LEFT: 2362px; WIDTH: 1878px; POSITION: absolute; TOP: 11267px; HEIGHT: 1359px"></oval><textbox></textbox><oval id="_x0000_s1033" style="LEFT: 2988px; WIDTH: 783px; POSITION: absolute; TOP: 11946px; HEIGHT: 506px"></oval><textbox></textbox>
权限系统的操作模式:
(1): 创造资源,权限: 这里要从粗,细粒度2方面来考虑
粗粒度:开发人员设计DomainModel的时候就定义好相关的操作。比如ContractModel
这个DomainModel,开发人员设计的时候就已经定义好了模型的相关操作,比如查看,修改等等。默认的情况下对所有的Role都是相同的。
细粒度: 用户创建一个DomainModel的实例DomainObject的时候指定相关的权
限以及权限分配。比如销售合同只能创建者有修改的权限,同Group的人员只能拥有查看的权限。
(2): 分配权限: Administrator指定相关DomainModel的权限分配,创建Role,创建Group,给
Group分配User,给Group赋予某个Role等等。
(3): 使用权限: User 使用 Administrator分配的角色去使用相应的系统功能。
<shape id="_x0000_i1026" style="WIDTH: 414.75pt; HEIGHT: 341.25pt" type="#_x0000_t75"></shape><imagedata o:title="权限系统2" src="file:///C:\DOCUME~1\ibm\LOCALS~1\Temp\msohtml1\01\clip_image002.jpg"></imagedata>
模块划分:
1) 对象管理模块。此模块主要负责从粗细粒度对于系统中可提供的资源或资源实例进行管理。
2) 权限管理模块。此模块主要负责对资源权限进行管理。管理员可以在粗细粒度下对资源权限进行管理。用户可以对创建的资源实例进行权限的管理。
3) 角色管理模块。此模块主要负责对角色进行相应的管理(包括添加、删除、修改);对角色所拥有的权限进行相应的管理(包括授予、删除所拥有的权限);对用户和组赋予相应的角色等等
4) 用户管理模块。此模块主要负责对用户进行管理(包括添加、删除、修改);对用户所属的角色进行管理(包括添加、删除);对用户所属的组进行管理。
5) 组管理模块。组映射组织机构,提供对于部门组织机构维护(添加、修改、删除);对组的成员进行维护;对组所拥有的角色进行管理。
来源:http://blog.csdn.net/vividboy/archive/2006/03/02/613596.aspx
分享到:
相关推荐
这是一个RBAC权限管理系统,即基于角色的用户权限控制,,使用springboot框架开发,UI使用的是layui。。 演示地址:http://116.196.66.248:8090/page/index 欢迎大家下载。。。。另外,建议使用IDEA导入项目。。
基于SpringBoot+Vue 前后端分离的RBAC权限管理系统(源码+数据库) ## 项目介绍 **一个基于SpringBoot + Vue + Element UI 开发的权限管理系统** - 角色权限精确到菜单、接口访问 - 前后端通过jwt进行认证状态管理...
基于rbac模型的权限管理系统,角色,权限,用户等的权限分配
同时本文介绍了基于角色的访问控制理论RBAC 的基本概念,在此基础上设计并实现了一个权限管理系统。实践表明,该设计使业务逻辑与访问控制逻辑分开,解决了传统的权限管理系统中代码重复、分散、混乱的问题,具有...
RBAC(基于角色的存取控制)作为对传统的自主(DAC)和强制存取控制(MAC)的替代方案,近来有了长足的发展.在一些最早的存取控制系统中,人们用角色来分隔安全管理和系统管理.随着计算机技术的发展,人们赋予角色一种新的...
基于角色的权限管理系统(RBAC),采用Springboot开发。系统简单易懂,前端使用Vuejs、Quasarframework开发,页面简洁美观
项目概述:本项目管理系统基于流行的Python Flask框架,实现了一套完整的RBAC(基于角色的访问控制)...简而言之,这是一个集成了多技术栈的Flask项目,专注于为用户提供一个功能全面、易于管理的RBAC权限管理系统。
本资源是基于RBAC权限管理模型思想实现的完整JAVA代码,有数据库脚本,对于基于RBAC思想的开发具有很好的启发与帮助作用。
针对基于角色的访问控制(RBAC)模型在模拟复杂组织结构和权限继承关系方面的不足,提出了基于角色扩展的RBAC模型——MR-RBAC。该模型在角色集和权限集之间引入了最小角色集,并形式化定义了模型的基本集合和相关...
基于RBAC的权限管理组件的设计与实现 RBAC基于角色的权限管理
基于RBAC的B/S管理信息系统权限管理的研究与应用,柯敏,杨春金,在B/S模式中,管理信息系统的权限管理由于实际需求的复杂性,传统的基于RBAC(角色访问控制)的权限管理方式已不能满足实际的需要��
项目概述:本源码为基于角色基础访问控制(RBAC)模型的中小型应用开发平台,采用前后端分离架构。后端基于Python的Django框架和Django REST Framework实现,前端则使用Vue.js配合ElementUI进行构建。移动端支持通过...
在线预览 ... 生成数据表并迁移 python manage.py makemigrations python manage.py migrate 创建管理员账户 python manage.py ...导出系统相关配置信息,包含角色,部门,菜单等配置 python manage.py dump_init_json
完全响应式权限管理系统,包括用户管理、角色管理,权限管理等功能,适合javaweb开发者入门学习,也可直接用于项目,省去重复开发权限管理模块,提高开发效率,项目使用主流技术如下: 服务端: Spring4.3.0....
该项目主要展示 RBAC 的权限控制效果,并提供员工管理模块以供测试。用户登录系统后,根据用户所关联的角色,查询角色拥有的权限,如:菜单权限、按钮权限。不同角色的用户,所显示的菜单可能也不尽相同。 系统...
本项目基于Spring,整合Spring的security模块,实现用户管理和权限控制,是一套较为通用的权限控制功能,主要内容如下: 1.登录,包括“记住我”的功能; 2.加密,存储的密码不采用明文,初始密码1234; 3.拦截器...
java基于RBAC的中小学生成绩管理系统源码。在学校成绩管理系统中,用户包括学生、教师,管理人员,有学生、教师和管理人员三大角色,教师角色又可细化普通教师和具有管理职能教师,如班主任、年级主任、教务人员等,...
项目简介:本项目是一款基于Python的Flask框架与光年后台结合开发的RBAC(基于角色的访问控制)权限管理系统。该系统由258个文件组成,其中包含的主要编程语言为Python,同时融合了JavaScript、HTML、CSS等语言,以...
这是一款基于SpringBoot+SpringSecurity的RBAC权限管理系统。原本只想着做成基于SpringSecurity的权限管理系统,但随着功能的增加感觉有些刹不住车了,之后可能会往后台管理系统方向发展。无任何重度依赖,非常适合...
这个是我在项目中实现的一个基于角色的权限管理系统;实现RBAC0级权限模型;绝对是精品代码; 欢迎交流;qq:158751041