3.3 访问控制模型
访问控制模型是确定应该允许谁访问哪些资源的一种方式。目前有许多种不同的访问控制模型。这里介绍的是最常见的访问控制模型,包括自主访问控制、强制访问控制、基于规则的访问控制、基于角色的访问控制、基于属性的访问控制和多级访问控制。
3.3.1 自主访问控制
在自主访问控制(Discretionary Access Control,DAC)模型中,资源的所有者确定谁可以访问资源,及其拥有的明确的访问等级。你可以看到,大多数操作系统能够执行自主访问控制。如果你决定在微软操作系统中创建网络共享,那么你能够控制其他人对系统的访问。
3.3.2 强制访问控制
在强制访问控制(Mandatory Access Control,MAC)模型中,资源的所有者不能决定谁可以访问资源。相反,不同的群组或个人有权设置对资源的访问权限。你经常可以发现在政府组织中执行强制访问控制。在这些组织中,访问资源很大程度上取决于该资源所使用的敏感标签(如机密或绝密),个人被允许访问的敏感信息等级(可能仅是机密),以及个人实际上是否需要访问资源(称为最小权限原则)。
最小权限原则
最小权限原则规定,你应该只给一方执行功能所需的最低访问等级。例如,组织销售部门的人员完成工作,应该无须访问组织人力资源系统中的数据。违反最小权限原则是当今许多安全问题的根源。
错误执行最小权限原则的最常见方式之一,是授予操作系统用户账户的权限。尤其是在微软操作系统中,你经常会发现临时用户正在文字处理器中创建文档和发送电子邮件,该用户被配置了管理访问权限,使其能够执行操作系统允许的任何任务。
正因为如此,每当超过权限的用户打开包含恶意软件或代码的电子邮件附件,或预定将攻击代码推送到客户端计算机的网站时,这些攻击就会肆无忌惮地控制系统。攻击者可以轻而易举地关闭反恶意软件工具,安装附加攻击工具,然后进一步完全破坏系统。
3.3.3 基于规则的访问控制
基于规则的访问控制(rule-based access control)允许根据系统管理员定义的一组规则进行访问。如果规则匹配,那么将相应地允许或拒绝对资源的访问。
路由器使用的ACL就是一个很好的示例。你可能会看到一个规则,允许端口C上从起点A到终点B的流量。两个设备之间的任何其他流量都将被拒绝。
3.3.4 基于角色的访问控制
基于角色的访问控制(Role-Based Access Control,RBAC)模型允许基于个人角色所授予的访问权限进行访问。如果一名员工的唯一角色是将数据输入应用程序中,那么基于角色的访问控制将强制你只允许该员工访问这个应用程序。
如果你的员工有一个更复杂的角色,可能是在线零售商的客服,可能需要其有权访问客户的支付状态和信息、发货状态、历史订单和退货信息。在这种情况下,基于角色的访问控制将授予其相当多的访问权限。你可以看到,在许多面向销售或客服的大型应用程序中执行基于角色的访问控制。
3.3.5 基于属性的访问控制
基于属性的访问控制(Attribute-Based Access Control,ABAC),是基于人员、资源或环境的特定属性。你经常会发现在基础设施系统上,如网络或电信环境中的基础设施系统上会执行这种模型。
主题属性属于个人。我们可以选择属性的任意数字,比如游乐场游乐设施中经典的“你必须这么高才能骑”的高度。主题属性的另一个常见示例是验证码(CAPTCHA),又称为“完全自动区分计算机和人类的图灵测试(Completely Automated Public Turing Tests to Tell Humans and Computers Apart)”(见图3-5)[2]。验证码控制访问基于另一端的一方是否能通过机器(理论上)难以完成的测试。
图3-5 旨在证实用户是人的验证码
资源属性属于资源,如操作系统或应用程序。你将经常看到由资源属性控制的访问,这通常基于技术原因而不是安全原因。一些软件只能在特定的操作系统上运行,而一些网站只能适用于某些浏览器。你可以通过要求某人使用特定的软件或协议进行通信,将这种类型的访问控制作为一种安全措施来运用。
环境属性基于环境条件实现访问控制。人们通常使用时间来控制对物理和逻辑资源的访问。大楼门禁通常只允许访客在营业时间进入。许多VPN连接都有时间限制,强制用户每24小时重新连接一次,以防止用户在删除连接的授权后依然保持连接。
3.3.6 多级访问控制
多级访问控制(multilevel access control)模型结合了本节讨论的几种访问控制模型。当简易的访问控制模型被认为不足以保护你控制访问的信息时,就可以使用多级访问控制。处理敏感数据的军事和政府组织经常使用多级访问控制模型对各种数据进行访问控制,从核机密到受保护的健康信息。下面你将了解其中一些模型。
1. Bell-LaPadula模型
Bell-LaPadula模型结合了自主访问控制和强制访问控制,并且主要关注相关资源的机密性,换句话说,确保未经授权的人无法读取。当你看到这两个模型同时执行时,强制访问控制优先于自主访问控制,而且自主访问控制在强制访问控制权限允许的访问范围内运行。
例如,你的一项资源被列为机密,一个用户拥有机密级许可;在强制访问模式下,用户将有权访问该资源。但是,在自主访问控制权限下,可能还有一层额外的强制访问控制,因此如果资源所有者未授予用户访问权限,即使拥有自主访问控制权,用户也无法访问。在Bell-LaPadula模型中,有两个安全规则定义了信息流入和流出资源的方式。[3]
·简单安全规则。授予个人的访问等级必须至少与资源的等级一样高,个人才能访问。换句话说,个人不能读取较高等级的资源,但可以读取较低等级的资源。
·*属性(或星属性)。任何访问资源的人都只能将其内容写入(或复制)到同一等级或更高等级的另一个资源中。
你可以将这些属性分别总结为“不向上读”和“不向下写”,如图3-6所示。
图3-6 Bell-LaPadula模型
简而言之,这意味着当你处理机密信息时,你不能读取高于你许可等级的任何内容,也不能将机密数据写入任何更低等级的内容中。
2. Biba模型
Biba访问控制模型主要关注保护数据的完整性,甚至以牺牲机密性为代价。这意味着阻止人们修改数据比不让人们查看数据更为重要。该模型有两个安全规则,与Bell-LaPadula模型中讨论的规则完全相反。[4]
·简单完整性规则。授予个人的访问等级必须高于资源的等级。换句话说,对一个等级的访问不会授予对较低等级的访问权限。
·*完整性规则(或星完整性规则)。任何访问资源的个体都只能将其内容写入同一等级或更低等级的资源。
我们可以将这些规则分别概括为“不向下读”和“不向上写”,如图3-7所示。这意味着将严格区分高完整性资产(意味着不能被更改)和低完整性资产。
当涉及信息保护时,这似乎完全违反直觉。但这些规则通过确保你的资源只能由具有高等级访问权限的用户写入,但其不能访问等级较低的资源,从而保护数据的完整性。假设一个组织同时执行低完整性进程和高完整性进程,前者收集用户上传的(可能是恶意的)PDF,后者扫描来自高机密等级系统的文档。在Biba模型中,上传进程无法将数据发送到扫描进程,因此无法破坏机密输入。最重要的是,即使指向扫描进程,也无法访问低等级数据。
图3-7 Biba模型
3. Brewer&Nash模型
Brewer&Nash模型也称为Chinese Wall模型,是一种旨在防止利益冲突的访问控制模式。Brewer&Nash模型通常用于处理敏感数据的行业,如金融、医疗或法律行业。该模型考虑了三个主要的资源类别。[5]
·对象:属于单个组织的资源,如文件或信息。
·公司组:属于组织的所有对象。
·冲突类:与竞争方有关的所有对象组。
代表某一行业公司的商业律师事务所可能拥有与各种相互竞争的个人和公司有关的档案。律师事务所的个体律师能够访问不同客户的文件,这就导致其可能访问到会产生利益冲突的机密数据。在Brewer&Nash模型中,律师能够访问资源和案件材料的等级将根据之前访问的材料而动态变化(见图3-8)。
图3-8 Brewer&Nash模型
在示例中,律师查看客户A的案件材料后,将不能够访问客户B的信息或任何与当前客户存在竞争的其他方的信息,以解决利益冲突。