《零信任网络:在不可信网络中构建安全系统》:作者Evan Gilman和Doug Barth,译者奇安信身份安全实验室。本书介绍了零信任模型,该模型认为整个网络无论内外都是不安全的,“可信”内网中的主机面临的安全威胁与互联网上的主机别无二致。本书主要展示了零信任如何让读者专注于构建强大的身份认证和加密,同时提供分区访问和更好的操作敏捷性。通过阅读本书,读者将了解零信任网络的架构,包括如何使用当前可用的技术构建一个架构。

安全内参将在近期对本书部分内容进行连载,上周的连载整体上介绍了什么是零信任网络,本周将介绍零信任网络中的一个重要功能:信任管理。


信任管理是零信任网络的一个重要功能。人们对信任这个概念并不陌生,比如,你会信任自己的家人,但不会信任大街上的陌生人,当然更不可能信任面露凶相的陌生人。

在某些情况下,人们甚至可能连自己都无法完全信任,但是至少可以确信所采取的行动的确是自己所为。因此,零信任网络中的信任往往源自系统管理员。“零信任网络中的信任”这句话听上去似乎有些自相矛盾,但是理解这一点却非常重要:如果不存在与生俱来的信任,那么就必须从某个地方产生信任并小心地管理它。

这里还有一个小问题:系统管理员并不是总能有机会进行授权和授予信任!另外,当用户数量急剧增多时,信任管理的工作量会非常大,而系统管理员的数量却不可能无限制地随之增加。这个问题有成熟的解决方案,那就是信任委托,即管理员信任某个特定的系统,这个系统又可以信任另一个系统,从而形成信任链。如图2-1所示。

图2-1 信任链的产生

信任委托非常重要。借助信任委托,人们可以构建自动化系统,在无须人为干预的情况下,以安全可信的方式管理大规模增长的零信任网络。首先,系统管理员是可信的,然后他必须为系统赋予一定程度的信任,使该系统能够以管理员的身份执行后续动作。

身份与强认证

如果没有办法把物理世界中的人与其数字世界中的身份联系起来,那么无论采用什么方法都无法真正建立对一个人身份的信任。人类可以使用多种感官系统的组合来判断面前的这个人是否就是他们所认为的那个人,事实证明,人类多种感官的组合很难被欺骗。

然而,计算机系统就没那么幸运了。计算机场景下的身份认证更像是通过电话与某人交谈。你可以听到他的声音,可以看到他的来电号码,可以问他问题……但是,却看不到他本身。这就是很大的挑战:应该用什么办法来判断电话线路另一端的人(或系统)的确就是他所声称的那个人(或系统)?

通常情况下,管理员采用检查远程系统的IP地址,并要求对方输入口令的方式来完成身份认证。但是在零信任网络中,仅仅采用这些方法进行身份认证是远远不够的。因为零信任网络中的攻击者能够使用任意IP地址进行通信,还能够将自己置于两台远程通信的计算机之间发起中间人攻击。因此,零信任网络中的每个访问请求都需要经过强身份认证。

目前,应用较广泛的身份认证机制是安全工程师们都非常熟悉的X.509标准。该标准定义了数字证书的标准格式,并能够通过信任链认证身份。X.509证书是TLS协议(以前是SSL协议)用来验证连接的主要机制。

大多数TLS应用实例仅配置了单向身份认证,即只是由客户端验证所访问的资源是否可信,但是被访问的资源没有验证客户端是否可信,这种配置在零信任网络场景下来说存在明显的问题。

X.509证书使用两个密钥:公钥和私钥。公钥需要被公布出去,私钥则被严格保密。使用公钥加密的数据,可以用私钥解密,反之亦然,如图2-2所示。通过正确解密由众所周知(且可验证)的公钥加密的数据片段,人们可以证明其拥有正确的私钥,就能够在不暴露秘密的情况下验证身份。

图2-2 Bob使用Alice的公钥加密消息,只有Alice能够解密

基于证书的身份认证机制可以让通信双方确信对方拥有正确的私钥,并且可以确信攻击者通过搭线窃听的方法无法窃取并重用密钥。但该机制仍然依赖于一个秘密,而这个秘密可能会被窃取。通过网络搭线窃听这种方式虽然行不通了,但是攻击者仍然可以使用恶意软件感染或物理接触的方式窃取这个秘密。

也就是说,虽然身份凭据的合法性可以得到验证,但是其机密性无法得到保证。因此,实践中最好使用存储在不同位置的多个秘密,根据这些秘密的组合授予访问权限。在这种情形下,攻击者必须窃取多个秘密才能完成攻击,这增加了攻击的难度。

