5.5 对访问控制进行安全防范
5.5.1 制定安全策略
1.安全策略建立的需要和目的
安全的领域非常广泛繁杂,构建一个可以抵御风险的安全框架涉及很多细节。就算是最简单的安全需求,也可能会涉及密码学、代码重用等实际问题。做一个相当完备的安全分析不得不需要专业人员给出许许多多不同的专业细节和计算环境,这通常会使专业的框架师也望而生畏。如果我们能够提供一种恰当的、符合安全需求的整体思路,就会使这个问题容易得多,也更加有明确的前进方向。能够提供这种帮助的就是安全策略。一个恰当的安全策略总会把自己关注的核心集中到最高决策层认为必须值得注意的那些方面。概括地说,一种安全策略实质上表明:当设计所涉及的那个系统在进行操作时,必须明确在安全领域的范围内,什么操作是明确允许的,什么操作是一般默认允许的,什么操作是明确不允许的,什么操作是默认不允许的。我们不要求安全策略做出具体的措施规定以及确切说明通过何种方式能够达到预期的结果,但是应该向安全构架的实际建造者们指出在当前的前提下,什么因素和风险才是最重要的。就这个意义而言,建立安全策略是实现安全的最首要的工作,也是实现安全技术管理与规范的第一步,如图5-19所示。
图5-19 安全策略规划与实施
2.安全策略的具体含义和实现
安全策略的前提是具有一般性和普遍性,如何能使安全策略的这种普遍性和我们所要分析的实际问题的特殊性相结合,即使安全策略与当前的具体应用紧密结合是我们面临的最主要的问题。控制策略的制定是一个按照安全需求、依照实例不断精确细化的求解过程。安全策略的制订者总是试图在安全设计的每个设计阶段分别设计和考虑不同的安全需求与应用细节,这样可以将一个复杂的问题简单化。但是设计者要考虑到实际应用前的前瞻性,有时候我们并不知道这些具体的需求与细节是什么。为了能够描述和了解这些细节,就需要我们在安全策略的指导下对安全涉及的领域和相关方面做细致的考察和研究。借助这些手段能够迫使在下面的讨论中,增加我们对于将安全策略应用到实际中或是强加于实际应用而导致的问题的认知。总之,我们对上述问题认识得越充分,能够实现和解释的过程就越精确、细化,这一精确、细化的过程有助于我们建立和完善从实际应用中提炼抽象凝练的、用确切语言表述的安全策略。反过来,这个重新表述的安全策略就能够使我们更易于去完成安全框架中所设定的细节。
ISO7498标准是目前国际上普遍遵循的计算机信息系统互联标准,1989年12月国际标准化组织(ISO)颁布了该标准的第二部分,即ISO 7498-2,并首次确定了开放系统互连(OSI)参考模型的信息安全体系结构。我国将其作为GB/T 9387-2标准,并予以执行。按照ISO 7498-2中OSI安全体系结构中的定义,访问控制的安全策略有以下两种实现方式:基于身份的安全策略和基于规则的安全策略。目前使用的两种安全策略建立的基础都是授权行为。就其形式而言,基于身份的安全策略等同于DAC安全策略,基于规则的安全策略等同于MAC安全策略。
(1)基于身份的安全策略。
基于身份的安全策略与我们之前讲过的鉴别行为一致,它的目的是过滤对数据或资源的访问,只有能通过认证的那些主体才有可能正常使用客体的资源。基于身份的策略包括基于个人的策略和基于组的策略。基于个人的策略是指以用户为中心建立的一种策略,这种策略由一些列表组成,这些列表限定了针对特定的客体哪些用户可以实现何种策略操作行为。基于组的策略是基于个人的策略的发展与扩充,指一些用户被允许使用同样的访问控制规则访问同样的客体。
基于身份的安全策略有两种基本的实现方法:能力表和访问控制列表。这是按照被授权访问的信息为访问者所拥有还是被访问数据的一部分而区分的。
(2)基于规则的安全策略。
基于规则的安全策略中的授权通常依赖于敏感性。在一个安全系统中,数据或资源应该标注安全标记。代表用户进行活动的进程可以得到与其原发者相应的安全标记。
基于规则的安全策略在实现上,由系统通过比较用户的安全级别和客体资源的安全级别来判断是否允许用户进行访问。
3.安全策略的实施原则
安全策略的制定实施也是围绕主体、客体和安全控制规则及三者之间的关系展开的。
(1)最小特权原则。最小特权原则是指主体执行操作时,按照主体所需权力的最小化原则分配给主体权力。最小特权原则的优点是最大限度地限制了主体实施授权行为,可以避免来自突发事件、错误和未授权用主体的危险。也就是说,为了达到一定目的,主体必须执行一定操作,但他只能做他所被允许做的,其他除外。
(2)最小泄露原则。最小泄露原则是指主体执行任务时,按照主体所需要知道的信息最小化的原则分配给主体权力。
(3)多级安全策略。多级安全策略是指主体和客体间的数据流向和权限控制按照安全级别的绝密(TS)、秘密(S)、机密(C)、限制(R)和无级别(U)五级来划分。多级安全策略的优点是避免敏感信息的扩散。具有安全级别的信息资源,只有安全级别比它高的主体才能够访问。
5.5.2 安全级别与访问控制
1.安全级别介绍
安全级别有两个含义,一个是主客体信息资源的安全类别,分为有层次的安全级别(Hierarchical Classification)和无层次的安全级别;另一个是访问控制系统实现的安全级别,这和计算机系统的安全级别是一样的,分为四级,具体为D、C(C1、C2)、B(B1、B2、B3)和A四部分。
2.安全级别的内涵
(1)D级别。
D级别是最低的安全级别,对系统提供最小的安全防护。系统的访问控制没有限制,无须登录系统就可以访问数据,这个级别的系统包括DOS、Windows 98等。
(2)C级别。
C级别有两个子系统:C1和C2。
C1级称为选择性保护级,可以实现自主安全防护,对用户和数据的分离,保护或限制用户权限的传播。
C2级具有访问控制环境的权力,比C1级的访问控制划分得更为详细,能够实现受控安全保护、个人账户管理、审计和资源隔离。这个级别的系统包括UNIX、LINUX和Windows NT系统。
C级别属于自由选择性安全保护,在设计上有自我保护和审计功能,可对主体行为进行审计与约束。C级别的安全策略主要是自主存取控制,可以实现以下内容。
① 保护数据确保非授权用户无法访问。
② 对存取权限的传播进行控制。
③ 个人用户数据的安全管理。
C级别的用户必须提供身份证明(如口令机制)才能够正常实现访问控制,因此用户的操作与审计自动关联。C级别的审计能够针对实现访问控制的授权用户和非授权用户,建立、维护以及保护审计记录不被更改、破坏或受到非授权存取。这个级别的审计能够实现对所要审计的事件、事件发生的日期与时间、涉及的用户、事件类型、事件成功或失败等进行记录,同时能通过对个体的识别,有选择地审计任何一个或多个用户。C级别的一个重要特点是有对于审计生命周期保证的验证,这样可以检查是否有明显的旁路可绕过或欺骗系统,检查是否存在明显的漏路(违背对资源的隔离,造成对审计或验证数据的非法操作)。
(3)B级别。
B级别包括B1、B2和B3三个级别,B级别能够提供强制性安全保护和多级安全。强制防护是指定义及保持标记的完整性,信息资源的拥有者不具有更改自身的权限,系统数据完全处于访问控制管理的监督下。
B1级称为标识安全保护(Labeled Security Protection)。
B2级称为结构保护级别(Security Protection),要求访问控制的所有对象都有安全标签以实现低级别的用户不能访问敏感信息,对于设备、端口等也应标注安全级别。
B3级别称为安全域保护级别(Security Domain),这个级别使用安装硬件的方式来加强域的安全,如用内存管理硬件来防止无授权访问。B3级别可以实现以下内容。
① 引用监视器参与所有主体对客体的存取以保证不存在旁路。
② 审计跟踪能力强,可以提供系统恢复过程。
③ 支持安全管理员角色。
④ 用户终端必须通过可信任通道才能实现对系统的访问。
⑤ 防止篡改。
B级别可以实现自主存取控制和强制存取控制,通常的实现包括以下内容。
① 所有敏感标识控制下的主体和客体都有标识。
② 安全标识对普通用户是不可变更的。
③ 可以审计。
a.任何试图违反可读输出标记的行为。
b.授权用户提供的无标识数据的安全级别和与之相关的动作。
c.信道和I/O设备的安全级别的改变。
d.用户身份和与之相应的操作。
④ 维护认证数据和授权信息。
⑤ 通过控制独立地址空间来维护进程的隔离。
B级别应该保证以下内容。
① 在设计阶段,应该提供设计文档、源代码以及目标代码,以供分析和测试。
② 有明确的漏洞清除和补救缺陷的措施。
③ 无论是形式化的,还是非形式化的模型都能被证明该模型可以满足安全策略的需求。监控对象在不同安全环境下的移动过程(如两进程间的数据传递)。
(4)A级别。
A级别称为验证设计级(Verity Design),是目前最高的安全级别。在A级别中,安全的设计必须给出形式化设计说明和验证,需要有严格的数学推导过程,同时应该包含秘密信道和可信分布的分析,也就是说要保证系统的部件来源有安全保证,如对这些软件和硬件在生产、销售、运输中进行严密跟踪和严格的配置管理,以避免出现安全隐患。