10.2.3 访问控制模型
1.自主访问控制
自主访问控制(Discretionary Access Control,简称DAC),又称基于身份的访问控制或任意访问控制。它的特点是根据用户的身份及允许的访问权限决定其访问操作。只要用户身份被确认,即可根据访问控制表上赋予该用户的权限进行限制性用户访问。使用这种控制方法,用户或应用可任意在系统中规定谁可以访问它们的资源,这样用户或用户进程就可有选择地与其他用户共享资源。它是一种对单独用户执行访问控制的过程和措施。
任何访问控制策略最终均可被模型化为访问控制矩阵:行对应主体,列对应客体,见表10-1。因此,访问控制矩阵可以表示成<主体,客体,权限>形式的三元组,两种流行的实现机制是访问控制表(Access Control List,简称ACL)和能力表(Capabili-tiesList,简称CL)。访问控制矩阵按列看是访问控制表,按行看是访问能力表。
表10-1 访问控制矩阵
自主访问控制的优点是:访问控制的粒度是单个用户,能够在一定程度上实现权限隔离和资源保护;能够不加控制地使信息从一个可以被写的客体流向一个可以被读的客体;用户可以随意地将自己拥有的访问权限授予其他用户,之后也可以随意地将所授予的权限撤销。由于自主访问控制将用户权限与用户直接对应,因此自主访问控制具有较高的访问效率,能够适用于许多的系统环境,所以被大量采用,尤其在商业和工业环境的应用上。
然而,自主访问控制提供的安全保护容易被非法用户绕过而获得访问。例如,若用户A有权访问文件F,而用户B无权访问F,则一旦A获取F后再传送给B,则B也可访问F,其原因是在自由访问策略中,用户在获得文件的访问后,并没有限制对该文件信息的操作,例如没有控制数据信息的分发。所以,自主访问控制提供的安全性还相对较低,不能对系统资源提供充分的保护。此外,自主访问控制还存在授权管理繁琐,不利于实现统一的全局访问控制,当用户的情况发生变化时需要进行大量的修改操作等缺点。
2.强制访问控制
强制访问控制(Mandatory Access Control,简称MAC)也被称为基于规则的访问控制。与自主访问控制相比,强制访问控制提供的访问控制机制更加安全一些。在强制访问控制中,系统给主体和客体分配了不同的安全属性,用户不能改变自身或任何客体的安全属性,即不允许单个用户确定访问权限,只有系统管理员可确定用户和用户组的访问权限。系统通过比较客体和主体的安全属性来决定主体是否可以访问客体。此外,强制访问控制不允许一个进程生成共享文件,从而防止进程通过共享文件将信息从一个进程传到另一进程。
强制访问控制可通过使用敏感标签对所有用户和资源强制执行安全策略,即实行强制访问控制。安全级别一般有4级:绝密级、秘密级、机密级、无级别级,其中绝密级的安全级别最高,后者依次降低。
在访问控制中,主体权限反映了信任程度,客体权限则与其所含信息的敏感度一致,通过二者的比较来判断访问的合法性。用户与访问的信息的读写关系有4种:
(1)下读(Read Down) 用户级别高于文件级别的读操作。
(2)上写(Write Up) 用户级别低于文件级别的写操作。
(3)下写(Write Down) 用户级别高于文件级别的写操作。
(4)上读(Read Up) 用户级别低于文件级别的读操作。
强制访问控制的两个关键规则是:不向上读和不向下写,即信息流只能从低安全级向高安全级流动,任何违反非循环信息流的行为都是被禁止的。上述读写方式保证了信息流的单向性,显然上读、下写方式保证了数据的完整性,上写、下读方式则保证了信息的秘密性。两者分别对应Biba模型和Bell-Lapadula模型。
强制访问控制的优点是管理集中,根据事先定义好的安全级别实现严格的权限管理,通过信息的单向流动来防止信息扩散,能够抵御特洛伊木马病毒对系统秘密性的攻击,因此适合对于安全性要求较高的应用环境,如军队的信息系统等。
强制访问控制的缺点是:根据用户的可信任级别及信息的敏感程度来确定它们的安全级别,在控制粒度上不能满足最小权限原则;应用领域比较窄,使用不灵活;主体访问级别和客体安全级别的划分与现实要求无法一致,在同级别间缺乏控制机制,管理不便;重点强调信息从低安全级向高安全级的方向流动,对高安全级信息的完整性保护强度不够等。
3.基于角色访问控制
基于角色访问控制(Role-Based Access Control,简称RBAC)是一个复合的规则,可以被认为是自主访问控制和强制访问控制的变体。它的基本思路是管理员创建角色并给角色分配权限,每个角色就是一组权限的集合。用户注册后由管理员将其设置为某一种角色,该用户即具有了该角色所具有的一组权限。
基于角色访问控制与传统的访问控制的差别在于增加一层间接性,带来了灵活性,如图10-6所示。
图10-6 基于角色访问控制与传统的访问控制的差别
基于角色访问控制从控制主体的角度出发,根据管理中相对稳定的职权和责任来划分角色,将访问权限与角色相联系。这点与传统的自主访问控制和强制访问控制将权限直接授予用户的方式不同,通过给用户分配合适的角色,让用户与访问权限相联系。角色成为访问控制中访问主体和受控对象之间的一座桥梁,即依据基于角色访问控制策略,系统定义了各种角色,每种角色可以完成一定的职能,不同的用户根据其职能和责任被赋予相应的角色,一旦某个用户成为某角色的成员,则此用户可以完成该角色所具有的职能。
基于角色的访问策略具有以下优点:
1)便于授权管理,如系统管理员需要修改系统设置等内容时,必须有几个不同角色的用户到场方能操作,从而保证了安全性。
2)便于根据工作需要分级,如企业财务部门与非财务部门的员工对企业财务的访问权就可由财务人员这个角色来区分。
3)便于赋予最小特权,如即使用户被赋予高级身份时也未必一定要使用,以便减少损失。只有必要时方能拥有特权。
4)便于任务分担,不同的角色完成不同的任务。
5)便于文件分级管理,文件本身也可分为不同的角色,如信件、账单等,由不同角色的用户拥有。
4.基于任务的访问控制模型
基于任务的访问控制(Task-Based Access Control,简称TBAC)是一种以任务为中心的,并采用动态授权的主动安全模型。该模型的基本思想是:授予用户的访问权限不仅仅依赖主体、客体,还依赖于主体当前执行的任务及任务的状态。当任务处于活动状态时,主体拥有访问权限;一旦任务被挂起,主体拥有的访问权限就被冻结;如果任务恢复执行,主体将重新拥有访问权限;任务处于终止状态时,主体拥有的权限马上被撤销。
基于任务的访问控制适用于工作流、分布式处理、多点访问控制的信息处理以及事物管理系统中的决策制定,但最显著的应用还是在安全工作流管理中。
在基于任务的访问控制中,可以根据组织内的规章制度、员工的分工、任务等设计主体执行任务所需拥有的权限。但是主体真正得到权限的时间是在任务执行时,也就是说,主体由于执行一个任务,需要访问某个客体,如果该任务当前状态不是活状态,主体所要求的权限将拒绝授予。
基于任务的访问控制是一种新的安全模型,它以任务、活动为中心来建立安全模型和实现安全机制,可以保证权限只有在用户需要时才得到,满足最小特权原则。基于任务的访问控制在完成任务的过程中,要监视权限的状态,按照进行中的任务状态确定权限是活动状态还是非活动状态,因此它是积极参与访问控制管理的[65]。