虽然组合使用多个秘密的方式有助于防止未授权的访问,但是仍然存在所有秘密都被窃取的风险。因此,所有身份认证凭据都应当有时间限制。为身份认证凭据设定有效期限,不仅能够最大限度地缩减凭据泄露或密钥被盗的影响范围,还可以给管理员更新密钥和重建信任创造更多的机会,争取更多的时间。管理员更改或更新密钥/口令的行为被称为凭据轮换(Credential Rotation)。

凭据轮换机制能够有效防止秘密失窃,并在发生秘密失窃事件时及时将其注销,避免更大的损失。人们应当尽可能避免使用难以轮换或者轮换成本很高的身份认证凭据,如硬件令牌/口令等,特别是新建的系统,应当在系统设计早期就考虑到这个因素。身份认证凭据的轮换频率通常与轮换所需的成本成反比。

最小特权原则

除了设定有效使用期限外,最小特权原则同样值得重点关注。

最小特权原则是指一个实体应该只被授予完成任务所需要的特权,而不是被授予该实体想要得到的权限。最小特权原则能够极大降低用户或应用程序滥用权限的可能性。

对应用程序来说,最小特权通常意味着其运行在服务账号、容器或“监狱”(Jail)中;对用户来说,最小特权通常表现为“只有工程师才能访问源代码”这样的安全策略;终端设备也同样需要考虑最小特权原则,但通常情况下终端设备采用与用户或应用程序相同的策略。

最小特权原则还有另外一个作用:如果确实需要更高的访问权限,那么用户可以并且只能在需要的时候获得这些特权。因此,只有清楚地了解了每项操作所需的特权,才能恰当地给用户授权。这种做法比简单的访问控制机制前进了一步。

零信任网络的情形类似,用户在大多数情况下以最小特权模式访问网络资源,只在需要执行敏感操作时才提升权限。例如,经过身份认证的用户可以自由地访问公司的目录或使用项目计划软件。但是,如果用户要访问关键的生产系统,那么就需要采用额外的手段确认该用户的身份,确保该用户的系统没有被攻陷。对于风险相对较低的操作,特权提升过程可以很简单,只需重新提示用户输入口令、要求出示双因素认证令牌或者给用户的手机推送认证通知。对于高风险的操作,可以选择通过带外方式要求相关人员进行主动确认。

对于特别敏感的操作,管理员可能需要让相关人员积极参与,人工主动验证该操作权限的合法性。强制性关联身份认证的过程和现实世界是个不错的办法,这能够避免已被攻陷的系统干扰正常的操作。但是人工参与认证付出的代价比较大,需谨慎使用,而且使用得太频繁也会失去效用

除了用户,零信任网络也应当为应用程序和终端设备配置最小特权。

零信任网络中的特权比传统网络更具有动态性。传统网络中的安全策略往往是静态的,如果遇到需要更高特权的情形,特权的请求者通常需要说服系统管理员变更安全策略,或者请求系统管理员代替他们执行操作,后一种做法更普遍。静态安全策略存在两个问题。首先,在管理相对宽松的组织中,特权数量会随着时间的推移而逐渐增长,最终导致最小特权原则失效。其次,无论组织的管理是宽松还是严格,系统管理员都被赋予了更高的访问权限,这会导致其成为攻击者实施网络钓鱼攻击的主要目标。

与传统网络使用的静态安全策略不同,零信任网络依靠网络活动的诸多属性来分析当前访问请求的风险。这些属性可以是时间属性(例如某用户在正常活动时间窗口之外的访问请求更加可疑)、空间属性(例如某用户从与上次访问不同的地理位置发起访问请求),甚至行为属性(例如某用户试图访问通常情况下不应该访问的资源)。把访问请求的这些细节纳入考虑和分析范围,就能够对访问请求做出细粒度的授权判定。例如,用户在正常工作时间从其正常地理位置访问数据库的请求应该被授权,但是从新的地理位置或者在非工作时间访问数据库的请求则被要求使用多因子身份认证。

基于网络活动的风险分析主动调整访问权限的能力是零信任网络的安全特性之一。通过动态调整安全策略和访问权限,零信任网络能够积极应对已知和未知的恶意攻击。

可变的信任

定义信任策略这项工作通常由安全工程师手工完成。云上的系统或许可以管理策略,但是这些策略只提供初级的用户权限区隔(如超级用户、管理员和普通用户),很难满足高级用户的需求。由于安全策略的定义和维护都比较困难,因此试图变更现有安全策略的请求会遇到阻力。另外,安全策略变更之后导致的影响范围也同样很难界定,于是系统管理员对策略的变更非常谨慎。这种现状一定会让最终用户感到沮丧,也使得系统管理员面对大量策略变更请求不堪重负。

