乐在其中

以JEE为主攻,以Flex为点缀,以Eclipse RCP为乐趣
请访问http://www.inframesh.org

首页 新随笔 联系 管理
  43 Posts :: 0 Stories :: 8 Comments :: 0 Trackbacks
 

 

      摘 要  权限管理是网络信息系统中一个非常重要的部分。该文提出基于职务的用户权限控制方法,并介绍了基于此方法的MIS系统数据库设计和系统实现算法。
      关键字  MIS系统; 权限控制; 职务; 权限集。
1引言
      权限控制是管理信息系统(Management Information Systems, MIS)中一个重要的组成部分。在B/S模式下,由于系统的用户数目不固定,以及机构变动、人员调整可能比较频繁,并且系统向着多应用方向发展,因此给系统安全机制提出了更高的要求。如何给用户提供一个安全的操作环境是系统设计者要解决的一个关键问题[1-4]。因而需要采用新的用户权限控制方式来实现系统资源的安全访问问题。
2基于职务的用户权限控制
      访问权限控制决定了一个用户或程序是否有权对某一特定资源执行某种操作,传统的权限控制是通过将访问权限直接和用户对应起来的方式实现的。随着网络的普及,用户可访问的信息资源的结构日趋复杂,规模也日益增大,如果继续使用这种传统的访问权限控制机制,将使得系统对信息的存取权限的管理变得十分复杂和繁重。虽然有学者曾提出基于角色的访问控制机制,以及角色层次和约束的概念来解决这个问题[1],但此机制也存在不足之处。首先,它在权限控制中针对每一个操作权限集都建立一个角色。一方面,对于很多人拥有的相同权限集建立一个角色,将给系统权限分配和管理带来了很大的方便。另一方面,对于某些只有个别用户使用的权限集合,如果也都建立角色,这将增加权限管理的负担。其次,在这种机制下,只有系统管理员和功能模块管理员可以管理用户和角色以及分配事宜,对于系统权限复杂多样并且用户很多的网络信息系统,权限管理工作过于集中,管理员的工作量很大;并且在应用于企业时,由于企业的组织机构复杂,这种权限管理模式只能进行横向的功能模块管理,不能进行纵向的部门管理,管理方式不够灵活。
      针对基于角色的访问控制机制的不足,本文提出对其改进的基于职务的用户权限控制机制。系统中的职务源于企业的实际工作岗位,例如,系统中将职务设置为“一般员工”、“部门领导”等等,比角色更加贴近于系统用户的实际工作状况。在权限控制机制中,一个职务就代表了工作中处理某些事务的权利。在权限管理中,一个职务可以看成是一组权限的集合。一个职务可以拥有多项权限,一个权限可以分配给多个职务;另外,一个用户可以被赋予多个职务,一个职务也可以被赋予多个用户。职务作为中间桥梁将用户和权限联系起来。系统权限管理员则根据需要定义各种职务,给每个职务分配相应的权限;用户则根据其实际工作岗位和责任被指派不同的职务。
2.1 特殊权限集
      首先引入特殊权限集的概念。特殊权限集是只有个别用户使用的权限集合,是针对个别用户的职务设置的系统操作权限集。在给用户分配特殊权限集时,管理员只需要针对用户的某个职务分配特殊权限。用户登陆系统后,系统将提取用户的职务信息,先查用户的某个职务是否具有特殊权限集,如果有,就直接提取特殊权限集,否则提取这个职务的操作权限集。取消用户的特殊权限集时,管理员只需要取消用户的相应职务的特殊权限集;用户再次登陆时,系统提取的就是用户的相应职务的操作权限集。这种建立特殊权限集的方法比基于角色的访问控制机制中新建角色、把角色分配给用户、之后再删除角色的处理过程要简单方便很多。因此,特殊权限集的设置,对于基于角色的访问控制机制来说,是必要的改进。
      基于职务的用户权限控制模型结构图如图1所示。
