RBAC(RoleBasedAccessControl)访问控制是通过某种途径显示的准许或限制访问能力及范围,从而限制对目标资源的访问,防止非法用户的侵入或合法用户的不慎操作所造成的破坏[2]。目前流行的访问控制模型有自主访问控制模型(DiscretionaryAccessControl,DAC)、强制访问控制模型(MandatoryAccessControl,MAC)和基于角色的访问控制模型(Role-BasedAccessControl,RBAC)。自主访问控制是访问控制技术中最常见的一种方法,允许资源的所有者自主地在系统中决定可存取其资源客体的主体,此模型灵活性很高,但安全级别相对较低;强制访问控制是主体的权限和客体的安全属性都是固定的,由管理员通过授权决定一个主体对某个客体能否进行访问。无论是DAC还是MAC都是主体和访问权限直接发生关系,根据主体/客体的所属关系或主体/客体的安全级别来决定主体对客体的访问权,它的优点是管理集中,但其实现工作量大、不便于管理,不适用于主体或客体经常更新的应用环境。RBAC是一种可扩展的访问控制模型,通过引入角色来对用户和权限进行解耦,简化了授权操作和安全管理,它是目前公认的解决大型企业的统一资源访问控制的有效访问方法,其2个特征是:(1)由于角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,从而减小授权管理的复杂性,降低管理开销;(2)灵活地支持企业的安全策略,并对企业变化有很大的伸缩性。2.2RBAC模型的基本思想在RBAC模型中,角色是实现访问控制策略的基本语义实体。系统管理员可以根据职能或机构的需求策略来创建角色、给角色分配权限并给用户分配角色,用户能够访问的权限由该用户拥有的角色权限集合决定,即把整个访问控制过程分成2步:访问权限与角色相关联,角色再与用户关联,从而实现用户与访问权限的逻辑分离。RBAC模型引入了Role的概念,目的是为了隔离User(即动作主体,Subject)与Privilege(权限,表示对Resource的一个操作,即Operation+Resource),当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的权限。Role作为一个用户(User)与权限(Privilege)的代理层,解耦了权限和用户的关系,所有的授权应该给予Role而不是直接给User或Group。2.3RBAC基本模型标准RBAC模型由4个部件模型组成,分别是基本模型RBAC0(CoreRBAC)、角色分级模型RBAC1(HierarchalRBAC)、角色限制模型RBAC2(ConstraintRBAC)和统一模型RBAC3(CombinesRBAC)。RBAC基本模型(RBAC0)包含了RBAC标准最基本的内容,该模型的定义如图1所示。RBAC基本模型包括5个基本数据元素:用户,角色,资源,控制,授权。它们之间的关系如下:用户被分配一定角色,角色被分配一定许可权,会话是用户与激活的角色集合之间的映射,用户与角色间的关系定义和角色与权限间的关系定义无关。控制对象(Resource):系统的管理功能,如栏目管理、方案管理、新闻管理等;操作(Operation):对管理功能的操作,主要是增、删、改、查。3访问控制实现采用RBAC模型最大的好处是分离了用户和权限,使管理员可以分别处理用户的授权和权限的划分。这种面向对象的权限分离思想使开发出来的访问控制模块的通用性和可复用性更强,最大限度地避免了开发人员的重复性工作[3]。在开发系统时,可以将访问控制作为一个独立的模块进行开发。3.1访问控制模块系统设计上面的分析表明RBAC基本模型模型能满足可扩展的动态自定制信息系统中的访问控制,由此可将访问控制模块分为以下2个模块:(1)系统管理模块:包括用户管理模块和角色及权限管理模块2个部分,主要完成用户增减、角色增减及其权限分配。(2)身份认证模块:通过用户名、密码确认用户身份并对其访问某一资源的某一功能进行认证。3.2访问控制模块体系结构设计访问控制模块的体系结构设计采用前面介绍的J2EE架构下的SSH框架,划分为表示层,业务逻辑层,数据持久层和数据源层,结构如图2所示。3.3访问控制模块数据库设计具体设计内容见()中的设计实现为了实现基于RBAC的访问控制模型,将角色、用户、角色和用户的关系、角色和权限的关系以及可控资源信息等保存到数据库中,数据库设计上采用下面4个权限控制相关的表,如表1~表4所示,各表说明如下:(1)角色信息表:存储系统角色集,随角色的添加与删除动态变化。(2)用户信息表:存储系统中的个体用户集及用户与角色的关系,随用户的添加与删除动态变化。(3)角色权限信息表:存储角色对应的权限信息,随角色及对应权限的变化而动态变化。(4)资源表:系统可控制的资源,即由系统管理员创建的动态子库。在表3中,若对某子库的操作具有对应的权限,则存储该子库编号,否则存储0。3.4访问控制模块实现的关键技术3.4.1菜单管理模块填加新的后台管理菜单,如下图所示。3.4.2功能管理模块增加菜单下的功能项,菜单下必须有具体的功能项后才能正常使用,如下图所示。其中的地址表示执行本项功能的页面地址(所谓授权,就是把打开该功能页面的权限赋予相应的角色)。3.4.3角色管理模块管理角色,实现角色与管理功能的权限分配(授权),其操作界面如下图所示。1、角色定义:定义超级用户2、角色的权限分配(授权)功能使用权限主要是:增、删、改、查,如果还有额外的功能,也可很方便地扩展。如下图所示。更详细的权限分配(将增、删、改、查分开进行授权)定义如下:3.4.4用户管理模块定义新用户,并赋予用户相应的角色(即授予相应的功能使用权限)1、用户定义:新增用户daisy2、赋予用户角色:定义为超级用户3.5基于角色的访问控制技术演示