一、 前言
管理信息系统是一个复杂的人机交互系统,其中每个具体环节都可能受到安全威胁。构建强健的权限管理系统,保证管理信息系统的安全性是十分重要的。权限管理系统是管理信息系统中可代码重用性最高的模块之一, 也是重复开发率最高的模块之一。任何多用户的系统都不可避免的涉及到相同的权限需求,都需要解决实体鉴别、数据保密性、数据完整性、防抵赖和访问控制等安全服务(ISO7498-2)。例如,访问控制服务要求系统根据管理员已经设定的操作权限,控制操作者可以访问哪些资源,以及确定对资源如何进行操作。
采用统一的安全管理设计思想,规范化设计和先进的技术架构体系,构建一个通用的、完善的、安全的、易于管理的、有良好的可移植性和扩展性的权限管理系统,使得权限管理系统真正成为权限控制的核心,在维护系统安全方面发挥重要的作用,是十分必要的。

二、 访问控制
访问控制技术是一个安全信息系统不可或缺的安全措施,对保护数字资源的安全有着重要意义。访问控制技术起源于20C70年代,当时是为了满足管理大型主机系统上共享数据授权访问的需要;随着计算机技术和应用的发展,特别是网络应用的发展,这一技术的思想和方法迅速应用于信息系统的各个领域。在30年的发展过程中,先后出现了多种重要的访问控制技术,它们的基本目标都是防止非法用户进入系统和合法用户对系统资源的非法使用。为了达到这个目标,访问控制常以用户身份认证为前提,在此基础上实施各种访问策略来控制和规范合法用户在系统中的行为。
权限控制的中心是对访问数据的控制。访问控制(也称存取控制)的目的是根据需要批准或禁止用户访问数字资源,确保用户对数据只能进行经过授权的有关操作;使每个用户都能方便地访问其在工作中所需要的数据(根据其责任和资格),同时屏蔽不允许他们访问的数据。
在访问控制机制中,一般把被访问的资源称为“客体”,把以用户名义进行资源访问的进程、事务等实体称为“主体”。因此访问控制的基本目标就是为了限制访问主体(用户、进程、服务等)对访问客体(文件、系统等)的访问权限,从而使计算机系统在合法范围内使用;决定用户能做什么,也决定代表一定用户权益的程序能做什么。
目前,访问控制机制理论有四种:
·自主存取控制(Discretionary Access Control,DAC);
·强制存取控制(Mandatory Access Control,MAC);
·基于角色的存取控制(Role-based Access Control,RBAC);
·使用控制(Usage Control,UCON)。
其中前三者被广泛使用。

1、 自主存取控制(DAC)
自主存取控制随分时系统的出现而产生,其基本思想是:系统中的主体可以自主的将其拥有的对客体的权限部分或者全部授予其它主体。其通常通过访问控制列表(ACL:Access Control List)来实现,包括基于行(主体)的DAC和基于列(客体)的DAC。基于行的DAC在每个主体上都附加一个该主体可访问的客体的明细表,而基于列的DAC则在每一个客体上都附加一个可以访问该客体的主体的明细表。
DAC访问控制完全基于访问者和对象的身份。在DAC机制中,用户对不同的数据对象有不同的存取权限,而且还可以将其拥有的存取权限转授给其他用户。
DAC实现简单,在早期得到了广泛的应用。但是由于其允许访问权的传递,使得传递出去的访问权难以管理;另外其无法保护受保护资源的副本;最后,其用于管理主客体数量巨大的系统将造成开销巨大,效率低下的问题,难以满足大型应用,特别是网络应用的需要。
目前在我国的大多数的信息系统中的访问控制模块中基本是借助于自主存取控制机制的访问控制列表(ACLs)。
2、 强制存取控制(MAC)
强制存取控制最初源于对信息机密性的要求以及防止特洛伊***之类的***,其最开始应用于军方系统中。其通过对主体和客体分配固定的安全属性,利用安全属性来决定主体是否可以对客体的进行访问。安全属性是固定的,任何用户或者用户进程都无法改变自身或者其它主/客体的安全属性。另外,MAC通常和DAC结合使用,主体只有通过了MAC和DAC检查后才能访问客体,因而可以防止特洛伊***之类的程序窃取信息。
MAC的本质是基于格的非循环单向信息流政策。对于不同类型的信息采取不同层次的安全策略,对不同类型的数据来进行访问授权。在MAC机制中,存取权限不可以转授,所有用户必须遵守有管理员建立的安全规则,最基本的规则是“向下读取,向上写入”。MAC具有两个关键规则:“不向上读,不向下写”,即信息只能由低安全级向高安全级流动,任何反向信息流动都是被禁止的。
虽然其通过增加访问限制来增加了信息的机密性,但是也不可避免的降低了系统的灵活性,另外其不能实施完整性控制,这限制了它在网络中的应用。再者,现代计算机中不可避免的存在大量的逆向潜信道,如:共享内存,大量的Cache,这也影响了其的广泛应用。
MAC用于多层次安全级别的军事应用。
3、 基于角色的存取控制(RBAC)
RBAC在主体和权限之间增加了一个中间桥梁——角色。角色可以看作是一组操作的集合,不同的角色具有不同的操作集,这些操作由系统管理员分配给角色。用户的授权是通过授予用户一个角色来实现的,即赋予用户一个角色,一个用户可以承担不同的角色,从而实现授权的灵活性。
权限被授予角色,而管理员通过指定用户为特定角色来为用户授权;从而大大简化授权管理,减少授权管理的复杂性,降低管理开销,使权限管理系统具有强大的可操作性和可管理性。角色可以根据组织中的不同工作创建,然后根据用户的责任和资格分配角色,用户可以轻松地进行角色转换。而且随着新应用和新系统的增加,角色可以分配更多的权限,也可以根据需要撤销相应的权限。从而灵活地支持企业的安全策略,并对企业的变化有了很大的伸缩性。
RBAC属于策略中立的访问控制模型,既可以实现自主存取控制策略(DAC),又可以实现强制存取控制策略(MAC),可以有效缓解传统安全管理处理瓶颈问题,被认为是一种普通适用的访问控制模型,尤其适用于大型组织的统一资源有效的访问控制机制。
4、 使用控制(UCON)
UCON目前还停留在理论阶段。UCON对传统的存取控制进行了扩展,定义了授权(Authorization)、职责(Obligation)和条件(Condition)3个决定性因素,同时提出了存取控制的连续性(Continuity)和易变性(Mutability)两个重要属性。(Park. J,Sundhu. R,2002)UCON优化了传统的访问控制、可信管理,以及数字权力管理,从而用系统方式提供了一个保护数字资源的统一标准的框架,为下一代存取控制机制提供了新思路。