2.2 横向与纵向结合的权限管理
      在基于职务的用户权限控制系统中,不但有横向的功能模块分块权限管理,也有用户操作权限的纵向分配管理。不仅仅只有系统管理员和功能模块管理员可以管理用户和职务以及分配事宜,系统中用户管理和职务管理是相互独立的。具有用户管理的管理员可以在系统中新增和删除用户以及修改用户信息,但是管理员的用户管理权限是限制在组织机构的某一级别的某一个部门;具有职务管理的管理员也可以对职务进行新增修改删除操作,他的职务管理权限也是限制在组织机构的某一级别的某一个部门。分配权限在系统中是一个操作权限,具有分配权限的用户,都可以分配权限。不过,每一个具有分配权限的用户的分配权限都受到限制:他只能够把自己在系统中的操作权限分配给别的用户,自己操作权限之外的,不能分配。这种横向与纵向管理相结合的权限管理方法,比文献[1]提出的仅有横向的功能模块权限管理,以及文献[2]提出的权限分级管理方法要灵活很多。
用户分配权限的过程如图2所示。
       分配操作权限时,操作权限将按照系统的功能模块分组。给职务分配权限时,如果这个职务拥有某一个功能模块的所有操作权限,就可以直接选择这个功能模块的操作权限组,从而这个职务就具有了这个功能模块的所有操作权限。这样就不必将功能模块中的每一个操作权限都选一次,节省了操作,简化了权限分配。当然,也可以按照职务需求选择某一功能模块操作权限组中的某一个操作权限。
 
2.3 用户访问控制
      一个系统用户可以通过他具有的职务对应的操作权限来判断他可以访问的系统资源和对该资源可进行的操作。在用户进人系统后,系统只显示那些用户有权访问的功能菜单以及菜单中用户有权操作的功能按钮,将那些用户不具有访问权限的功能菜单以及用户有权访问的功能菜单中用户无操作权限的功能按钮设置为对该用户不可见。这样用户在进人系统后只能看到他拥有访问权限的那些功能菜单以及菜单中用户有权操作的功能按钮。
基于职务的用户权限控制在企业应用中具有很大的优势:
      (1) 将企业各部门的职务映射到网络信息系统组织机构中的职务,非常直观,易于应用;
      (2) 一旦职务的权限初始设置好之后,就不再需要做大的调整。因为权限是直接与职务相对应,而不是用户。即使是系统用户的人员调动频繁,但是工作岗位本身却是很少变化的。由于权限控制是基于职务,而不是基于用户的,所以企业人员的调动并不会太多的影响到权限控制机制;
      (3) 特殊权限的设置为用户的临时工作需要提供了很大的方便。比如用户被委托担任某部门的资料管理员一段时间,那么该部门系统管理员只需要给这个用户的职务分配部门资料管理员等特殊权限,用户就能够对该部门的资料进行管理;在用户完成工作之后,该部门系统管理员只需要取消该用户的职务的特殊权限,该用户就没有了管理部门资料的权限;
      (4) 横向与纵向相结合的权限管理方式,既明确的对各个功能模块进行了权限分快管理,也可以很方便的把用户管理、职务管理、权限分配事宜的工作分到各个部门,并且有分配权限的用户只能把自己的操作权限分配给别人、操作权限之外的不能分配的系统限制保证了不会权限扩大化。
 
3 基于职务的用户权限控制机制的系统数据库设计
     数据库的字段及其数据类型设计如表1至表5所示:
表1 记录了组织机构的所有部门信息,包括部门之间上下级关系。
表1   部门表 APPARTMENT
字段名称
数据类型
备注
APPART_ID
VARCHAR2
唯一关键字,部门编号
APPART_SPR_ID
VARCHAR2
上级部门编号
APPART_NAME
VARCHAR2
部门名称
表2记录了各个部门的人员基本信息,其中用户名字段是作为系统用户登录时用的,是唯一字段。
表2   职工表 PERSON
字段名称
数据类型
备注
APPART_ID
VARCHAR2
职工所在部门编号
PERSON_ID
VARCHAR2
职工唯一编号
PERSON_NAME
VARCHAR2
姓名
USER_ID
VARCHAR2
用户名
USER_PSW
VARCHAR2
密码
 