权限分配通常也是手工作业,系统管理员根据用户在组织中的职责为其分配相应的权限。这种基于角色的策略系统导致管理员不得不制造出许多信任池(pool of trust),从而削弱了网络的整体安全态势。这些信任池也为黑客们创造了一个“猎杀系统管理员”的市场,他们四处寻找并试图攻陷系统管理员的权限。安全网络的黄金标准或许应该是这样的:根本就不存在高特权的系统管理员!

信任池问题凸显了传统网络信任管理的根本性缺陷:安全策略动态性不足,无法应对日益变化的网络安全威胁。安全成熟度比较高的组织会针对网络活动部署审计设备,执行审计流程,但是审计工作的执行频率往往不高,而且坦率地说,网络活动的审计工作非常乏味,以至于没人愿意认真做好这件事。另外,行为恶劣的管理员对网络造成的损害是巨大的,试图通过审计流程发现并减轻影响往往为时已晚。因此,需要重新思考网络参与者的信任关系,意识到网络参与者的信任是基于参与者过去和当前的行为而不断变化的。

根据参与者的行为来确定其可信度,这种信任模式并不是新鲜事物,信用卡代理机构许多年以前就已经开始提供这项服务了。信用卡代理机构不再要求零售商、金融机构甚至雇主独立定义和确定一个人的可信度,而是对一个人在现实世界中的行为进行度量和评分,从而确定这个人的可信度,然后,消费机构就可以根据其信用评分来决定给予此人多少信用。在申请按揭抵押贷款时,信用评分较高的人将获得更优惠的利率。企业雇主也可以把一个人的信用评分作为是否录用的决策参考依据。以具体个案为基础进行分析,信用评分依赖的这些因素会让人觉得有些随意和模糊,但正是这种模糊性发挥了重要作用:在这种评分机制下,安全策略的定义不仅基于确定性的描述,还要基于不断变化的度量分值,这为系统提供了一种防御任意威胁的机制。

零信任网络基于上述认识和理解定义信任,如图2-3所示。零信任网络不再给网络参与者定义和分配基于二元决策的策略,而是持续监视参与者的网络活动,并据此持续更新其信任评分,然后使用这个评分作为授权策略判定的依据之一如图2-4所示。

图2-3 信任评分机制

图2-4 信任引擎计算信任评分并生成网络代理

客户端以不可信的方式开始访问会话请求,并在访问过程中通过各种机制不断积累信任,直到积累的信任足够获得系统的访问权限。例如,用户通过强认证能够证明所使用的终端设备属于公司,这可能积累了一些信任,但不足以获得账单系统的访问权限。接下来,用户提供了正确的RSA令牌,就可以积累更多的信任。最后,设备认证和用户认证相结合计算出的信任评分满足要求,用户就可以获得账单系统的访问权限了。

基于信任评分的策略模型也不是没有缺点。其中一个问题是,单一的评分值是否足以保护所有的敏感资源。用户的信任评分能够基于历史行为而降低,同样也可以基于历史的可信行为而增加。那么,攻击者是否有可能通过在系统中慢慢建立信任,从而获得更高的访问权限呢?

如果考虑到组织的审计人员通过定期的网络审计有机会发现入侵者,那么只要延长用户积累信任所需的“正常”行为的时间,就能够延缓攻击者积累信任的进度,从而缓解这种威胁。另外一种方法是把敏感操作的若干条信息公布给控制平面,配置成只有可信位置的可信用户才能够访问。通过信任评分与设备和应用程序元数据的绑定,能够实现灵活的策略机制,既可以显式描述确定性的授权策略,又可以通过计算信任评分的方式应对未知的威胁。

安全策略和用户组织角色之间的解耦可能会给最终用户带来一定的困扰。比如,用户从咖啡馆访问敏感资源的请求被拒绝,但是从家里访问就不会被拒绝,系统应该如何与用户沟通这种差别呢?是否应该对用户提出越来越严格的身份认证要求?在积累更多的信任、获得更高的访问权限之前,是否应该要求新用户在较低的访问权限下工作一段时间?用户携带出现故障的终端设备来到技术支持办公室进行维修,是否应该给这个用户增加额外的信任?以上所有这些问题都是需要考虑的重点,不同的零信任网络解决这类问题的方法也是不同的。

译者简介

奇安信身份安全实验室,是奇安信集团下属专注“零信任身份安全架构”研究的专业实验室。奇安信集团作为中国人员规模最大的网络安全公司,拥有超过6400名员工,产品已覆盖90%以上的中央政府部门、中央企业和大型银行,2016-2018年三年的营业收入的年复合增长率超过90%,增长速度创国内记录。实验室以“零信任安全,新身份边界”为技术思想,推出“以身份为中心、业务安全访问、持续信任评估、动态访问控制”为核心的奇安信零信任身份安全解决方案。

声明:本文来自安全内参,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。