繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> Asp.Net开发 >> 基于RBAC原理的访问控制系统研究

基于RBAC原理的访问控制系统研究

2007-10-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:(西南交通大学信息科学与技术学院,成都 610031) 关键词:RBAC,访问控制。 摘 要:本文描述了一个基于RBAC的访问控制系统的设计和实现。并根据项目的实际的需要对RBAC0模型进行了一定的修改。 A RBAC-based a...

(西南交通大学信息科学与技术学院,成都 610031)

关键词:RBAC,访问控制。

摘 要:本文描述了一个基于RBAC的访问控制系统的设计和实现。并根据项目的实际的需要对RBAC0模型进行了一定的修改。

A RBAC-based access control system Research

Chen Xiao Yun, Li Ze Liang

(School of Information Science &Technology of Southwest JiaoTong University, ChenDu 610031)

Key words: RBAC, Access Control.

Abstract: This paper presents a design and implementation of a RBAC-based privilege control system. It modified the RBAC0 according to the requirement of the project also.

1 前言

RBAC(Role-Based Access Control)是近年来在信息安全领域访问控制方面的研究热点和重点。

基于角色的访问控制RBAC作为一种灵活和直观的访问控制技术在20世纪90年代迅速发展起来,RBAC通过引入角色的新概念来实施访问控制策略。不同的角色和它所应具有的权限许可互相联系,用户作为某些角色的成员,获得角色所拥有的权限。角色可以根据实际的单位或组织的不同工作职能和权限来划分,依据用户所承担的不同权利和义务来授权相应的角色,对于一个存在大量用户和权限的权限分配系统来说,从用户到角色的管理,简化了权限分配的复杂性,提高了安全管理的效率和质量。

本文结合RBAC的基本原理和一个具体项目的中门户系统的要求结合起来,在实现灵活度和复杂度上进行了一定的权衡,给出了一个基于.NET技术的具体实现,完成的门户系统有一定的灵活性和复用性。

企业环境中的访问控制策略一般有三种:自主型访问控制方法、强制型访问控制方法和基于角色的访问控制方法(RBAC)。其中,自主式太弱,强制式太强,二者工作量大,不便于管理[1]。基于角色的访问控制方法是目前

收稿日期:2007.01.06

作者简介:陈小云,1977.4,男,04级硕士研究生。

联系方式:81783951,Email:xiaoyunchen_cn@tom.com

公认的解决大型企业的统一资源访问控制的有效方法。其显著的两大特征是:1.减小授权管理的复杂性,降低管理开销;2.灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性。

NIST(The National Institute of Standards and Technology,美国国家标准与技术研究院)标准RBAC模型由4个部件模型组成,这4个部件模型分别是基本模型RBAC0(Core RBAC)、角色分级模型RBAC1(Hierarchal RBAC)、角色限制模型RBAC2(Constraint RBAC)和统一模型RBAC3(Combines RBAC)[1]。RBAC0模型如图1所示。

图1 RBAC0模型

RBAC0定义了能构成一个RBAC控制系统的最小的元素集合。在RBAC之中,包含用户users(USERS)、角色roles(ROLES)、目标objects(OBS)、操作operations(OPS)、许可权permissions(PRMS)五个基本数据元素,权限被赋予角色,而不是用户,当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的权限。会话sessions是用户与激活的角色集合之间的映射。RBAC0与传统访问控制的差别在于增加一层间接性带来了灵活性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展。

3 需求分析和设计思路

该项目是一个运输公司的业务管理系统,由于该公司的组织机构比较复杂,人员众多,由于分工的不同要求用户进入系统所能使用的功能是不同的,如果要对每个用户都设定相应的权限,其工作量和配置的复杂度是很大的,所以考虑笔者考虑RBAC0模型使权限配置更方便,该公司按职位的分工较明确,因此把职位作为一个角色单位,但由于该公司目前的管理还不是很规范,有时候会出现同样一个角色(职位)的员工,访问系统的权限是不一样的(大于或小于角色所拥有的权限),考虑到这样的实际需求,笔者对RBAC0作了一定的修改,以便能更好的满足这一需求,修改后模型如图2:

图2 修改后的RBAC0

该模型增加了附加权限许可和限制许可表示,相当于给一些特殊用户添加了用户到许可的直接配置通道,通过它可以灵活的配置该类用户的许可(即权限),满足项目需求。

为更好的描述该设计,现在假设角色的对应权限集合为PR,附加许可表示对应的权限集合为PA,限制许可表示对应的权限集合为PL,用户访问系统的应有权限PF。

则用户访问系统的权限,其角色对应的权限加附加许可表示对应的权限,再减去限制许

可表示中对应的权限。用集合公式表示为:

4 数据库结构设计

根据上面的设计思路,笔者通过基本表的形式表示各个实体即用户表、职位表、部门表和权限表,通过关系表来储存各个实体之间的关系即用户-部门关系表、用户-职位-部门关系表、权限-角色关系表、用户-附加权限关系表和用户-限制权限关系表。通过这些表加上一定的SQL查询可以实现上面所论述的集合运算。同时在基本表和关系表之间,利用数据库的接连删除和修改功能,保证数据库的正确性和一致性,比如删除一个用户,其在各关系表中接连的记录也将被删除。数据库设计见图3。

图3 数据库表设计

5 系统实现

本系统基于ASP.NET技术实现,具体实现方式为,当用户通过了身份验证后,通过用户的ID,从数据库中查询出用户所应具有的所有权限ID,再把它写入一个Session中,用户登录系统后,各模块(这里是ASP页面)在初使化时,根据Session中的值判断用户是否有进入该模块(ASP页面),如没有则跳转到错误页面。 在这里有些复杂的是用户登录时的权限的查找,笔者通过写了一个复杂的SQL语句实现了这一功能,该SQL主要是通过接连把多个数据表的查询结果联合在一起,从而得到登录用户应得的权限。现给出权限判定的代码如下:

ArrayList

arrPrivilege= ((ArrayList)(Session["privilege"]));

if (arrPrivilege != null)

{ if (!arrPgPrivilege.Contains("XXID")) //其中XXID为该页面对应的权限 {

Response.Write("");//无权限跳转页面

}

………..

6 结束语

本文根据项目的实际需要,在RBAC基本原理的基础上,对RBAC0其进行了一定的修改,在实际应用中取得了良好的效果,事实证明在利用各成熟模型时,可以根据实际需要进行必要的修改。

参考文献:

[1] 段云所(著).信息安全概论.北京:高等教育出版社. ISBN:704012314,2003: 119-120.

[2] 孙大大.基于RBAC的分布式服务两级访问控制.计算机工程与应用, 2006;26:123-125.

[3] 吴浪.RBAC在基于Web信息系统中实现的一种技术方案.怀化学院学报,2006;05:42-44.

[4] 夏榆滨.基于RBAC的统一权限管理系统研究.微计算机信息,2006;22(9-3):114-146.

责任编辑:admin
相关文章