表3记录了系统中所有操作权限,系统中操作权限具体到每一个需要控制的功能菜单和按钮。作为操作权限,功能菜单也可以看作按钮,在按钮表中统一管理。其中是否默认操作字段记录了系统的功能菜单或者按钮是否是默认操作,默认操作即系统用户都可以访问和操作。
表3  按钮权限表 BUTTON_ACCESS
字段名称
数据类型
备注
BUTTON_ID
NUMBER
唯一关键字,菜单按钮编号
BUTTON_NAME
VARCHAR2
菜单按钮名称
ACCESS_DEFAULT
NUMBER
是否为默认操作   1是0非
表4 记录了系统用户的职务信息,一个职工可以同时在几个部门担任职务,并且在不同部门有不同的操作权限。其中ACCESS_STR字段是表3中的一系列BUTTON_ID用逗号连接起来组成的字符串,它记录了用户所任职务的特殊权限集。
表4   职工职务表 PERSON_DUTY
字段名称
数据类型
备注
PERSON_ID
VARCHAR2
职工编号
APPART_ID
VARCHAR2
职工所任职务的部门编号
DUTY_ID
NUMBER
职工所任职务的编号
ACCESS_STR
VARCHAR2
特殊权限集
表5 记录了组织机构各个部门的所有职务信息,其中ACCESS_STR字段记录了各个职务的操作权限集。当表4中某条记录的ACCESS_STR字段为空时,则根据DUTY_ID联合查询表5的ACCESS_STR字段,获得用户所任职务的操作权限集。如果表5某条记录的ACCESS_STR字段为空时,就要提取表3中的默认操作权限。
表5   职务表 DUTY
字段名称
数据类型
备注
APPART_ID
VARCHAR2
部门编号
DUTY_ID
NUMBER
部门中的职务编号
DUTY_NAME
VARCHAR2
职务名称
ACCESS_STR
VARCHAR2
职务的操作权限集
      系统对每一个需要加以权限控制的系统功能菜单和按钮都作了编号,并把这些按钮信息存储在表3中,其中ACCESS_DEFAULT (是否默认操作)字段为1代表了所有系统用户都可访问和操作该功能菜单或按钮。
      要提取某登陆用户的权限时,先要在PERSON_DUTY表中查找该用户对应的职工编号的职务记录,他有可能在多个部门任职,所以他在不同部门的操作权限有可能不一样,即他在不同部门的职务所对应的ACCESS_STR字段值不同。如果用户在某部门的所有职务的ACCESS_STR字段值不为空,则取这些权限的总和作为该用户在该部门中的操作权限;如果用户在某部门的某些职务的ACCESS_STR字段为空值,则根据DUTY_ID联合查询DUTY表,查找该职务的操作权限集,取得的权限集的总和再与之前在PERSON_DUTY表中提取的特殊权限集取并集,所得权限集就是该用户在该部门的全部操作权限;如果用户在某部门的职务都没有被分配权限,则需要提取BUTTON_ACCESS表中的默认操作权限作为用户在该部门的权限。
      PERSON_DUTY表中ACCESS_STR字段的值是赋给单独某个用户的,所以如果想增加或限制该用户的权限,可以加入或减去该用户的特殊权限集,即该用户所有可操作的功能菜单或按钮的编号集合。而DUTY表中ACCESS_STR字段值不是针对某个用户,而是针对某个职务的,如果企业内部有人员调动或者某个职工被撤消了某职务,则DUTY表中这个ACCESS_STR字段值还是存在的,不同的只是该职工没有了该职务,该职务对应的操作权限集他也不再拥有。这就实现了用户和职务的双重管理。
