Web应用系统中RBAC模型的研究与实现
2015-10-13黄秀文
黄秀文
Web应用系统中RBAC模型的研究与实现
黄秀文
(武汉纺织大学 信息技术中心,湖北 武汉 430074)
访问控制是Web系统中安全防范和保护的主要策略,传统的访问控制已不能满足日益增长的安全性需求。本文在web应用系统中,使用基于角色的访问控制(RBAC)模型,通过引入角色的概念,将用户映射为在一个组织中的某种角色,将访问权限授权给相应的角色,根据用户在组织内所处的角色进行访问授权与控制,从而提高了在web系统中权限分配和访问控制的灵活性与安全性。
Web系统;RABC;权限管理
随着信息管理系统朝着多用户、多应用的发展,用户可访问的数据资源结构越来越复杂,规模越来越大,各种信息系统都面临着如何对数据资源进行有效安全管理的难题。因此,资源的访问控制在大型信息系统的设计与开发中所占的地位日益重要。访问控制作为系统底层的技术,必须防止非法用户对系统的访问和满足不同用户对不同数据资源的需求。
基于角色的访问控制(Role-Based Access Control,RBAC)具有传统访问控制安全策略的部分特点,又符合现代企业的管理模式。RBAC借助于角色这个主体,把原来大量的用户抽象成角色,用户通过角色来访问数据资源。通过建立这种映射关系,基于角色的访问控制策略可以大大提高管理效率,减少授权管理的复杂工作,减少管理的开销,并且还能为管理员提供一个很好的管理安全的环境。
1 RBAC模型概述
RBAC模型是在20世纪70年代提出的,后来在Sandu等人的提倡和推动下得到了很大的发展。2001年8月美国国家技术与标准局(NIST)发表了RBAC建议标准。此建议标准综合了该领域众多研究者的共识,主要包括两个部分:第一部分是RBAC参考模型,它定义了RBAC的通用术语和模型构件并且界定了标准所讨论的RBAC领域范围;第二部分是功能规范,它定义了RBAC的管理操作,可以分为管理功能,系统支持功能,审查功能等三类。
RBAC参考模型由核心RBAC,层次型RBAC,约束型RBAC这3个模型组成。核心RBAC模型为基本模型,规定了RBAC系统所必须满足的最小要求,其结构模型如图1所示。
图1 核心RBAC结构模型
由上图可知,核心RBAC模型由用户(user)、角色(roles)、对象(objects)、操作(operations)、许可(permissions)等五个基本要素组成。
用户代表任何直接使用计算机系统的实体,通常指人,也可以是Agent等智能程序。
角色表示系统或者组织中某一特定任务的责任和权力,可以是一个抽象概念,也可以对应于实际系统中的特定语义体。角色的划分需要考虑安全策略以及组织内的岗位职责等因素。
操作是程序可执行的反映,被用户调用和执行。操作的类型取决于实现系统的类型。例如文件系统可能的操作有读、写、执行等。
对象表示资源(Resource)或目标,任何访问控制机制都是为了保护系统的资源。对象包括:文件、目录,数据库表、行、字段,磁盘空间,打印机,甚至CPU周期等。
许可是对在一个或多个对象上执行操作的权限。由操作和对象组成,表示对对象的一个操作。例如,对于新闻的修改操作。
会话在核心RBAC模型中是比较隐晦的一个元素。RBAC标准定义:每个会话是一个映射,一个用户到多个角色的映射。当一个用户激活他所有角色的一个子集时,建立一个会话。每个会话和单个用户关联,每个用户可以关联到一个或多个会话。当用户执行一段过程(Process)或一个动作(Action)时,将使用到相关的Role(所有Role的子集);这个过程就可以称为一个会话。
在RBAC模型中,核心概念是角色,角色在语义上被构造,用于访问控制策略管理。用户分配关系和权限分配关系,显示了RBAC模型中的两级授权的模式。一个用户可被分配一个或多个角色,同时一个角色也可被指定给一个或多个用户。一个角色可以被分配多个权限,同时一个权限也可以被指定给多个角色。通过角色作为桥梁,将用户和权限联系起来,用户具有其所属各个角色的访问权限之和。
2 web系统中的权限设计
2.1 系统功能模块设计
本文所设计的权限管理系统分为权限管理、访问控制、系统管理三个模块。功能模块图如图2所示。
图2 系统功能模块图
2.1.1 权限管理模块
权限管理模块提供统一的人员信息的维护和授权管理的功能。它分为用户管理、角色管理、菜单管理和按钮管理四个子功能模块。
(1)用户管理,该功能模块用于对系统用户的定义、维护和用户-角色的映射。包括用户定义、用户查询、用户角色配置、增加用户、删除用户和修改用户等功能。
(2)角色管理,该功能模块与应用系统的要求紧密结合在一起,根据职能、部门和岗位,用于对系统角色的定义、维护和角色-权限的映射。它包括角色的定义、角色查询、角色权限配置、增加角色、删除角色和修改角色等功能。
(3)菜单管理,该功能模块用于系统菜单的定义、维护。包括添加导航菜单的、删除导航菜单、修改导航菜单以及对导航菜单进行排序等功能。不同用户页面显示的导航菜单将和管理员定义的导航菜单一致。
(4)按钮管理,该功能模块用于页面管理页面中的按钮。包括添加按钮、删除按钮、修改按钮等功能。管理员根据需求把需要进行权限管理的按钮添加到按钮管理中,在用户点击按钮时,会对按钮的URL进行拦截来判断用户是否有操作的权限。
2.1.2访问控制模块
访问控制模块是通过用户身份验证和权限验证来实现的,对于权限管理系统而言,对用户的身份验证是至关重要的,用户只有具有一定的权限才能相应的进行某些操作,访问控制模块图如图3所示。
图3 访问控制模块图
访问控制分为身份验证、权限判断和逻辑处理三个子功能模块。
(1)身份验证
所谓身份认证是验证这个用户身份是否合法。这一过程是实现授权和审计控制所必需的前提,也是计算机网络安全系统不可缺少的关键环节。
传统的技术主要采用基于口令的认证机制。当被认证对象要求访问认证服务时,提供服务的认证方要求被认证对象提交口令。认证方收到口令后,将其与系统中存储的口令进行比较,经确认被认证对象是否为合法的访问者。但是口令以明文方式传输,容易在传输过程中被截获,所以对口令进行加密传输是防止密码被截获的有效方法。系统采用信息摘要算法(MD5)对用户口令加密。
权限管理中心对用户身份是否合法进行判断。当用户输入经MD5加密后的密码和从权限数据库中获得的密码相同时,则为合法用户,然后把用户的权限信息保存在Session中,反之为非法用户,即将页面将始终停留在登录页面。
(2)权限判断
权限验证是建立在用户身份验证的基础上的,当合法用户登录时,就可以获取用户的所有角色权限和个人功能权限,然后将所有权限并集缓冲到Session中,在整个Session周期中,除非用户注销,否则用户权限将一直被缓存,当用户请求某一应用服务,只需在Session的权限列表中查找用户是否具有该操作的功能权限即可,不必再到数据库中去读取权限信息,如果session中有相应的权限,则表示用户可以执行该功能,反之不能,这样可以极大地减轻服务器的负担,也避免了数据库的频繁操作而影响系统的性能。
(3)逻辑处理
逻辑处理模块是在用户身份验证和权限验证通过或者没有通过时,系统所做的相应处理。
2.1.3 系统管理模块
该模块是对系统数据库的配置和系统日志的管理。
数据库管理负责配置系统使用的数据库的类型,IP地址,端口号,数据库名称等信息。
日志管理负责配置系统日志的输出位置,输出的日志类型等信息。
2.2 系统数据库设计
本系统采用MySQL数据库,包括用户信息表、菜单信息表、按钮信息表、角色信息表、用户角色关联表、角色菜单关联表、角色按钮关联表共7张数据表。数据库的整体设计如图4所示:
图4 数据库整体设计
3 访问权限的实现
3.1 系统安全机制的实现
系统使用Filter拦截器实现访问控制机制,拦截器必须实现javax.servlet包中的Filter接口。这个接口定义了三个方法,init()方法在拦截器初始化的时候被调用、destroy()方法在拦截器销毁的时候被调用、doFilter()方法在拦截器被请求时调用。使用Filter需要先在web.xml中进行配置。配置方式如图5所示。
图5 配置Filter
系统通过在web.xml中配置拦截器的拦截路径来对用户的请求和操作进行拦截处理,从而完成用户身份验证和权限验证,达到访问控制的目的。上面的配置文件中filter-name是指拦截器的名字,filter-class是指MenuFilter这个拦截器对应的Java类,url-pattern是指要对什么路径下的url进行拦截,这里是拦截menu下的所有路径。
3.2 用户身份验证的实现
在实现用户身份验证的过程中,系统利用MD5信息摘要算法对用户口令进行加密以防止用户口令被窃取,用以加强保证系统的安全性。
首先获得MD5摘要算法的 MessageDigest 对象,然后使用指定的字节更新摘要,digest()最后确定返回md5 hash值,返回值为8为字符串,因为md5 hash值是16位的hex值,实际上就是8位的字符。最后把密文转换成十六进制的字符串形式返回。
用户身份认证就是通过搜索用户信息表,对用户登录的ID和密码进行鉴别,从而判定该用户合法还是非法。
3.3 权限验证的实现
权限验证阶段要做的就是:根据认证阶段记录下的用户信息,从数据库权限分配表中取出该用户拥有的权限,将这些记录在userMenuList和userButtonList等集合中,这样,当用户请求某一应用服务时,系统就根据应用对应的组织和需要的权限在对应的List集合中查找,根据查找结果来判断用户是否可以对应用进行操作,如果这一应用服务的权限在这个用户的功能权限中,则用户可以对应用服务操作,如果不在用户的功能权限之内,则跳转到权限不足界面。
用于权限验证的拦截器的部分代码如图6所示。
图6 拦截器权限验证
先从session中获取用户,判断用户是否登录,没有登录则跳转到登录界面。对已登录的用户才能进行权限认证,权限认证在 judgeAuth() 这个方法中实现。在用户登录成功时,会把用户拥有的权限保存在List集合中,这里对比List集合中拥有的权限,如果拥有此操作的权限就继续执行,否则就跳转到相应的提示界面。
用户身份认证和权限认证相结合,有效的防止了非法用户的登录和对系统的越权使用、篡改等操作,很好的实现了组件的安全机制。
4 结束语
权限管理系统主要是对系统的权限,角色,用户三个对象进行管理,把繁琐、重复的操作简单化、统一化。在web应用系统中构建一个通用的权限管理平台,有利于集中处理更有价值、更重要的事务,整体提高企业办事效率,增强信息的可控性,提高执行力,使企业管理趋于完善,最终实现市场竞争力全面提升的目标。本文以基于角色的访问控制为原理,设计并实现了一个能提供完整的用户身份认证和集中的应用授权体系的权限管理系统,该系统权限分配直观、扩展性好、授权灵活,能够为多种类型的应用系统提供系统一的授权管理和安全服务。实践证明基于角色的访问控制技术能够有效地解决用户权限的管理问题,降低了系统设计的复杂度。
参考文献:
[1] 王振江,刘强.基于RBAC的扩展访问控制模型[J].计算机工程与应用,2005,(35).
[2] 梅苏文,高县明.基于角色权限管理模型的设计与实现[J].现代计算机,2002,(11).
[3] 朱磊,周明辉.一种面向服务的权限管理模型[J].计算机学报,2005,(4).
[4] 暴志刚,胡艳军.基于Web的系统权限管理实现方法[J].计算机工程,2006,(1).
[5] 叶身兴.基于角色访问控制管理模型的研究与实现[D].武汉:华中科技大学,2005.
[6] 王亚民.基于RBAC的信息系统访问控制模型[J].情报杂志,2005,(10).
[7] D. Ferraiolo,R.Kuhn.Role-Based Access Controls[A]. In 15th NIST_NCSC National Computer Security Conference[C]. Baltimore,MD,1992.
[8] 李兴华,王月清.Java Web开发实战经典基础篇[M].北京:清华大学出版社,2010.8.
Research and Application of Role-Based Access Control Model in Web Application System
HUANG Xiu-wen
(Modern Education Centre, Wuhan Textile University, Wuhan Hubei 430074, China)
Access control is the main strategy of security and protection in Web system, the traditional access control can not meet the needs of the growing security. With using the role based access control (RBAC) model and introducing the concept of the role in the web system, the user is mapped to a role in an organization, access to the corresponding role authorization, access authorization and control according to the user's role in an organization, so as to improve the web system flexibility and security permissions and access control.
Web system; role-based access control; permission manage
TP393.08
A
2095-414X(2015)03-0090-05
黄秀文(1969-),女,中级,研究方向:计算机信息管理系统.