三、 RBAC(一):初步
RBAC(Role-based Access Control,缩写RBAC),即基于角色的访问控制,作为一种灵活和直观的访问控制技术在20世纪90年代(RBAC96)迅速发展起来。RBAC通过引入角色(role)的新概念来实施访问控制策略。不同的角色和它所应具有的权限许可(permission)互相联系,用户(user)作为某些角色的成员,获得角色所拥有的权限。角色可以根据实际的单位或组织的不同工作职能和权限来划分(生成或取消),依据用户所承担的不同权利和义务来授权相应的角色。对于一个存在大量用户和权限的权限分配系统来说,从用户到角色的管理,简化了权限分配的复杂性,提高了安全管理的效率和质量。

(一)、RBAC参考模型
为了将人和权限解藕,RBAC模型引入Role概念,目的是为了隔离用户(User,即动作主体)与权限(Privilege)。角色(Role)作为一个用户与权限的代理层,解耦了权限和用户的关系,所有的授权应该给予角色而不是直接给用户或组(Group)。权限是权限颗粒,由操作(Operation)和资源(Resource)组成,表示对资源的一个操作,即“Operation + Resource”;例如,对于新闻的删除操作。角色-权限(Role-Privilege)是多对多(Many-to-Many)的关系,这是权限的核心。整个RBAC参考模型就是围绕Role来建立的。
RBAC参考模型(Reference Model)如图1。

rbac_第1张图片

图1:RBAC模型
对该模型定义如下:
U,R,P,S:用户(USERS),角色(ROLES),权限(PRMS),会话(SESSIONS);
PA⊆P*R:权限分配,多对多的关系;
UA⊆U*R:用户分配,多对多关系;
Users:S>U,每一个会话 s 对应单一用户 user(s)的映射;
Roles:会话 s 到角色集合role(s) ⊆{r | (user(s), r) ε PA}
易见:该模型由三个实体组成,分别是:用户(U)、角色(R)、权限(P)。其中用户指自然人;角色就是组织内部一件工作的功能或工作的头衔,表示该角色成员所授予的职责的许可,系统中拥有权限的用户可以执行相应的操作。
RBAC的关注点在角色和用户以及权限间的关系,称为用户委派(User assignment,UA)和权限委派(Permission assignment,PA)。关系的左右两边都是多对多(Many-to-Many)关系。可以说,UA和PA就相当于中间表;事实上,整个RBAC都是基于关系模型。
用户与角色之间以及角色与权限之间用双双箭头相连表示用户角色分配 UA 和角色权限分配 PA 关系都是多对多的关系,即一个用户可以拥有多个角色,一个角色也可被多个用户所拥有。同样的,一个角色拥有多个权限,一个权限能被多个角色所拥有。用户建立会话从而对资源进行存取,每个会话 S 将一个用户与他所对应的角色集中的一部分建立映射关系,这个角色会话子集称为会话激活的角色集。于是,在这次会话中,用户可以执行的操作就是该会话激活的角色集对应的权限所允许的操作。