- 浏览: 240004 次
- 性别:
- 来自: 南京
最新评论
-
gonglil:
貌似不行呢?
java 字符串和二进制相互转换 -
robingdo:
这样关闭proxool连接池以后,项目没报那个错,但是数据库用 ...
Proxool连接池在reload web容器时出现HouseKeeper的空指针异常 -
xb12369:
ezfantasy 写道lord_is_layuping 写道 ...
Java忽略大小写替换和提取字符信息 -
ezfantasy:
lord_is_layuping 写道不区分大小写应该是(?i ...
Java忽略大小写替换和提取字符信息 -
狂盗一枝梅:
hex2byte函数功能是转换成十六进制吧?上面写的是转换成二 ...
java 转换图片为字符串,将字符串转换成图片显示
基于RBAC的权限管理系统的实现
昊光成,时云峰
(四川交通职业技术学院 计算机工程系 成都 610013)
0 引 言
在许多的实际应用中,不只是要求用户简单地进行注册登录,还要求不同类别的用户对资源有不同的操作权限。目前,权限管理系统也是重复开发率最高的模块之一。在企业中,不同的应用系统都拥有一套独立的权限管理系统。每套权限管理系统只满足自身系统的权限管理需要,无论在数据存储、权限访问和权限控制机制等方面都可能不一样,这种不一致性存在如下弊端:
(1)系统管理员需要维护多套权限管理系统,重复劳动;
(2)用户管理、组织机构等数据重复维护,数据一致性、完整性得不到保证;
(3)由于权限管理系统的设计不同,概念解释不同,采用的技术有差异,权限管理系统之间的集成存在问题,实现单点登录难度十分大,也给企业构建企业门户带来困难。
采用统一的安全管理设计思想,规范化设计和先进的技术架构体系,构建一个通用的、完善的、安全的、易于管理的、有良好的可移植性和扩展性的权限管理系统,使得权限管理系统真正成为权限控制的核心,在维护系统安全方面发挥重要的作用,是十分必要的。
本文介绍一种基于角色的访问控制RBAC(role-based policies access control)模型的权限管理系统的设计和实现,系统采用基于.NFT Framework 2.0架构技术实现,并讨论了应用系统如何进行权限的访问和控制。
1 RBAC的基本思想
企业环境中的访问控制策略一般有3种:自主型访问控制方法、强制型访问控制方法和基于危色的访问控制方法(RBAC)。其中,自主式太弱,强制式太强,二者工作最大,不便于管理。基于角色的访问控制方法是目前公认的解决大型企业的统一资源访问控制的有效方法。其最著的2大特征是:(1)减小授权管理的复杂性,降低管理开销;(2)灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性。
美国国家标准与技术研究院(the national institute of standards and technology,NIST)标准RBAC模型由4个部件模型组成,这4个部件模型分别是基本模型RBAC0(core RBAC)、角色分级模型RBAC1(hierarchal RBAC)、角色限制模型RBAC2(constraint RBAC)和统一模型RBAC3(combines RBAC)。RBAC0模型如图1所示。
(1)RBAC0定义了能构成一个RBAC控制系统的最小的元素集合。在RBAC之中,包含用户users(USERS)、角色 roles(ROLES)、目标objects(OBS)、操作operations(OPS)、许可权permissions(PRMS)五个基本数据元素,权限被赋予角色,而不是用户,当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的权限。会话sessions是用户与激活的角色集合之间的映射。RBAC0与传统访问控制的差别在于增加一层间接性带来了灵活性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展。
(2)RBAC1引入角色间的继承关系,角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系仅要求角色继承关系最一个绝对偏序关系,允许角色间的多继承。而受限继承关系则进一步要求角色继承关系是一个树结构。
(3)RBAC2 模型中添加了责任分离关系。RBAC2的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分离和动态责任分离。约束与用户-角色-权限关系一起决定了RBAC2模型中用户的访问许可。
(4)RBAC3包含了RBAC1和RBAC2,既提供了角色间的继承关系,又提供了责任分离关系。
事实上,RBAC认为权限授权实际上是Who、What、How的问题。在RBAC模型中,who、what、how构成了访问权限三元组,也就是"Who对What(Which)进行How的操作"。这点我们在后面的描述中来详细讨论。
2 采用.NET Framework 2.0架构设计
采用.NET Framework 2.0企业平台架构构建权限管理系统。NET Framework 2.0集成了先进的软件体系架构思想,具有采用多层分布式应用模型、基于组件并能重用组件、统一完全模型和灵活的事务处理控制等特点。而且在需要的时候,可以与Windows Server 2003的Active Directory进行无缝连接,直接通过Active Directory管理用户帐户。
系统逻辑上分为四层:表现层、业务层、数据访问层和数据层。
(1)表现层主要负责人机交互。可以使系统管理员通过Web浏览器访问。
(2)业务层提供业务服务,包括业务数据和业务逻辑,集中了系统业务处理。
(3)数据访问层主要负责数据的访问,如数据的增加、修改、删除和查找等。
(4)数据层主要负责数据的存储、组织和管理。数据层使用了 SQL Server 2000或SQL Server 2005来实现。
3 核心对象模型设计
根据RBAC模型的权限设计思想,建立权限管理系统的数据库模型,如图2所示。
根据RBAC模型的权限设计思想,建立权限管理系统的核心对象模型,如图3所示。
由于RBAC解决的就是Who、What、How的问题,通过图3来做一个详细的描述:
Who:权限的拥用者或主体(User、Group、Role、Actor)。
What:权限针对的对象或资源(Resource),资源具有层次关系和包含关系。例如,网页是资源,网页上的按钮、文本框等对象也是资源,是网页节点的子节点,如可以访问按钮,则必须能够访问页面。资源应该是一个树形结构。
How:具体的权限(Privilege,正向授权与负向授权),这个权限是绑定在特定的对象上的。比如说教师测评系统新闻的发布权限,叫做"部门新闻发布权限"。这就表明,该Privilege是一个发布权限,而且是针对部门新闻这种资源的一种发布权限。权限,包括系统定义权限和用户自定义权限,用户自定义权限之间可以指定排斥和包含关系(如:读取,修改,管理三个权限,管理权限包含前两种权限)。
Operator:操作。表明对What的How操作。也就是Privilege+Resource的集合;
Role:角色,一定数量的权限的集合,是粗粒度和细粒度(业务逻辑)的接口。一个基于粗粒度控制的权限框架软件,对外的接口应该是Role,具体业务实现可以直接继承或拓展丰富Role的内容,Role不是如同User或Group的具体实体,它是接口概念,抽象的通称。Role的继承通过Group来体现,所以不考虑Role的继承关系。但是Role可以与相关的Group相关联,便于授权。
Group:用户组,权限分配的单位与载体,直接映射组织关系。权限不考虑分配给特定的用户。组可以包括组(以实现权限的继承)。组可以包含用户,组内用户继承组的权限。 Group要实现继承。即在创建时必须要指定该Group的ParentGroup是什么Group。在粗粒度控制上,可以认为,只要某用户直接或者间接的属于某个Group那么它就具备这个Group的所有操作许可。细粒度控制上,在业务逻辑的判断中,User仅应关注其直接属于的Group,用来判断是否"同组"。
User:纯粹的用户,与权限分离,只能通过Role去关联相应的权限。
该模型中主要的关系有:分配资源操作RA(resource assignment)、分配角色权限PA(privi-lege assignment)、分配用户组角色GA(group as-signment)描述如下:
(1)分配资源访问RA:实现资源和操作之间的关联关系映射。
(2)分配角色权限PA:实现操作和角色之间的关联关系映射。
(3)分配用户组角色GA:实现用户组和角色之间的关联关系映射。 权限管理系统的操作模式主要分为以下3个步骤:
(1)创造资源、权限:用户创建一个资源(Re-source)的实例的时候指定相关的权限以及权限分配。比如学生测评只能创建者有修改的权限,同Group的人员只能拥有查看的权限。
(2)分配权限:系统管理员指定相关资源(Re-source)的权限分配,创建Role,创建Group,给Role分配权限,给Group分配User,给Group赋予某个Role等等。
(3)使用权限:User使用管理员分配的角色去使用相应的系统功能。
4 权限访问机制
权限管理系统服务器端:提供集中管理权限的服务,负责提供用户的鉴别、用户信息、用户组信息,以及权限关系表的计算,如图4所示。
系统根据用户、用户组、角色、操作、访问方式和资源对象之间的关联关系,同时考虑权限的正负向授予,计算出用户的最小权限。在业务逻辑层使用 SecuirtyManager.GetPower()方法实现此服务。采用代理Proxy模式,集中控制来自应用系统的所要访问的权限计算服务,并返回权限关系表,即二元组{ResouceId,OperationId}。
在表现层:可以通过访问能力表CL和访问控制表ACL两种可选的访问方式访问权限管理系统。以基于.NET Framework的教师测评系统为例,说明访问过程:
(1) 首先采用基于表单的验证。考虑到需要鉴别的实体是用户,采用基于ACL访问方式。用户登录时调用权限管理系统的用户鉴别服务,如果验证成功,调用权限计算服务,并返回权限关系表,以HashTable的方式存放到登录用户的全局Session中;如果没有全局的Session或者过期,则被导向到登录页面,重新获取权限。
(2)直接URL资源采用基于CL访问方式进行的访问控制。如果用户直接输入URL地址访问页面,有两种方法控制访问:1.通过权限标签读取CL进行控制;2.采取页面载人判断权限模式,进行权限控制,如果没有权限,则重定向到登录页面。
5 权限控制机制
由于应用系统的权限控制与特定的技术环境有关,以基于.NET Framework 2.0架构的教师测评系统为例来说明,系统主要的展示组件是aspx页面,采用标记和权限控制组件共同来实现。
(1)权限标识:利用页面标签来标识该页面上所有的权限访问控制对象。
(2)权限控制:应用系统用户登录系统时,从权限管理中获得权限关系表之后,一方面,权限标签控制页面展示;另一方面,利用权限控制组件在业务逻辑中进行相应的权限控制,尤其是和业务逻辑紧密联系的控制对象实例的权限控制。
6 权限数据存储机制
权限管理采用了关系型数据库SQL Server2000或SQL Server 2005用来存储用户信息、用户组信息、角色、操作、权限等信息。
7 结 论
本文论述了一种基于RBAC的权限管理系统的实现技术方案。该权限管理系统已成功应用于教师测评系统的设计和开发实践,与教师测评系统具有很好的集成。实践表明,采用基于RBAC模型的权限管理系统具有以下优势:由于角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,减小了授权管理的复杂性,降低管理开销;而且能够灵活地支持应用系统的安全策略,并对应用系统的变化有很大的伸缩性;在操作上,权限分配直观、容易理解,便于使用;分级权限适合分层的用户级形式;重用性强。
本文转自 http://design.eccn.com/d/20081209800920.html
发表评论
-
InnoDB 启动选项
2011-08-03 12:31 1063InnoDB 启动选项 为了 ... -
关于改变innodb_log_file_size后无法启动mysql的问题
2011-08-03 12:29 2275最近在看MYSQL优化的参数,改了innodb_log_fil ... -
larbin中URL的去重-Bloom Filter算法
2010-08-18 17:47 1977读larbin的源码曾经赞叹 ... -
从 Java 档案 (JAR) 中读取文件
2010-08-12 16:01 2051Java 档案 (Java Archive, JA ... -
Nginx+tomcat 配置
2010-08-04 15:36 5019本文原址连接:http://bbs.yahunet.com/t ... -
linux cronb定时执行java程序
2010-08-02 18:02 1788环境: RedHat Linux JDK5.0 ... -
用HttpClient来模拟浏览器GET POST
2010-05-26 17:42 988一般的情况下我们都是使用IE或者Navigator浏览器来访问 ... -
JDK API SUN官方下载地址
2010-04-01 11:19 2180http://download.java.net/jdk/jd ... -
Eclipse生成JavaDoc 文件编码解决
2010-02-27 17:04 2140Eclipse导出JavaDoc出现中文乱码解决方法: ... -
Proxool.xml配置文件详细配置说明
2010-02-04 17:58 1795fatal-sql-exception: 它是一 ... -
Java汉语转拼音
2010-01-29 13:59 1436pinyin4j 是Java汉语转拼音 开源框架: h ... -
64位Linux服务器上安装Tomcat
2010-01-21 16:43 3171tomcat 是32位的,安装后在64位环境中不能添加为系统服 ... -
解决web应用用户退出系统后浏览器后退问题
2010-01-13 22:20 46541. 解决用户退出系统后 ... -
response防止页面缓存和重设响应头部
2010-01-13 21:41 1503// 防止缓存 //Forces cache ... -
单元测试使用proxool连接池
2009-12-22 20:29 1479因为proxool连接池一般都是通过tomat web.xml ... -
response防止缓存和重设响应头部
2009-11-30 21:25 32// 防止缓存 response.setHeade ... -
一个奇怪的单例模式
2009-11-15 20:37 967public class Singleton { ... -
MyEclipse下开发邮件发送功能测试失败的原因及处理
2009-11-11 09:09 17341. Exception in thread "ma ... -
java 转换图片为字符串,将字符串转换成图片显示
2009-10-09 20:13 15353java 转换图片为字符串,将字符串转换成图片显示, ... -
java 字符串和二进制相互转换
2009-10-09 19:42 19872二进制转换成字符串: // 二进制转字符串 pub ...
相关推荐
基于RBAC(Role-Based Access Control,基于角色的访问控制)的权限管理系统是一种广泛采用的解决方案,它以角色为核心,实现了用户与权限的间接映射,提高了管理效率并降低了复杂性。下面将详细介绍RBAC模型及其在...
项目概述:本项目管理系统基于流行的Python Flask框架,实现了一套完整的RBAC(基于角色的访问控制)...简而言之,这是一个集成了多技术栈的Flask项目,专注于为用户提供一个功能全面、易于管理的RBAC权限管理系统。
【标签】"基于RBAC的权限管理系统"进一步强调了系统的实现方式。RBAC通常包括三个主要组件:角色(Role)、用户(User)和权限(Permission)。角色是权限的集合,用户通过关联角色来获取权限。此外,还有可能包含...
在IT行业中,权限管理系统是确保数据安全和操作合规性的重要组成部分。基于RBAC(Role-Based Access Control,基于角色的访问控制)的权限管理是一种广泛采用的策略,它将权限与角色关联,而不是直接分配给单个用户...
基于RBAC数据库模型下的权限管理系统 可实现用户、角色模块、角色、权限模块、权限的CRUD 实现登录的过滤和权限的拦截 使用技术 springboot、mybatis搭建后台 maven进行项目管理 redis实现缓存功能 前台...
基于SpringBoot+Vue 前后端分离的RBAC权限管理系统(源码+数据库) ## 项目介绍 **一个基于SpringBoot + Vue + Element UI 开发的权限管理系统** - 角色权限精确到菜单、接口访问 - 前后端通过jwt进行认证状态管理...
【资源说明】课程设计基于Vue3和Django实现的rbac权限管理系统python源码(含前端)+项目说明.zip在线预览[https://xadmin.dvcloud.xin/](https://xadmin.dvcloud.xin/)账号密码:admin/admin123生成数据表并迁移```...
【标题】基于vue-element-admin开发的CMS-RBAC权限管理系统后台前端源码 【解析】Vue-element-admin是一款基于Vue.js和Element-UI的后台管理界面模板,它为开发者提供了丰富的预设组件和功能,便于快速构建高效且易...
在IT行业中,权限管理是系统安全的关键组成部分,而基于RBAC(Role-Based Access Control,基于角色的访问控制)的权限管理模型是一种广泛应用的解决方案。RBAC模型通过将用户权限与角色关联,使得权限分配更加灵活...
【标题】"基于Django+vue3的rbac权限和数据权限管理系统" 是一个现代Web应用的实现,它结合了Python的Django框架与前端的Vue.js 3框架,用于构建一套完整的角色基础访问控制(Role-Based Access Control,RBAC)和...
"基于RBAC权限模型搭建的高效智能权限管理系统.pdf" 本文档介绍了基于RBAC权限模型搭建的高效智能权限管理系统,旨在确保系统信息的安全性。该系统主要包含用户信息表、角色表、权限表等模块,依托Web的计算算法,...
基于Django+Vue3的rbac权限管理系统源码.zip基于Django+Vue3的rbac权限管理系统源码.zip基于Django+Vue3的rbac权限管理系统源码.zip基于Django+Vue3的rbac权限管理系统源码.zip基于Django+Vue3的rbac权限管理系统...
本文将围绕“RBAC权限管理系统”展开,解析其核心概念、技术选型以及实现过程。 **RBAC(Role-Based Access Control)**,即基于角色的访问控制,是一种将用户权限与角色关联的权限管理模式。在RBAC中,用户通过...
项目概述:本源码为基于角色基础访问控制(RBAC)模型的中小型应用开发平台,采用前后端分离架构。...该平台为开发人员提供了一个具有完善权限控制的后台管理系统,支持快速开发具有复杂权限需求的中后台应用。
在IT行业中,权限管理系统是确保数据安全和操作合规性的重要组成部分。基于RBAC(Role-Based Access Control,基于角色的访问控制)的通用权限管理构件是一种广泛应用于企业级应用的解决方案,它通过角色来管理和...
基于RBAC(Role-Based Access Control,基于角色的访问控制)模型的权限管理系统是一种广泛采用的方法,它以角色为核心,实现了灵活、高效的权限分配机制。现在,让我们深入探讨这个话题。 首先,RBAC模型的核心...
项目简介:本项目是一款基于Python的Flask框架与光年后台结合开发的RBAC(基于角色的访问控制)权限管理系统。该系统由258个文件组成,其中包含的主要编程语言为Python,同时融合了JavaScript、HTML、CSS等语言,以...
总的来说,通过FastAPI和Vue3结合RBAC模型,我们可以实现一套完整的权限管理系统,既能保证后端接口的安全,又能灵活控制前端展示,确保不同角色的用户只能访问他们被授权的资源。这种方案在企业级应用中非常常见,...