打印

[asp.net教程] 基于rbac原理的访问控制系统研究

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

(西南交通大学信息科学与技术学院,成都 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("<script>top.window.location='../pgtimeout.aspx';</script>");//无权限跳转页面
   
  }
   
  ………..
   
  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.

TOP

返回顶部
AYBlue

Processed in 0.042644 second(s), 7 queries.

当前时区 GMT+8, 现在时间是 2008-11-22 16:09 京ICP备06054220号

清除 Cookies - 联系我们 - 163K.com - Archiver - WAP