4系统实现
     在用户登陆时,首先验证该用户在系统中身份,即用户名和用户密码,然后根据用户唯一的职工编号取得他有权访问的系统功能菜单和按钮的操作权限编号集。取得用户操作权限集算法流程描述如下:
    ⑴ 取得用户在PERSON_DUTY表中的特殊权限集。
    ⑵ 当在PERSON_DUTY中特殊权限集为空时,提取DUTY表中用户担任的职务的操作权限编号集。
    ⑶ 如果职务操作权限集为空,则提取BUTTON_ACCESS表中的默认操作权限。
    ⑷ 返回权限信息总和。
在系统的组织机构模块,组织机构树形结构只显示用户有权访问的部门。用户进入组织机构模块时,系统根据用户的职工编号取得该用户有权访问的部门以及在此部门的操作权限编号集,并将这些信息以字符串的形式记录:“部门编号1:权限编号集1;部门编号2:权限编号集2;……部门编号m:权限编号集m“。
      当用户选择其中一个部门,系统就记录下来该部门编号,提取该部门的信息以及用户在该部门的操作权限编号集,然后根据权限编号集显示该部门的功能菜单和按钮。
实现控制部门菜单显示的算法函数如下(JavaScript语言编写):
function showmenu() {//注释:菜单定位在用户选择的部门
menu.style.visibility = "visible";//注释:显示菜单
var appart_id = document.all.appart_id.value; //注释:取得用户选择的部门编号
var access_str = document.all.access_str.value; //注释:取得权限信息
var appart_access = access_str.split(";");//注释:将各个部门的信息分开
for(var i=0; i<appart_access.length; i++){
var str = appart_access[i].split(":");//注释:将部门与该部门的权限编号集分开
    if(str[0] == appart_id){//注释:部门编号和用户选择的部门编号相同
var access = str[1].split(",");
      for(var j=0; j<access.length; j++ ){ 
if(access[j]=="1")//注释:1为某部门菜单中某个按钮的编号
menu_btn.style.display = "block";//注释:显示该按钮
          ……
}
}
}
}
      这样,用户登陆后,如果在不同部门的操作权限不一样,则系统显示的部门菜单按钮也不相同。这样用户就只能够访问和操作组织机构各个部门中该用户有权访问的功能菜单和按钮。
这种权限控制方法,使得用户有权访问的功能菜单和按钮都显示在系统中并且可操作,用户无权访问的系统功能菜单或按钮对用户不可见,反过来系统中所有显示的功能菜单和按钮用户都能够访问和操作。这就实现了用户的访问权限控制。
5结束语
      本文所提出的基于职务的用户权限控制模型以及模型实现中提出的算法可以有效地控制用户对系统资源的访问权限,从而防止了对系统资源的非法访问,实现了网络信息系统在B/S模式下系统资源的用户访问权限控制。本系统提出的权限控制机制和算法已经被应用于两个项目的开发中,并得到了良好的运行效果。
 
 
参考文献:
[1] 林磊,骆建彬,邓宪,宋志刚. 管理信息系统中基于角色的权限控制[J]. 计算机应用研究,2002,P82-84.
[2] 申宝成,光艳良,夏桂梅. 加强数据库应用安全的权限分级方法及应用[J]. 太原重型机械学院学报,2002,2(23).
[3] 陈军,伍天玉,曾志浩,陈治平. 基于权限冲突的扩展权限管理方法[J].长沙电力学院学报,2005,1(20).
[4] 宋光明,高俊,易善勇. 用户登录权限分配的模型与算法实现[J]. 计算机工程,2002,7(28).

[信隆论文网:http://www.xllw.cn 联系方式:1、QQ:180347747;QQ客户超级群:51835511、QQ客户高级群:78483171、QQ编辑平台高级群:78490570; 2、MSN:xllw8@hotmail.com;3、电话:020-61131496;4、手机:15915860696(只支持短信);投稿邮箱:6826298@163.com]

收藏 推荐 打印 | 录入:admin | 阅读:295
相关新闻      
 
posted on 2009-01-12 18:28 suprasoft Inc,. 阅读(872) 评论(0)  编辑  收藏 所属分类: Misc.

只有注册用户登录后才能发表评论。


网站导航:
 
©2005-2008 Suprasoft Inc., All right reserved.