基于RBAC的用户权限管理的研究与实现
2013-04-29刘晓玲郭龙
刘晓玲 郭龙
摘要:隨着计算机网络信息技术的不断发展,用户权限管理已经成为一个日益突出的问题。该文针对基于传统的RBAC模型在权限管理中存在的一些不足,分析了目前用户权限管理结构的设计,并以学校办公自动化管理系统中的用户权限设计为例,给出了一种基于角色的用户权限管理的新权限管理方法的设计与实现,实践证明此方法在办公自动化管理系统的适用性、可操作性及安全性等方面都有很大提高。
关键词:RBAC;用户权限;安全;模块
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)07-1487-04
随着计算机和网络技术的发展及应用的日益普及,全球正在向大数据道路上发展,尤其是近年来数字信息化技术的飞速发展,信息数据量也呈爆炸性增长态势。在这种态势的影响下,企业、政府、教育机构等各行各业越来越注重办公自动化系统的应用。然而办公自动化系统的应用为工作带来信息资源共享等各种便利的同时也带来了种种的安全隐患,所以必须要加强系统的用户权限管理机制,既要充分保证合法用户在权限范围内访问系统,又要阻止非法用户的入侵确保系统安全。
网络为信息的传播、交换和共享提供了快捷有效的方法,但是由于B/S(Browser/Server)模式具有分布性的特点,用户工作界面主要是通过浏览器来实现的。在B/S模式下,每个客户端都只需安装浏览器,通过浏览器来访问数据库服务器中的数据,如果缺少有效地用户权限检测机制,B/S 系统中就会面临非法访问的危险,存在严重的安全隐患。因此,B/S模式下必须建立一个或多个用户权限检测系统,以实现合法用户的正常权限授权功能,同时将非法入侵者拒之门外。该文基于角色的访问控制模型-RBAC的基本思想,设计出一种新的用户权限检测控制方法,实践证明此方法在办公自动化管理系统的适用性、可操作性及安全性等方面都有很大提高。
1 RBAC模型概述
基于角色管理权限的思想早在70年代就已经出现,但是第一个RBAC(Role-Based Access Control)模型是美国国家标准化和技术委员会(National Institute of Standards and Technology, NIST)的Ferraiolo和Kuhn在1992年提出的[1]。
角色代表了访问主体所具有的职权和责任,系统管理员负责将访问许可权分配给一定的角色,每个用户可以扮演不同的角色,这样就使得每一个用户都能够获得所扮演角色所拥有的访问许可权。例如,学校中有辅导员、教师、学生及各种管理职员等角色,教师角色具有上传成绩、评价学生,查询成绩等权限,学生角色具有查询成绩、自我评价、反馈意见等权限。在实际应用中,通常一个角色会拥有多个访问许可权限同时也可以由多个用户来扮演,同一个权限可以授权给多个角色,一个用户也可以扮演多个角色,如一个用户同时扮演教师和教务管理人员两个角色。RBAC模型中,角色是其核心,它从控制主体的角度出发,由系统管理员依据管理中相对稳定的职权和责任对角色进行划分,将访问权限与角色紧密联系,一旦用户被指定扮演某个角色,那么该用户就可以完成该角色所拥有的全部职能[2]。
图1描述了RBAC模型的基本框架,RBAC模型将整个系统的访问控制分两步实现:第一步首先对角色进行分配,将用户与角色联系起来,通过角色将用户与访问权限从逻辑上分离开;然后指定权限,将角色与访问权限联系起来[3]。
图1 RBAC模型基本框架
2 用户权限控制子系统的设计与实现
2.1 用户权限设计方案
通过上面对RBAC模型特点的分析可以看出,系统为了实现广泛的适用性、良好的可伸缩性及较高的安全性,必须从新的角度审视用户权限问题。一种思路是将系统中的所有功能权限与用户独立进行设置,这样设计的优点是对于每个用户,系统管理员都可以分别进行设置,使其可以拥有系统功能模块的细微权限。同时,这种设计在第一次使用系统时又存在很大的缺陷,它需要对所有的用户进行权限设置,这是一项大量的、不必要的重复性工作。
本文基于角色的访问控制模型-RBAC的基本框架,设计出一种新的用户权限检测控制方法,利用了直接授权和间接授权两种方式对用户权限进行管理控制。直接授权方法直接将系统中具体的功能权限赋予指定用户,例如将成绩录入权限定义为独立的功能模块或功能按钮,授权给扮演教师角色的某用户;间接授权法只对用户分配某个特定的角色,而不直接授予权限。由于角色即是权限的集合,它代表了访问主体所具有的职权和责任,所以用户根据其职能和责任被授权后,即可享有相应角色所拥有的所有权限。
在实际应用中,由系统管理员对具有不同职能和责任的用户进行判断、分类,构造出各类角色,将直接授权法与间接授权法结合使用,对于不同的角色赋予完成特定职责的权限,然后再将角色分配给不同的用户。如果需要进一步区分细化具有相同角色的用户权限时,再通过直接授权法授给用户具体的权限[4]。
2.2 系统结构
本系统采用了三层B/S结构模型,如图2所示。在三层B/S结构中,客户端不需要其他任何组件,只需安装浏览器,系统所需的所有数据库、应用程序以及其他组件都在服务器端存储。客户端浏览器向Web应用服务器发送用户信息,Web应用服务器利用应用程序服务器向数据库服务器提出请求,数据库服务器再根据请求响应并将处理结果返回给Web应用服务器,最后Web应用服务器将结果传送给浏览器。B/S结构中,由于所有数据、程序的创建、存储、管理、维护及备份等操作都是在服务器端进行,所以充分保证了数据的及时性和完整性[5]。
本系统在Eclipse开发环境下设计实现,采用了目前比较流行的Web应用开发技术J2EE作为前台开发工具,Web应用服务器采用的是开源的Tomcat 5. 0,后台数据库服务器的支撑采用的是Microsoft SQL Server 2005。
2.3 数据库设计
数据访问层组件提供了数据与存储在底层存储介质中的数据库或其他数据服务程序之间实现高效、安全地传递功能,所以数据访问层的设计是数据库设计中的重要环节。数据访问层中设计使用JDBC组件对SQL Server 2005数据库进行了专门的优化,例如自动管理连接池,最大提高性能以减少活动的连接数量等。在进行数据访问层设计时需要考虑访问的数据源,每个数据源的连接、访问方式,相关的设计模式等问题。为了最大限度地提高系统效率和安全性能,本系统设计在数据访问层中采用存储过程来处理数据、优化查询。如果在程序中使用SQL语句处理数据,那么对SQL语句做任何的修改,都需要重新对程序进行编译,利用存储过程则避免了这项工作。另外,由于系统可以针对存储过程中的语句对数据库执行优化处理操作,所以使用存储过程能够提供比直接使用SQL语句更高的性能。在安全性方面,存储过程同样能够为系统提供额外的安全保障,非常重要的一点就是系统设计时只将必须执行的存储过程权限分配给登录數据库的用户,访问者并不是直接从数据库中直接获取数据而是通过从存储过程来获得数据的,所以即使应用程序受到SQL脚本的入侵攻击,入侵者对系统的破坏也非常有限,从而保护了数据库中的数据免受破坏或偷窃,同时也保证合法用户对数据源的正常访问。
依据RBAC模型的基本思想并结合实际功能需求分析,为了支撑以上给出的基于角色的用户权限管理子系统,数据库设计一共创建了六个基本表,表名及功能分别如下。
1)模块功能表
模块功能表(Modules)定义了系统的功能实体及栏目,包含模块ID、模块名称等7个字段,表1描述了Modules的表结构。
其中Operations字段存储的是模块页面上要进行管理的按钮连接字符串。对于用户权限控制一般只涉及添加、修改、删除等操作,如添加用户、删除角色、权限修改等,所以本系统利用数字字符表示各个功能按钮的作用,如1代表添加(用户、权限、角色),2代表修改(用户、权限、角色),3代表删除(用户、权限、角色)等。功能模块的所有按钮连接字符串都用‘, 分隔,例如在某模块页面上包含添加、删除权限管理按钮,则该模块对应的Operations字段值为“1, 3”。
[名称\&功能描述\&Login Action. Java\&提供用户登陆服务,根据输入的用户名和密码判断该用户是否为合法用户,同时存储用户的登录信息。\&Modules Form. Java\&将模块功能表中的字段转化为实例对象。\&Modules Dao. Java\&通过Find Tree(int Users ID)方法调用Authority存储过程,遍历符合登录用户权限的模块功能菜单。\&Authority Action. Java\&通过加载Login Action. Java以获取登录用户的Users ID,再调用Modules Dao. Java中的Find Tree(int Users ID)方法对指定用户进行权限分配。\&Login Out Action. Java\&用于记录用户的系统注销日志。\&]
2.5 用户权限管理的实现
在本系统中,用户的权限管理采用的是两级授权模式,用户登录时,系统首先根据输入的登录信息来判断是否为合法用户。为了提高安全性能,系统使用MD5算法对用户密码进行了加密。如果系统确认登录者是合法用户,下一步再对用户所扮演的角色进行判断,如果用户角色表(表6)中Roles ID字段值不为空,就需要查询角色权限表(表5),最终对系统中的每个模块功能的权限按查询记录进行设置,最终实现不同用户登录同一系统,由于授予的权限不同,进入不同的操作界面。
3 结束语
本文基于角色访问控制模型的基本思想,设计并实现了办公自动化系统中用户权限管理子系统。与其它类型的权限管理系统比较而言,该系统主要具有两大特点:一是本系统将直接授权和间接授权两种授权模式相结合,模块页面上的每一个按钮都能够对应具体的用户权限,从而使系统具有较高的灵活性和可扩展性;二是本系统采用的是目前比较流行的Web应用开发技术J2EE,并利用Struts框架实现了B/S三层结构,使得系统在安全性和可移植性等方面的性能都有很大的提高。
参考文献:
[1] David F. Ferraiolo and D. Richard Kuhn, Role-Based Access Controls[C].15th National Computer Security Conference (1992) Baltimore, 1992:554-563.
[2] 王延彬,许林英,杨海琛. OA系统中基于角色的用户权限管理[J].微处理机, 2008, 8(4): 64-67.
[3] 倪东英,张晓丽.基于RBAC的用户权限管理的设计与实现[J].济南大学学报:自然科学版, 2010,24(2): 167-171.
[4] 王春泉.基于J2EE的用户权限管理的研究与实现[J].山东轻工业学院学报, 2010(8): 60-63.
[5] 杨振宇,耿玉水,王新刚.基于B /S模式可复用的用户权限管理的设计与实现[J].计算机应用与软件, 2007,24(6): 123-125.
[6] RayLai. J2EE平台Web Services[M].周斌,刘亚萍,冯艳玲,等,译. 北京:电子工业出版社, 2006.