1.访问控制基本概念
身份认证技术解决了识别“用户是谁”的问题,那么认证通过的用户是不是可以无条件地使用所有资源呢?答案是否定的。访问控制(Access Control)技术就是用来管理用户对系统资源的访问。访问控制是国际标准ISO7498-2中的五项安全服务之一,对提高信息系统的安全性起到至关重要的作用,如图6-1所示。
访问控制是针对越权使用资源的防御性措施之一。其基本目标是防止对任何资源(如计算资源、通信资源或信息资源)进行未授权的访问,从而使资源使用始终处于控制范围内。最常见的是,通过对主机操作系统的设置或对路由器的设置来实现相应的主机访问控制或网络访问控制。例如,控制内网用户在上班时间使用QQ、MSN等。
访问控制对实现信息机密性、完整性起直接的作用,还可以通过对以下信息的有效控制来实现信息和信息系统可用性:①谁可以颁发影响网络可用性的网络管理指令;②谁能够滥用资源以达到占用资源的目的;③谁能够获得可以用于拒绝服务攻击的信息。
主体(Subject)是指提出访问请求的实体,是动作的发起者,但不一定是动作的执行者。主体可以是用户或其它代理用户行为的实体(如进程、作业和程序等)。
客体(Object)是指可以接受主体访问的被动实体。客体的内涵很广泛,凡是可以被操作的信息、资源、对象都可以认为是客体。
访问控制策略(Access Control Policy)是指主体对客体的操作行为和约束条件的关联集合。简单地讲,访问控制策略是主体对客体的访问规则集合,这个规则集合可以直接决定主体是否可以对客体实施的特定的操作。访问控制策略体现了一种授权行为,也就是客体对主体的权限允许。
访问控制策略往往表现为一系列的访问规则,这些规则定义了主体对客体的作用行为和客体对主体的条件约束。访问控制机制是访问控制策略的软硬件低层实现。
如图6-1所示,主体对于客体的每一次访问,访问控制系统均要审核该次访问操作是否符合访问控制策略,只允许符合访问控制策略的操作请求,拒绝那些违反控制策略的非法访问。
访问控制可以解释为:依据一定的访问控制策略,实施对主体访问客体的控制。
图6-1也给出了访问控制系统的两个主要工作,一个是当主体发出对客体的访问请求时,查询相关的访问控制策略;另一个是依据访问控制策略执行访问控制。
通过以上分析,可以看出影响访问控制系统实施效果好坏的首要因素是访问控制策略,制定访问控制策略的过程实际上就是为主体对客体的访问授权过程。如何较好地完成对主体的授权是访问控制成功的关键,同时也是访问控制必须研究的重要课题。
信息系统的访问控制技术最早产生于20实际60年代,在70年代先后出现了多种访问控制模型。1985年美国军方提出可信计算机系统评估准则TCSEC,其中描述了两种著名的访问控制模型,即自主访问控制DAC(Discretionary Access Control)和强制访问控制MAC(Mandatory Access Control);1992年美国国家标准与技术研究所(NIST)的David Ferraiolo和Rick Kuhn提出基于角色的访问控制RBAC(Role Based Access Control)。
如何决定主体对客体的访问权限?一个主体对一个客体的访问权限能否转让给其他主体呢?这些问题在访问控制策略中必须得到明确的回答。
访问控制策略制定的原则
访问控制策略的制定一般要满足如下两项基本原则。
①最小权限原则:分配给系统中的每一个程序和每一个用户的权限应该是它们完成工作所必须享有的权限的最小集合。换句话说,如果主体不需要访问特定客体,则主体就不应该拥有访问这个客体的权限。
②最小泄露原则:主体执行任务所需知道的信息应该最小化。
访问权限确定过程
主体对客体的访问权限的确定过程是:首先对用户和资源进行分类,然后对需要保护的资源定义一个访问控制包,最后根据访问控制包来制订访问控制规则集。
用户分类
通常把用户分为特殊用户、一般用户、作审计用户和作废用户。
①特殊用户:系统管理员具有最高级别的特权,可以访问任何资源,并具有任何类型的访问操作能力。
②一般的用户:最大的一类用户,他们的访问操作受到一定限制,由系统管理员分配。
③作审计的用户:负责整个安全系统范围内的安全控制与资源使用情况的审计。
④作废的用户:被系统拒绝的用户。
资源的分类
系统内需要保护的资源包括磁盘与磁带卷标、数据库中的数据、应用资源、远程终端、信息管理系统的事务处理及其应用等。
对需要保护的资源定义一个访问控制包
内容包括资源名及拥有者的标识符、缺省访问权、用户和用户组的特权明细表、允许资源拥有者对其添加新的可用数据的操作、审计数据等。
访问控制规则集
访问控制规则集是根据第三步的访问控制包得到的,它规定了若干条件和在这些条件下可准许访问的一个资源。规则使得用户与资源配对,并指定该用户可在该文件上执行哪些操作,如只读、不许执行或不许访问。
“主体对客体的访问权限能否转让给其他主体”这一问题则比较复杂,不能简单地用“能”和“不能”来回答。大家试想一下,如果回答“不能”,表面上看很安全,但按照这一控制策略做出系统后,我们就不可能实现任何信息的共享了。
2.自主访问控制
一种策略是对某个客体具有所有权的主体能够自主地将对该客体的一种访问权或多种访问权授予其他主体,并可在随后的任何时刻将这些权限收回,这一策略称为自主访问控制。这种策略因灵活性高,在实际系统中被大量采用。
Linux、UNIX和Windows等系统都提供了自主访问控制功能。
在实现自主访问控制策略的系统中,信息在移动过程中其访问权限关系会被改变。如用户A可将其对目标O的访问权限传递给用户B,从而使本身不具备对O访问权限的B可访问O。因此,这种模型提供的安全防护不能给系统提供充分的数据保护。
自主访问控制模型(DAC Model)是根据自主访问控制策略建立的一种模型,允许合法用户以用户或用户组的身份来访问系统控制策略许可的客体,同时阻止非授权用户访问客体,某些用户还可以自主地把自己所拥有的客体的访问权限授予其它用户。
自主访问控制模型(DAC Model)是根据自主访问控制策略建立的一种模型,允许合法用户以用户或用户组的身份来访问系统控制策略许可的客体,同时阻止非授权用户访问客体,某些用户还可以自主地把自己所拥有的客体的访问权限授予其它用户。
UNIX、LINUX、Windows NT等操作系统都提供自主访问控制的功能。
在自主访问控制系统中,特权用户为普通用户分配的访问权限信息主要以访问控制表ACL(Access Control Lists)、访问控制能力表ACCL(Access Control Capability Lists)访问控制矩阵、ACM(Access Control Matrix)三种形式来存储。
ACL是以客体为中心建立访问权限表,其优点在于实现简单,系统为每个客体确定一个授权主体的列表,大多数主机都是用ACL作为访问控制的实现机制。
图6-2以ACL示例,(Own,R,W)表示读、写、管理操作。之所以将管理操作从读/写中分离出来,因为管理员会对控制规则本身或文件属性等作修改,即修改ACL。
例如,对于客体Object1来讲,Alice对它的访问权限集合为(Own,R,W),Bob只有读取权限(R),John拥有读/写操作的权限(R,W)。
图6-3以ACCL示例,ACCL以主体为中心建立的访问权限表。“能力”这个概念可以解释为请求访问的发起者所拥有的一个授权标签,授权标签表明持有者可以按照某种访问方式访问特定的客体。也就是说,如果赋予某个主体一种能力,那么这个主体就具有与该能力对应的权限。
在此示例中,Alice被赋予一定的访问控制能力,其具有的权限包括:对Object1拥有的访问权限集合为(Own,R,W),对Object2拥有只读权限集(R),对Object3拥有读和写的权限(R,W)。
ACM是通过矩阵形式表示主体用户和客体资源之间的授权关系的方法。表6-1为ACM示例,采用二维表的形式来存储访问控制策略,每一行为一个主体的访问能力描述,每一列为一个客体的访问能力描述,整个矩阵可以清晰地体现出访问控制策略。
与ACL和ACCL一样,ACM的内容同样需要特权用户或特权用户组来进行管理。另外,如果主体和客体很多,那么ACM将会成几何级增长,这样对于增长了的矩阵而言,会有大量的冗余空间,如主体John和客体Object2之间没有访问关系,但也存在授权关系项。
DAC对用户提供了灵活的数据访问方式,授权主体(特权用户、特权用户组的成员以及对客体拥有Own权限的主体)均可以完成赋予和回收其他主体对客体资源的访问权限,使得DAC广泛应用于商业和工业环境中。
但由于DAC允许用户任意传递权限,没有访问文件file1权限的用户A可能从有访问权限的用户B那里得到访问权限,因此,DAC模型提供的安全防护还是相对比较低的,不能为系统提供充分的数据保护。
3.强制访问控制
另一种策略是根据主体被信任的程度和客体所含信息的机密性和敏感程度来决定主体对客体的访问权。
用户和客体都被赋予一定的安全级别,用户不能改变自身和客体的安全级别,只有管理员才能确定用户的安全级别且当主体和客体的安全级别满足一定的规则时,才允许访问。这一策略称为强制访问控制。
在强制访问控制模型中,一个主体对某客体的访问权只能有条件地转让给其他主体,而这些条件是非常严格的。例如,Bell-LaPadula模型规定,安全级别高的用户和进程不能向比他们安全级别低的用户和进程写入数据。
Bell-LaPadula模型的访问控制原则可简单地表示为“无上读、无下写”,该模型是第一个将安全策略形式化的数学模型,是一个状态机模型,即用状态转换规则来描述系统的变化过程。Lattice模型和Biba模型也属于强制访问控制模型。
强制访问控制一般通过安全标签来实现单向信息流通。
强制访问控制MAC是一种多级访问控制策略,系统事先给访问主体和受控客体分配不同的安全级别属性,在实施访问控制时,系统先对访问主体和受控客体的安全级别属性进行比较,再决定访问主体能否访问该受控客体。
为了对MAC模型进行形式化描述,首先需要将访问控制系统中的实体对象分为主体集S和客体集O,然后定义安全类SC(x)= ,其中x为特定的主体或客体,L为有层次的安全级别Level,C为无层次的安全范畴Category。
在安全类SC的两个基本属性L和C中,安全范畴C用来划分实体对象的归属,而同属于一个安全范畴的不同实体对象由于具有不同层次的安全级别L,因而构成了一定的偏序关系。
例如,TS(Top Secret)表示绝密级,S(Secret)表示秘密级,当主体s的安全类别为TS,而客体o的安全类别为S时,s与o的偏序关系可以表述为SC(s)≥SC(o)。依靠不同实体安全级别执念存在的偏序关系,主体对客体的访问可以分为以下四种形式。
①向下读(RD,Read Down):主体安全级别高于客体信息资源的安全级别时,即SC(s)≥SC(o),允许读操作。
②向上读(RU,Read Up):主体安全级别低于客体信息资源的安全级别时,即SC(s)≤SC(o),允许读操作。
③向下写(WD,Write Down):SC(s)≥SC(o)时,允许写操作。
④向上写(WU,Write Up):SC(s)≤SC(o)时,允许写操作。
由于MAC通过分级的安全标签实现了信息的单向流动,因此它一直被军方采用,其中最著名的是Bell-LaPadula模型和Biba模型。
Bell-LaPadula模型具有只允许向下读、向上写的特点,可以有效防止机密信息向下级泄露,保护机密性;Biba模型则具有只允许向上读、向下写的特点,可以有效地保护数据的完整性。
4.基于角色的访问控制
将访问权限分配给一定的角色,用户根据自己的角色获得相应的访问许可权,这便是基于角色的访问控制策略。角色是指一个可以完成一定职能的命名组。角色与组是有区别的,组是一组用户的集合,而角色是一组用户集合外加一组操作权限集合。
Group的概念,一般认为Group是具有某些相同特质的用户集合。在UNIX操作系统中Group可以被看成是拥有相同访问权限的用户集合,定义用户组时会为该组赋予相应的访问权限。如果一个用户加入了该组,则该用户即具有了该用户组的访问权限,可以看出组内用户继承了组的权限。
如图6-4所示,角色Role的概念可以这样理解一个角色是一个与特定工作活动相关联的行为与责任的集合。
Role不是用户的集合,也就与组Group不同。当将一个角色与一个组绑定,则这个组就拥有了该角色拥有的特定工作的行为能力和责任。组Group和用户User都可以看成是角色分配的单位和载体。而一个角色Role可以看成具有某种能力或某些属性的主体的一个抽象。
Role的目的是为了隔离用户(Subject,动作客体)与Privilege(权限,指对客体)的一个访问操作,即操作(Operation)+客体对象(Object))。Role作为一个用户与权限的代理层,所有的授权应该给予Role而不是直接给User或Group。RBAC模型的基本思想是将访问权限分配给一定的角色,用户通过饰演不同的角色获得角色所拥有的访问许可权。
在基于角色的访问控制模型中,只有系统管理员才能定义和分配角色,用户不能自主地将对客体的访问权转让给别的用户。比较而言,自主访问控制配置的力度小、配置的工作量大、效率低,强制访问控制配置的力度大、缺乏灵活性,而基于角色的访问控制策略是与现代的商业环境相结合的产物,具有灵活、方便和安全的特点,是实施面向企业安全策略的一种有效的访问控制方式,目前常用于大型数据库系统的权限管理。
一个基于角色的访问控制实例
在银行环境中,用户角色可以定义为出纳员、分行管理者、顾客、系统管理者和审计员,相应的访问控制策略可如下规定:
①允许一个出纳员修改顾客的帐号记录(包括存款和取款、转账等),并允许查询所有账号的注册项。
②允许一个分行管理者修改顾客的账号记录(包括存款和取款,但不包括规定的资金数目的范围)并允许查询所有账号的注册项,也允许创建和终止账号。
③允许一个顾客只询问他自己的账号的注册项。
④允许系统的管理者询问系统的注册项和开关系统,但不允许读或修改用户的账号信息。
⑤允许一个审计员读系统中的任何数据,但不允许修改任何事情。该策略陈述易于被非技术的组织策略者理解,同时也易于映射到访问控制矩阵或基于组的策略陈述。另外,该策略还同时具有基于身份策略的特征和基于规则策略的特征。
在基于角色的访问控制模型中,只有系统管理员才能定义和分配角色,用户不能自主地将对客体的访问权转让给别的用户。比较而言,自主访问控制配置的力度小、配置的工作量大、效率低,强制访问控制配置的力度大、缺乏灵活性,而基于角色的访问控制策略是与现代的商业环境相结合的产物,具有灵活、方便和安全的特点,是实施面向企业安全策略的一种有效的访问控制方式,目前常用于大型数据库系统的权限管理。
一个基于角色的访问控制实例
在银行环境中,用户角色可以定义为出纳员、分行管理者、顾客、系统管理者和审计员,相应的访问控制策略可如下规定:
①允许一个出纳员修改顾客的帐号记录(包括存款和取款、转账等),并允许查询所有账号的注册项。
②允许一个分行管理者修改顾客的账号记录(包括存款和取款,但不包括规定的资金数目的范围)并允许查询所有账号的注册项,也允许创建和终止账号。
③允许一个顾客只询问他自己的账号的注册项。
④允许系统的管理者询问系统的注册项和开关系统,但不允许读或修改用户的账号信息。
⑤允许一个审计员读系统中的任何数据,但不允许修改任何事情。该策略陈述易于被非技术的组织策略者理解,同时也易于映射到访问控制矩阵或基于组的策略陈述。另外,该策略还同时具有基于身份策略的特征和基于规则策略的特征。
基于角色的访问控制具有如下优势:
①便于授权管理。例如,系统管理员需要修改系统设置等内容时,必须有几个不同角色的用户到场方能操作,保证了安全性。
②便于根据工作需要分级。例如,企业财务部门与非财务部门的员工对企业财务的访问权就可由财务人员这个角色来区分。
③便于赋予最小特权。例如,即使用户被赋予高级身份时也未必一定要使用,以便减少损失,只有必要时方能拥有特权。
④便于任务分担,不同的角色完成不同的任务。在基于角色的访问控制中,一个个人用户可能是不只一个组或角色的成员,有时又可能有所限制。
⑤便于文件分级管理。文件本身也可分为不同的角色,如信件、账单等,由不同角色的用户拥有。
在各种访问控制系统中,访问控制策略的制定实施都是围绕主体、客体和操作权限三者之间的关系展开。有三个基本原则是制定访问控制策略时必须遵守的。
①最小特权原则是指主体执行操作时,按照主体所需权利的最小化原则分配给主体权力。最小特权原则的优点是最大限度地限制了主体实施授权行为,可以避免来自突发事件和错误操作带来的危险。
②最小泄漏原则是指主体执行任务时,按照主体所需要知道信息的最小化原则分配给主体访问权限。
③多级安全策略是指主体和客体间的数据流方向必须受到安全等级的约束。多级安全策略的优点是避免敏感信息的扩散。对于具有安全级别的信息资源,只有安全级别比它高的主体才能够对其访问。
我是木子雨辰,一位信息安全领域从业者,@木子雨辰将一直带给大家信息安全知识,每天两篇安全知识、由浅至深、采用体系化结构逐步分享,大家有什么建议和问题,可以及留言,多谢大家点击关注、转发、评论,谢谢大家。
大家如果有需要了解安全知识内容需求的可以留言,沟通,愿与大家携手前行。