5.3 访问控制的授权与审计
5.3.1 授权行为
授权是资源的所有者或者控制者准许他人访问这种资源,这是实现访问控制的前提。对于简单的个体和不太复杂的群体,我们可以考虑基于个人和组的授权,即便是这种实现,管理起来也有可能是困难的。当我们面临的对象是一个大型跨国集团时,如何通过正常的授权以保证合法的用户使用公司公布的资源,而不合法的用户不能得到访问控制的权限,这是一个复杂的问题。
授权是指客体授予主体一定的权力,通过这种权力,主体可以对客体执行某种行为,如登录、查看文件、修改数据、管理账户等。授权行为是指主体履行被客体授予权力的那些活动。因此,访问控制与授权密不可分。授权表示的是一种信任关系,需要建立一种模型对这种关系进行描述。
5.3.2 信任模型
信任模型(Trust Model)是指建立和管理信任关系的框架。信任关系是这样一种情形,如果主体能够符合客体所假定的期望值,那么称客体对主体是信任的。信任关系可以使用期望值来衡量,我们用信任度表示。主客体间建立信任关系的范畴称为信任域,也就是主客体和信任关系的范畴集合,信任域是服从于一组公共策略的系统集。
信任模型有3种基本类型:层次信任模型、对等信任模型和网状信任模型。
1.层次信任模型
层次信任模型是实现最简单的模型,使用也最为广泛。建立层次信任模型的基础是所有的信任用户都有一个可信任根。例如,我们通常所说的根管理员,事实上就是处于根的位置,所有的信任关系都基于根来产生。
层次信任关系是一种链式的信任关系,如可信任实体Leaf CA可以表示为这样一个信任链:(Root CA, Intermediate CA, Leaf CA),说明可以由Leaf CA向上回溯到产生它的信任根Root CA。这种链式的信任关系我们称为信任链。层次信任模型是一种双向信任的模型,假设Leaf Ai和Leaf Bj是要建立信任关系的双方,Leaf Ai和Leaf Bj间的信任关系很容易建立,因为它们都基于可信任根Root CA。层次信任模型对应于层状结构,有一个根节点Root CA作为信任的起点,也就是信任源。这种建立信任关系的起点或是依赖点我们称为信任锚。信任源负责下属的信任管理,下属再负责下面一层的信任管理,如图5-15所示,这种管理方向是不可逆的。
图5-15 下属层次信任模型
这个模型的信任路径是简单的,从根节点到叶子节点的通路构成了简单唯一的信任路径。层次信任模型的优点在于结构简单、管理方便、易于实现;缺点是Leaf Ai和Leaf Xk的信任关系必须通过根来实现,而可信任根Root CA是默认的,无法通过相互关系来验证信任,一旦信任根出现问题,那么信任的整个链路就被破坏了。现实世界中,往往建立一个统一信任的根是困难的。对于不在一个信任域中的两个实体如何来建立信任关系?这用一个统一的层次信任模型来实现需要在建立信任的框架中预留有未来的发展余量,而且必须强迫信任域中的各方都统一信任可信任根Root CA。
层次信任模型适用于孤立的、层状的企业,对于有组织边界交叉的企业,要应用这种模型是很困难的。另外,在层次信任模型的内部必须保持相同的管理策略。层次信任模型主要使用在以下3种环境。
(1)严格的层次结构。
(2)分层管理的PKI商务环境。
(3)保密性增强邮件(Privacy-Enhanced Mail, PEM)环境。
2.对等信任模型
对等信任模型是指两个或两个以上对等的信任域间建立的信任关系。对等信任模型的示意图如图5-16所示。相对而言,对等信任关系灵活一些,它可以解决任意已经建立信任关系的两个信任模型之间的交互信任。不同信任域的Engineering CA和Marketing CA之间的信任关系要通过对等信任域Root CA1和Root CA2的相互认证才能实现,因此这种信任关系在PKI领域中又叫作交叉认证。建立交叉认证的两个实体间是对等的关系,因为他们既是被验证的主体,又是进行验证的客体。对等信任模型不会建立在信任域以外,这是因为如果任意两个主客体都建立对等信任,那么对于n个主客体而言,需要建立n×(n-1)/2个信任链。
图5-16 点到点的对等交叉认证
对等信任模型非常适合表示动态变化的信任组织结构,这样,引入一个可信任域是易于实现的。但是在构建有效的认证路径时,也就是说,假定Engineering CA和Marketing CA是建立信任的双方,那么,很难在整个信任域中确定Root CA2是否是Marketing CA的最适当的信任源。
3.网状信任模型
网状信任模型可以看成是对等信任模型的扩充。我们没有必要在任意两个对等的信任域建立交叉认证,完全可以通过建立一个网络拓扑结构的信任模型来实现,也就是建立信任域间的间接信任关系。网状信任模型的示例如图5-17所示。假设图中CA是不同的信任域,他们之间的信任关系用实线箭头表示,那么位于相同信任域下的主体间可以建立的信任链通过图中的虚线来表示。
图5-17 网状交叉认证信任模型
首先,建立一个恰当合理的信任网络模型比我们想象的要复杂得多。我们曾经探讨过安全标签列表的实现,这是引入安全级别和考虑保护敏感信息的必然。同样,在建立的对等或非对等的信任集合中,很难想象一个安全级别低(如C级别)的信任域和一个安全级别高(如S级别)的信任域,在他们中间建立的信任模型是什么样子的。因为对整个信任域的信任链的可信程度很难不令人质疑,S级别可能需要通过使用智能卡才能通过访问控制最初的验证,而C级别也许只是进行简单的IP地址检验就可以任意访问客体的信息资源。在建立信任模型、实现访问控制的过程中,不但要选择合适的信任模型,保护客体的资源,而且应该避免主体的信息资源暴露在攻击和危险的情况下。这种情况下,主客体信息的交换有时候更多地依赖于可信第三方。另外,网络资源和时限也是一个问题,尽管主体间有多条信任链可以实现,但我们总是希望耗用最少的时间,也就是说,走最短的路径,那么,怎样来计算这条路径也是一个困难的问题。
其次,跨越多个可信域根建立的漫长的非层状的信任路径被认为是不可信的,显然在这样的信任关系实现上,构造合理的信任路径和检验适当的信任锚都是巨大的挑战。因为我们不得不对不同的信任锚进行验证,不得不要建立一个从被信任发起方开始到信任到达者所在信任域的完整的信任路径,每一个验证者还需要建立自己到信任锚的路径。同时,信任路径中的封闭环路一定要检测出来并丢弃掉,对可能存在的多条路径也要进行过滤和优先级的设置。
5.3.3 信任管理系统
阐述信任模型很容易产生一个问题,这就是在实际中是由谁管理信任?如果我们就是信任中的主体,我们凭什么信任他们?这就是信任管理需要解决的问题。
信任管理的产生是一个漫长而复杂的过程,这和企业的发展与市场的制约有很大关系。现代企业有向大型化、集团化发展的趋势,一个企业往往包括多个职能部门,分别完成生产、管理、结算等功能,而这些职能部门又可划分为多个各司其职的更小的部门,与此同时企业内部的职能划分越来越细,独立运作能力也越来越强,可以独立和别的企业的相应或相关职能部门进行交易,所以在现实的商业运作中企业内部的多级管理和企业间的无级别贸易是并存的。这种关系必然反映在信任管理中,怎么来实现和约束正确的信任关系来访问资源和进行交易,建立相应的信任关系。目前,层次信任模型的建立和管理在一定的信任域内建立是正常的,但在信任域间的交叉认证和混合多级信任模型方面,还没有就信任管理达成一致。
信任管理包含了两个方面,一是对于信任链的维护与管理,二是对信任域间信任关系的管理与维护。用户是信任的主要参与者,因此用户有必要对信任链加以管理,也就是说应该由他自己来判断该相信谁和该相信什么。信任域的管理通常由认证机构来负责。
5.3.4 审计跟踪概述
审计是对访问控制的必要补充,是访问控制的一个重要内容。审计会对用户使用何种信息资源、使用的时间及如何使用(执行何种操作)进行记录与监控。审计和监控是实现系统安全的最后一道防线,处于系统的最高层。审计与监控能够再现原有的进程和问题,这对于责任追查和数据恢复非常有必要。
审计跟踪是系统活动的流水记录。该记录按事件自始至终的途径,顺序检查、审查和检验每个事件的环境及活动。审计跟踪通过书面方式提供应负责任人员的活动证据以支持访问控制职能的实现(职能是指记录系统活动并可以跟踪到对这些活动应负责任人员的能力)。审计跟踪记录系统活动和用户活动。系统活动包括操作系统和应用程序进程的活动;用户活动包括用户在操作系统中和应用程序中的活动。通过借助适当的工具和规程,审计跟踪可以发现违反安全策略的活动、影响运行效率的问题以及程序中的错误。审计跟踪不但有助于帮助系统管理员确保系统及其资源免遭非法授权用户的侵害,还能提供对数据恢复的帮助。
5.3.5 审计内容
审计跟踪可以实现多种安全相关目标,包括个人职能、事件重建、入侵检测和故障分析。
(1)个人职能(individual accountability)。审计跟踪是管理人员用来维护个人职能的技术手段。如果用户知道他们的行为活动被记录在审计日志中,相应的人员需要为自己的行为负责,他们就不太会违反安全策略和绕过安全控制措施。例如,审计跟踪可以记录改动前和改动后的记录,以确定是哪个操作者在什么时候做了哪些实际的改动,这可以帮助管理层确定错误到底是由用户、操作系统、应用软件还是由其他因素造成的。允许用户访问特定资源意味着用户要通过访问控制和授权实现他们的访问,被授权的访问有可能会被滥用,导致敏感信息的扩散,当无法阻止用户通过其合法身份访问资源时,审计跟踪就能发挥作用。审计跟踪可以用于检查和检测他们的活动。
(2)事件重建(reconstruction of events)。在发生故障后,审计跟踪可以用于重建事件和数据恢复。通过审查系统活动的审计跟踪可以比较容易地评估故障损失,确定故障发生的时间、原因和过程。通过对审计跟踪的分析就可以重建系统和协助恢复数据文件;同时,还有可能避免下次发生此类故障的情况。
(3)入侵检测(intrusion detection)。审计跟踪记录可以用来协助入侵检测工作。如果将审计的每一笔记录都进行上下文分析,就可以实时发现或者过后预防入侵检测活动。实时入侵检测可以及时发现非法授权者对系统的非法访问,也可以探测到病毒扩散和网络攻击。
(4)故障分析(problem analysis)。