欢迎来到学术参考网

一种基于Acegi框架和RBAC模型的权限控制改进策略

发布时间:2015-12-14 14:33

摘 要:本文在对Acegi中引入RBAC模型的利弊分析基础上,提出了在Acegi中采用一种折衷的权限管理方案。该方案把对Web资源和业务方法的保护同对领域对象的保护隔离开来,采用不同的访问控制模型。

关键词:Acegi;认证;授权;RBAC

1.引言
  在各种基于J2EE的应用开发中,以认证授权为基本操作的权限控制子系统是不可缺少的部分,而且在模块化的系统开发中,一个基本前提就是权限控制子系统对各业务逻辑系统透明,简单说就是业务逻辑系统中不应包含权限控制的语句。因此构建一个通用的、便携性强的、便于配置和管理的真正贴近开发实际的安全控制架构尤为重要。
架构的不足
  轻量级J2EE框架Spring的出现,无疑为应用的便携性铺平了道路,通过IoC和AOP等核心技术的使用,使得POJO取代EJB成为程序的主角,开发者可以为POJO业务对象提供声明式的事务管理和其他横切性的企业级服务。而构建在它上的Acegi秉承了这一极为重要的优势,成为了J2EE安全领域事实上的标准。但在实际的应用开发中,Acegi也存在着一些不能满足实际应用的地方:
  其一、Acegi给出的基于XML文件授权信息的配置策略,显然不符合实际的应用环境,在大多数应用中权限往往是动态变化的,管理员可能随时需要配置、维护和修改权限信息。而采用XML文件作为受保护资源的授权信息的载体,显然无法满足这一基本需求。
  其二、Acegi提供的基于RDBMS的用户权限控制模型虽然适合一些小规模,低复杂度的使能应用,但对错综复杂的安全需求缺乏统一的支持,需要进一步引入更为复杂、适用面更加广泛的权限控制模型。
3. 在Acegi中引入RBAC的利弊分析
  面向角色的访问控制(RBAC)模型实现了用户与访问权限的逻辑分离,减少了授权管理的复杂性,降低了管理开销和管理复杂度。但在实际的J2EE应用的设计与开发中,是否采用基本的RBAC权限管理模型仍需要根据实际需求做出取舍,以求达到系统复杂度和效率的平衡。
  比如在对Acegi权限管理的改进和扩展中,我们虽然可以考虑直接把标准的基于RBAC的权限管理数据模型引入Acegi中,但对大多数基于Web的应用来说,这却不一定是最好的解决方案,原因如下:
* 权限校验复杂。在大多数Web应用中,系统主要关注的是对Web资源和业务方法的保护,当客户发出对Web资源的访问请求时,这样的请求在很多时候非常频繁,采用RBAC权限管理模型系统在进行权限校验时需要不断的遍历和递归,对系统性能的负面影响显而易见。
* 对领域对象的权限控制实现起来也比较低效。比如在笔者参与开发过的一个基于Web的内容管理系统(Content Management System,CMS)中,员工可以创建信息栏目,这时他就是该栏目的所有者,拥有对该栏目的一切权力,而RBAC模型无法直接对用户进行授权,必须通过角色,这无疑是低效的。
4. 在Acegi中RBAC模型的改进
  因此,这里提出一种折中的权限管理方案。把对Web资源和业务方法的保护同对领域对象的保护隔离开来,采用不同的数据模型。具体如下所示:


(1)对Web资源和业务方法的保护采用简化的RBAC模型
  因为在绝大多数应用中,对Web资源和业务方法而言,操作只有“访问”一种情况,所以在RBAC模型中去掉operations表,直接把资源同角色联系起来。数据管理模型如图1所示:

图1:简化的RBAC模型
  这样,不但提高了系统权限校验的效率,而且使得每张表的容量比起RBAC模型来明显减少,使得我们可以把它们整体放入缓存中,进一步减少了授权操作的时间,加快了系统的响应速度。
(2)对领域对象的保护采用ACL模型
  ACL模型是操作系统普遍采用安全控制模型。从领域对象的角度而言,每个领域对象都有各自的访问控制列表(ACL),各个ACL可能持有若干个访问控制项(ACE),ACE真正给出了操控当前领域对象的具体权限信息。该模型的E-R图如图2所示:

图2:ACL模型的E-R图
  借助于这一在操作系统中普遍使用的ACL模型,不但模型本身更容易理解,而且可以直接对用户或角色授权,这对领域对象的保护提供了极大的灵活性。
5.结束语
  本文在基于对Acegi的研究的基础上,通过对Acegi进行改进扩展,在构建一个通用性好的、便于配置和管理的安全控制架构方面做了一定的尝试。
参考文献:
.铁路计算机应用 , 2006,(12).

上一篇:高校校园网的网络安全问题分析及其对策

下一篇:U盘数据失而复得