书名:零信任网络:在不可信网络中构建安全系统
ISBN:978-7-115-51002-0
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
著 [美] 埃文•吉尔曼(Evan Gilman)
[美] 道格•巴斯(Doug Barth)
译 奇安信身份安全实验室
责任编辑 陈聪聪
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
Copyright ©2018 by O’Reilly Media, Inc.
Simplified Chinese Edition, jointly published by O’Reilly Media, Inc. and Posts & Telecom Press, 2018. Authorized translation of the English edition, 2018 O’Reilly Media, Inc., the owner of all rights to publish and sell the same.
All rights reserved including the rights of reproduction in whole or in part in any form.
本书中文简体版由O’Reilly Media, Inc.授权人民邮电出版社出版。未经出版者书面许可,对本书的任何部分不得以任何方式复制或抄袭。
版权所有,侵权必究。
本书分为10章,从介绍零信任的基本概念开始,描述了管理信任,网络代理,授权,建立设备信任、用户信任、应用信任以及流量信任,零信任网络的实现和攻击者视图等内容。本书主要展示了零信任如何让读者专注于构建强大的身份认证、授权和加密,同时提供分区访问和更好的操作敏捷性。通过阅读本书,读者将了解零信任网络的架构,包括如何使用当前可用的技术构建一个架构。
本书适合网络工程师、安全工程师、CTO以及对零信任技术感兴趣的读者阅读。
O’Reilly Media通过图书、杂志、在线服务、调查研究和会议等方式传播创新知识。自1978年开始,O’Reilly一直都是前沿发展的见证者和推动者。超级极客们正在开创着未来,而我们关注真正重要的技术趋势——通过放大那些“细微的信号”来刺激社会对新科技的应用。作为技术社区中活跃的参与者,O’Reilly的发展充满了对创新的倡导、创造和发扬光大。
O’Reilly为软件开发人员带来革命性的“动物书”;创建第一个商业网站(GNN);组织了影响深远的开放源代码峰会,以至于开源软件运动以此命名;创立了《Make》杂志,从而成为DIY革命的主要先锋;公司一如既往地通过多种形式缔结信息与人的纽带。O’Reilly的会议和峰会集聚了众多超级极客和高瞻远瞩的商业领袖,共同描绘出开创新产业的革命性思想。作为技术人士获取信息的选择,O’Reilly现在还将先锋专家的知识传递给普通的计算机用户。无论是通过书籍出版、在线服务或者面授课程,每一项O’Reilly的产品都反映了公司不可动摇的理念——信息是激发创新的力量。
“O’Reilly Radar博客有口皆碑。”
——Wired
“O’Reilly凭借一系列(真希望当初我也想到了)非凡想法建立了数百万美元的业务。”
——Business 2.0
“O’Reilly Conference是聚集关键思想领袖的绝对典范。”
——CRN
“一本O’Reilly的书就代表一个有用、有前途、需要学习的主题。”
——Irish Times
“Tim是位特立独行的商人,他不光放眼于最长远、最广阔的视野并且切实地按照Yogi Berra的建议去做了:‘如果你在路上遇到岔路口,走小路(岔路)。’回顾过去Tim似乎每一次都选择了小路,而且有几次都是一闪即逝的机会,尽管大路也不错。”
——Linux Journal
奇安信身份安全实验室是奇安信集团下属的专注于“零信任身份安全架构”研究的专业实验室。该团队以“零信任安全,新身份边界”为技术思想,探索“企业物理边界正在瓦解、传统边界防护措施正在失效”这一时代背景下的新型安全体系架构,推出“以身份为中心、业务安全访问、持续信任评估、动态访问控制”为核心的奇安信天鉴零信任身份安全解决方案。该团队结合行业现状,大力投入对零信任安全架构的研究和产品标准化,积极推动“零信任身份安全架构”在业界的落地实践,其方案已经在部委、央企等得到广泛的落地实施,得到市场和业界的高度认可。同时,为帮助广大读者和技术爱好者更好地理解零信任安全架构及技术体系,奇安信身份安全实验室同步在线上成立零信任安全社区 (微信ID:izerotrust),将定期分享和推送“零信任身份安全架构”在业界的研究和落地实践,欢迎广大读者和业界人士关注。
“零信任安全社区”公众号二维码
零信任(或零信任网络、零信任模型等)这个概念最早是由John Kindervag于2010年提出的,他当时是Forrester的分析师。John Kindervag非常敏锐地发现传统的基于边界的网络安全架构存在缺陷,通常被认为“可信”的内部网络充满威胁,“信任”被过度滥用,并指出“信任是安全的致命弱点”。因此,他创造出了零信任(Zero Trust)这个概念。“从来不信任,始终在校验”(Never Trust,Always Verify)是零信任的核心思想。
传统的网络安全架构基于网络边界防护。企业构建网络安全体系时,首先把网络划分为外网、内网和DMZ区等不同的安全区域,然后在网络边界上通过部署防火墙、WAF和IPS等网络安全技术手段进行重重防护,构筑企业业务的数字护城河。这种网络安全架构假设或默认了内网比外网更安全,在某种程度上预设了对内网中的人、设备、系统和应用的信任,从而忽视内网安全措施的加强。美国Verizon公司的《2017年数据泄露调查报告》指出,造成企业数据泄露的原因主要有两类:一是外部攻击,二是内部威胁。随着网络攻防技术的发展,新型的网络攻击手段层出不穷,攻击者面对层层设防的网络边界,往往会放弃代价高昂的强攻手段,转而针对企业内部网络中的计算机,采用钓鱼邮件、水坑攻击等方法渗透到企业网络内部,轻松绕过网络边界安全防护措施。由于人们往往认为内网是可信任的,因此攻击者一旦突破企业的网络安全边界进入内网,就会如入无人之境。此外,企业员工、外包人员等内部用户通常拥有特定业务和数据的合法访问权限,一旦出现凭证丢失、权限滥用或恶意非授权访问等问题,同样会导致企业的数据泄露。
基于这样的认知,零信任针对传统边界安全架构思想重新进行了评估和审视,并对安全架构思路给出了新的建议:默认情况下不应该信任网络内部和外部的任何人、设备、系统和应用,而是应该基于认证和授权重构访问控制的信任基础,并且这种授权和信任不是静态的,它需要基于对访问主体的风险度量进行动态调整。
零信任对网络安全架构进行了范式上的颠覆,引导安全体系架构从网络中心化走向身份中心化,其本质诉求是以身份为中心进行细粒度的自适应访问控制。零信任所依赖的身份认证与访问控制能力通常由身份与访问管理系统(IAM)提供,现代身份管理技术是零信任安全的技术根基,因此,从技术方案层面来看,零信任是借助现代身份管理技术实现对人、设备、系统和应用的全面、动态、智能的访问控制。
客观地说,John Kindervag提出零信任架构的开始几年,这一理念并没有获得网络安全行业的普遍关注,只是在一些社区有着小范围的讨论和实践,本书的作者Evan Gilman和Doug Barth就是早期实践者之一。然而,2015年前后,情况发生了明显的变化。层出不穷的高级威胁和内部风险,以及监管机构对企业网络安全的监督力度逐渐加强,使得零信任架构变革的外部驱动力越来越强。随着企业数字化转型的逐渐深入,以云计算、微服务、大数据、移动计算为代表的新一代信息化建设浪潮愈演愈烈,IT基础设施的技术架构发生了剧烈的变革,导致传统的内外网络边界变得模糊,很难找到物理上的网络安全边界,企业自然无法基于传统的边界安全架构理念构筑安全基础设施。安全架构如果不能随需应变,自然会成为木桶最短的那块木板,零信任架构变革的内生驱动力也在持续加强。
2017年,Google对外宣布其基于零信任架构实践的新一代企业网络安全架构——BeyondCorp项目成功完成,为零信任在大型、新型企业网络的实践提供了参考架构。这一最佳实践成为零信任理念的助推剂,各大安全厂商、分析机构和大型企业快速跟进,对零信任的推广和宣传也持续升温,在RSAC 2019展会上达到高潮,零信任俨然成为网络安全界的新宠。
当然,任何一种新生事物都难免受到人们的质疑,零信任架构也不例外。在过去一年多时间推广和实践零信任的过程中,我们遇到最多的质疑是,零信任听起来并没有什么新技术,是不是“新瓶装旧酒”?的确,零信任是一种全新的安全架构,但其核心组件基于身份与访问管理技术、终端设备环境风险评估技术、基于属性的访问控制模型、基于机器学习的身份分析技术等构建,听上去并没有太多激动人心的新技术。并且,零信任的最佳实践反倒是推荐使用现有的成熟技术,根据具体的应用场景,按照全新的逻辑进行组合,就能起到完全不同的安全效果。
我们认为零信任的创新和价值恰恰不在于具体的组件技术本身,而在于架构理念和安全逻辑层面。零信任架构与传统的边界安全架构、传统的安全防护理念最大的不同之处在于以下几点。第一,在网络安全边界瓦解、攻击面难以穷尽的情形下,与传统的安全理念不同,零信任架构引导人们更加关注“保护面”而不是“攻击面”。首先识别需要重点保护的资源对象,然后穷举分析该资源对象的访问路径,最后采用恰当的技术手段做好每条路径的访问控制措施。第二,零信任架构认为网络是不可信任的,因此不再寄希望于在传统的网络层面增强防护措施,而是把防护措施建立在应用层面,构建从访问主体到客体之间端到端的、最小授权的业务应用动态访问控制机制,极大地收缩了攻击面;采用智能身份分析技术,提升了内外部攻击和身份欺诈的发现和响应能力。第三,零信任架构在实践机制上拥抱灰度哲学,以安全与易用平衡的持续认证改进固化的一次性强认证,以基于风险和信任持续度量的动态授权替代简单的二值判定静态授权,以开放智能的身份治理优化封闭僵化的身份管理。因此,灰度哲学是零信任安全的内生逻辑,也是零信任安全实践的指导原则。
零信任是一种全新的安全理念,它并不是严格定义的技术术语,这个概念的内涵和外延仍然处于变化之中。我们也不认为本书是一本零信任的教科书或者“圣经”,本书作者为我们揭示了零信任的基本概念和体系架构,并且通过实例介绍了如何利用现有的技术逐步构建一个零信任网络。我们希望通过翻译成中文的方式,可以把零信任的理念系统完整地介绍给国内的网络安全业界同仁,供大家讨论、实践和探索,甚至批判。希望能够通过这种方式,让更多的人理解和实践零信任理念,推动企业网络安全架构的转型和变革,为云计算和大数据时代的业务应用及数据保驾护航,并在此过程中不断丰富甚至修正零信任的内涵和外延,让零信任架构更加成熟,更加实用。
本书的主要译者还有奇安信集团身份安全实验室的张泽洲、蔡冉、沈韵、张丽婷等人,他们既是零信任架构理念的倡导者,也是零信任架构技术方案在国内大型企业落地部署的实践者。在实践过程中,他们对于零信任架构有了更加深刻的理解和认识,特别是针对国内大型部委和企业的IT技术架构,零信任架构落地部署需要更多特殊的安全视角和权衡。因此,本书关于零信任架构的某些技术实践细节并不一定完全适用于国内的IT技术环境,需要根据实际情况加以修正和补充。幸运的是,零信任架构本就是一个抽象、开放并不断发展的安全框架,对零信任架构的内涵和外延有不同的理解和认知无伤大雅。但是,为了尽可能准确、系统、完整地介绍本书作者对零信任的认知和实践,我们在繁忙的工作之余通读了本书英文原作,在忠于原著的基础上尽最大努力将其翻译成通俗易懂的中文。即便如此,碍于技术理解,以及文字表达能力有限,本书在翻译过程中难免有疏漏和谬误之处,也欢迎读者朋友们批评指正。
此外,在零信任架构理念和技术方案在国内推广实践过程中,奇安信集团的邬怡、韩永刚、张聪、韩笑等人给予了我们非常大的支持和帮助,在此一并致谢!
左英男
2019年3月15日
感谢阅读本书!在充斥着威胁的网络中构建可信的系统,是网络安全从业者多少年来孜孜以求的目标。在设计和构建可信系统的过程中,人们在解决一些根本性安全问题时遇到了挫折,而这些安全问题一直困扰和折磨着网络安全从业者。因此,我们非常希望业界同仁直面这些根本性的安全问题,更加积极主动地推进能够解决这些问题的安全系统的建设。
为了实现这个目标,建议在建设和维护安全的计算机网络时采取全新的立场:安全应当与系统的运营管理从根本上融为一体,而不是建立在系统之上;安全应当自始至终与系统并存,要为系统赋能而不能成为其运行的障碍。正因为如此,本书提出了一系列在系统设计时需要考虑的安全设计模式和注意事项,以使得系统具备足够的安全弹性,能够应对现今主流的攻击。
将这一系列设计模式和注意事项作为一个整体,得到的就是零信任模型。在这个模型中,默认的信任是不存在的,每一个访问请求,无论是来自咖啡馆里的一台个人终端电脑,还是来自数据中心的一台服务器,都需要经过严格的检查,并确认其拥有合法的授权。采用零信任模型,可以从根本上解决外部攻击者在网络中的横向移动问题、令人头痛的VPN配置管理问题,以及防火墙集中式安全策略管理带来的管理开销问题等。零信任模型与传统安全模型存在根本性的差别,我们深信它代表着网络和基础设施安全架构的未来。
网络安全是一个技术复杂且快速变化的工程领域。网络安全从业者需要深入理解系统多个层面的技术,并明确系统各个层面的漏洞和缺陷,因为攻击者往往正是利用这些漏洞和缺陷来破坏系统的访问控制和保护措施。安全的复杂性与多变性给系统的安全防护带来极大的挑战,但同时也给我们带来极大的成就感,并使我们享受不断学习、应对挑战的乐趣!
你是否已经发现,采用集中式安全策略管理的防火墙在实际应用中存在很多限制,甚至遇到过在某些特定情况下无法有效地管理、运营防火墙的情形?你是否在VPN管理上遇到过令人头疼的问题,如多应用和多语言情形下的TLS配置问题、合规审计问题等?这些问题仅仅是零信任模型试图解决的一小部分问题。如果你正在思考有没有更好的办法来解决这些问题,那么你很幸运——这本书适合你。
网络工程师、安全工程师、CTO等,每个人都可以从零信任模型的学习中受益。即便没有相关的专业背景知识,也可以很容易地理解本书描述的许多原则。本书能够帮助领导者理解零信任模型的基本概念,在零信任模型的实践中做出正确的决策,从而逐步改善组织的整体安全状况。
此外,如果具有配置管理系统(Configuration Management System, CMS)使用经验,会发现可以使用与CMS类似的想法构建更加安全、更容易运营的网络,使得网络中的资源在默认情况下得到很好的安全防护。在这种全新的网络设计中,自动化系统如何助力细粒度访问控制的广泛应用,也是一个备受关注的问题。
最后,本书还探讨了零信任网络成熟应用的设计要点,以帮助那些已经采纳零信任理念的组织进一步增强其安全系统的鲁棒性。
2014年,我们开始在行业会议上谈论我们在系统和网络设计中采用的新方法。当时,我们使用CMS严格定义系统的状态,以编程方式处理网络拓扑的变更。结果,在使用自动化工具的过程中,我们发现可以用编程的方式处理网络执行的细节,来代替人工管理这类配置。同时还发现,用这种方式自动化获取系统的设计,能够让我们比过去更加轻松地部署和管理安全特性,比如访问控制、加密等。此外,这样做还有更大的好处:在构建安全系统时极大地降低了对网络信任的依赖,这是在公有云或混合云场景下设计安全系统时需要考虑的关键因素。
大约在同一时期,Google发布了BeyondCorp项目的第一篇论文,阐述了Google在系统和网络安全设计方面的重新思考,目的是消除对网络信任的依赖性。从这篇论文中发现,Google试图解决的安全问题、设计安全架构的理念等,在许多方面与我们自己设计的安全系统非常相似。很显然,降低对网络信任的依赖性,不只是我们自己的设计偏好,也是整个安全行业的发展方向。通过比较BeyondCorp论文和我们自己的工作,我们的理解也更加深刻,并开始在各种会议上分享这种安全架构和安全理念。与会者都对我们正在做的事情非常感兴趣,但我们也经常听到这样的问题:“我也想在系统中实践这种安全理念和架构,在哪里可以学习和了解详细内容?”遗憾的是,我们的回答通常是“嗯,好像渠道不是很多……这样吧,可以来找我们讨论。”缺乏公开的信息和指导渐渐成为这一安全理念和安全架构推广的障碍,于是,我们决定撰写这本书来改变这种局面。
在本书的撰写过程中,我们访谈了数十家企业的相关人员,了解他们对网络安全设计的看法。我们发现,其中不少企业已经采取了大量的措施,努力减少对其内部网络的信任。不同的公司在设计安全系统时采用的方法不尽相同,但是很明显,他们的工作都是在类似的威胁模型下展开的,因此构建出的解决方案有许多共同之处。
本书的目标不是阐述一两个特定场景的安全设计方案,而是试图定义一个建立在“不可信网络”基础上的安全模型。因此,本书的侧重点不是介绍具体的软件或实现方式,而是探讨零信任网络的理念和基本概念。通过阅读本书,希望你能够理解零信任模型的基本概念,建立清晰的思维模型并利用这一思维模型设计和建设安全系统,甚至构建针对这类问题的可重用的解决方案。
零信任模型这个概念最初是由Forrester的分析师John Kindervag于2010年提出的。多年来,他一直致力于建立零信任网络的架构模型和指导原则,并为许多大型企业提供咨询,帮助它们从当前的安全状态逐步演进到零信任网络。John一直是这个领域的重要参与者,他的工作极大地促进了我们对零信任网络的理解。非常感谢John在零信任模型形成初期的大力普及和推广。
目前零信任网络主要是利用现有的软件组件和定制化软件,以全新的方式集成在一起构建起来的。因此,部署零信任网络并不像安装和配置现成的软/硬件那么容易。希望你在学习零信任网络时意识到这一点。
从另一方面来说,缺少易于部署且能够很好地协同工作的组件也是一个机会,一套开源工具可以推动零信任网络的广泛采用。
本书的内容组织如下。
第1章和第2章讨论了零信任网络的基本概念。
第3章和第4章探讨了成熟的零信任网络中常用的两个新概念——网络代理和信任引擎。
第5章~第8章详细描述了如何在网络的各个参与方之间建立信任。这些章节探讨的大多数内容都聚焦在现有的技术上,即使是传统的网络安全模型也可以使用。
第9章将之前讨论的技术集成在一起,探讨如何构建零信任网络,并给出了两个案例分析。
本书采用下列排版约定。
斜体
表示新词、E-mail地址、文件名,以及文件扩展名。
等宽
用于程序列印,以及在文字中表示命令、模块和程序元素,如变量或函数名、数据库、数据类型、环境变量、语句和关键字。
等宽加粗
表示命令或其他需要用户原封不动输入的文字。
等宽斜体
表示需要被替换成用户指定的值或根据上下文决定的值。
表示提示或建议。
表示一般附注。
表示警告或注意。
Safari 在线图书(Safari Books Online)是一个面向企业、政府、教育工作者和个人的会员制培训和参考平台。
会员可以访问来自250多家出版商的数千本图书、培训视频、学习路径、互动教程以及策划列表,出版商包括O’Reilly Media、Harvard Business Review、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Adobe、Focal Press、Cisco Press、John Wiley & Sons、Syngress, Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress, Manning、 New Riders、McGraw-Hill, Jones & Bartlett和Course Technology等。欲获得有关Safari Books Online的更多信息,请登录其网站查询。
如果你想就本书发表评论或有任何疑问,敬请联系出版社:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
800-998-9938 (美国或加拿大)
707-829-0515 (国际或本地)
707-829-0104 (传真)
关于本书的勘误、示例和其他信息,请访问官方页面。
关于本书的技术性问题或建议,请发邮件到:bookquestions@oreilly.com。
了解更多有关我们的图书、课程、会议的信息以及最新动态,请访问我们的官方推特,也可以在Youtube上观看。
感谢本书的编辑Courtney Allen,谢谢她在本书写作过程中给予的指导和帮助。还要感谢Virginia Wilson、Nan Barber和Maureen Spencer在本书审校过程中的努力和付出。
在撰写本书的过程中,我们有机会和许多人一起讨论其中的内容,感谢他们提出建议并把该领域其他人的工作情况介绍给我们。感谢Rory Ward、Junaid Islam、Stephen Woodrow、John Kindervag、Arup Chakrabarti、Julia Evans、Ed Bellis、Andrew Dunham、Bryan Berg、Richo Healey、Cedric Staub、Jesse Endahl、Andrew Miklas、Peter Smith、Dimitri Stiliadis、Jason Chan和David Cheney。
特别感谢Betsy Beyer为本书编写了Google BeyondCorp的案例分析部分!
感谢我们的技术审稿人Ryan Huber、Kevin Babcock和Pat Cable,你们的意见非常有价值。再次感谢你们抽出宝贵的时间仔细阅读本书的初稿。
Doug在本书的写作过程中花费了大量的时间,因此要感谢他的妻子Erin、女儿Persephone和Daphne,感谢她们的理解与支持。
Evan要感谢他的伴侣Kristen在本书写作过程中的支持和帮助,还要感谢Kareem Ali和Kenrick Thomas,没有他们的支持与帮助,本书不可能问世。
本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。
作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。
当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,点击“提交勘误”,输入勘误信息,点击“提交”按钮即可。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。
我们的联系邮箱是contact@epubit.com.cn。
如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问www.epubit.com/selfpublish/submission即可)。
如果您是学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。
“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。
“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。
异步社区
微信服务号
在网络监控无处不在的时代,很难确定谁是值得信任的。我们能相信互联网流量没有被监听吗?当然不能!我们既无法信任提供光纤租用的互联网服务商,也无法信任昨天在数据中心布线的合同工。
“数据中心内部的系统和网络流量是可信的”这一假设是不正确的。现代的网络设计和应用模式,已经使得传统的、基于网络边界的安全防护模式逐渐失去原有的价值。因此,网络边界的安全防护一旦被突破,即使只有一台计算机被攻陷,攻击者也能够在“安全的”数据中心内部自由移动。
零信任模型旨在解决“基于网络边界建立信任”这种理念本身固有的问题。零信任模型没有基于网络位置建立信任,而是在不依赖网络传输层物理安全机制的前提下,有效地保护网络通信和业务访问。零信任模型并不是不切实际的设想,利用已经成熟的加密技术和自动化系统,这一愿景完全可以实现。
零信任网络的概念建立在以下5个基本假定之上。
传统的网络安全结构把不同的网络(或者单个网络的一部分)划分为不同的区域,不同区域之间使用防火墙进行隔离。每个区域都被授予某种程度的信任,它决定了哪些网络资源允许被访问。这种安全模型提供了非常强大的纵深防御能力。比如,互联网可访问的Web服务器等高风险的网络资源,被部署在特定的区域(一般称为“隔离区”,DMZ),该区域的网络流量被严密监控和严格控制。这是一种常见的网络安全架构,如图1-1所示。
图1-1 传统的网络安全架构
零信任模型彻底改变了这种安全架构。传统的网络分区与隔离安全模型在过去发挥了积极作用,但是现在却疲于应对高级的网络攻击。传统的安全模型主要有以下缺点。
需要关注的是,如果基于网络位置划分区域的需求消失了,那么对VPN的需求也就消失了。VPN的作用是对用户进行身份认证并分配IP地址,然后建立加密的传输隧道。用户的访问流量通过隧道传输到远程网络,然后进行数据包的解封装和路由。或许人们从来没有想过,在某种程度上,VPN是一种不会遭人怀疑的后门。
如果网络的位置对于网络安全失去价值,那么诸如VPN等网络安全设备也会失去其原有的价值。当然,这也迫使我们把安全控制的实施点尽可能地前推到网络边缘,这同时也减轻了网络核心设备的安全责任。此外,大多数主流的操作系统都支持状态防火墙,交换和路由技术的进展也为在网络边缘部署高级功能创造了机会。将所有这些改变带来的收益汇集在一起,得出一个结论:是时候进行网络安全架构的范式转换了。
利用分布式策略实施和应用零信任原则,可以构建如图1-2所示的网络安全架构。
图1-2 零信任架构
零信任架构的支撑系统称为控制平面,其他部分称为数据平面,数据平面由控制平面指挥和配置。访问受保护资源的请求首先经过控制平面处理,包括设备和用户的身份认证与授权。细粒度的控制策略也在这一层进行,控制平面可以基于组织中的角色、时间或设备类型进行授权。如果用户需要访问安全等级更高的资源,那么就需要执行更高强度的认证。
一旦控制平面完成检查,确定该请求具备合法的授权,它就会动态配置数据平面,接收来自该客户端(且仅限该客户端)的访问流量。此外,控制平面还能够为访问请求者和被访问的资源协调配置加密隧道的具体参数,包括一次性的临时凭证、密钥和临时端口号等。
虽然上述措施的安全强度有强弱之分,但基本的处理原则是不变的,即由一个权威的、可信的第三方基于多种输入来执行认证、授权、实时的访问控制等操作。
本书提到的传统安全架构通常是指“边界安全模型”。该模型的基本思想与物理世界中通过修建城墙来保护城堡一样,是通过构建层层防线来保护网络中的敏感资源。入侵者必须穿透这些防线,才能够访问敏感资源。遗憾的是,这种做法在计算机网络场景下存在根本性的缺陷,实质上无法保证敏感资源的安全性。为了充分理解这种缺陷,有必要回顾一下边界安全模型出现的原因及其发展历程。
导致边界安全模型出现的原因要从互联网的IP地址分配开始说起。在互联网发展的早期,越来越多的网络连接在一起。在那个年代,互联网还没有大规模普及,一个网络可能是连接到互联网,也可能是与其他业务部门、公司或是某个研究机构的网络相连。当然,在任何IP网络中,IP地址都必须是唯一的。如果不同网络的运营者使用了重叠的IP地址空间,那么他们必须花费很大的力气进行修改。如果正在连接的网络恰好是互联网,那么IP地址必须是全球唯一的。很显然,网络的IP地址分配必须通过统一的协调。
互联网号码分配机构(Internet Assigned Numbers Authority,IANA)于1998年正式成立,直到今天IANA仍然是IP地址分配的协调机构。在IANA成立之前,IP地址分配和协调的职责是由Jon Postel来承担的,他绘制了如图1-3所示的互联网地图。Jon是IP地址所有权记录的权威来源,如果你想确保自己的IP地址是全球唯一的,那么就需要到他这里注册。在那个时代,即使网络暂时不需要连接到互联网,也鼓励人们为其注册IP地址,因为说不定哪天这个网络就会连接到另一个网络。
图1-3 Jon Postel于1982年2月绘制的互联网早期地图
20世纪80年代末和20世纪90年代初,随着IP网络技术的应用范围越来越广,随意使用IP地址空间成为一个严重的问题。许多网络虽然事实上与互联网隔离,但是却有很大的IP地址空间需求,连接ATM的网络、连接大型机场航班信息显示屏的网络等,都是典型的例子。出于各种原因,这些网络的确需要与互联网隔离,有的设备因为需要满足安全或隐私的要求而与互联网隔离(如ATM);有的设备功能非常有限,通过网络大规模地连接起来意义不大(如机场的航班信息显示屏)。于是,私有互联网地址分配标准——RFC 1597诞生了,其目的是解决大量公共IP地址空间的浪费问题。
1994年3月,RFC 1597宣布IANA为私有网络保留3个IP地址范围:10.0.0.0/8、172.16.0.0/12和192.168.0.0/16。这样可以确保大型私有网络的地址空间不会超出分配的范围,从而减缓公共IP地址空间的消耗,也使得网络运营者能够在适当的时候使用非全球唯一的IP地址。此外,私有IP地址空间的使用还产生了另外一个效果,而且直到今天仍然在发挥作用——使用私有地址空间的网络更加安全,因为这些网络无法连接到其他网络,特别是连接到互联网。
在那个年代,连接到互联网的组织相对来说比较少,因此,内部网络经常使用保留的私有网络地址空间。另外,网络的安全防护措施也非常弱,甚至完全没有,因为这些网络在物理上通常位于一个组织的内部,攻击者很难接触到。
互联网应用的发展非常迅速,很快大多数组织都希望以某种方式出现在互联网上。电子邮件就是较早的互联网应用之一。人们希望能够发送和接收电子邮件,这就意味着他们需要一个可公开访问的邮件服务器,也意味着他们需要以某种方式连接到互联网。
私有网络中的邮件服务器一般情况下是唯一连接到互联网的服务器,它通常有两个网络接口,一个连接互联网,一个连接内部网络。通过连接到互联网的邮件服务器,私有网络内部的系统和人员就能够发送和接收互联网电子邮件。
人们很快意识到,这些服务器实际上开辟了一条物理通道,把互联网和安全的私有网络连接了起来。如果攻击者攻陷其中一台服务器,那么他就能够进入私有网络,因为私有网络中的主机与连接互联网的服务器之间是连通的。因此,出于安全的考虑,需要严格检查这些服务器及其网络连接。于是,网络运营者在这些服务器的两侧部署了防火墙,用于控制网络通信,阻止潜在的攻击者从互联网访问内部网络的主机,如图1-4所示。发展到这一步,边界安全模型就诞生了。内部网络变成了“安全”的网络,受到严格控制的服务器所部署的位置成为DMZ,即隔离区。
图1-4 互联网和私有资源都可以访问隔离区中的主机,但是私有资源的网络访问不能超出隔离区,因此不能直接访问互联网
由于需要从内部网络访问的互联网资源数量快速增长,因此,给内部网络资源赋予访问互联网的权限,要比为每个应用维护代理主机更加容易。NAT(网络地址转换)能够很好地解决这个问题。
RFC 1631为网络设备定义了一个标准,使其能够在组织的网络边界执行IP地址转换。通过维护一张公共IP/端口与私有IP/端口的映射关系表,NAT设备能够使私有网络中的设备访问任意的互联网资源。这种轻量级的映射关系与应用程序无关,也就是说,网络运营者不再为每个应用程序单独配置互联网连接,而只需要支持私有网络的通用互联网连接即可。
NAT设备有一个很有趣的特性:因为IP地址映射关系是多对一的,所以源自互联网的连接无法访问内部的私有IP地址,除非事先在NAT设备上进行专门的配置来处理这种特殊情况。因此,NAT设备具有与状态检测防火墙相似的特性。事实上,防火墙设备也很快开始集成NAT功能,这两个功能合二为一,基本上无法区分。这类设备既能支持网络的连通功能,又能支持严格的安全控制,因此很快得到广泛应用,几乎每个组织的网络边界上都部署了防火墙设备,如图1-5所示。
图1-5 简化后的典型的边界防火墙架构设计
通过在内部网络和互联网之间部署防火墙/ NAT设备,能够清晰地划分安全区域,包括组织内部的“安全”区、隔离区和不可信区域(互联网)。如果一个组织的网络需要与另一个组织的网络互连,则只需要在两个组织网络的边界处部署防火墙/NAT设备,这样另一个组织的网络就成为一个新的安全区域。然后,就像隔离区或安全区一样,可以在边界防火墙设备上配置特定的规则,规定不同区域之间允许或禁止哪种类型的网络流量通过。
回顾过去,可以看到很明显的进步。我们从离线/私有网络中只有个别主机能够连接互联网,发展到通过在网络边界部署安全设备来建立高度互联的网络。这种进步并不难理解,网络运营者出于各种商业目的,必须让内部网络中的服务器对互联网敞开大门,但是他们又不想失去私有网络的安全性,而防火墙/NAT设备能够在网络边界进行严密的安全控制,极大地降低了安全风险。
即使在互联网出现之前,计算机系统之间的远程通信也一直是人们追求的目标。那个时代的计算机远程通信通常是通过公共电话系统来实现的。用户和计算机系统可以拨入公共电话网络,将数据编码成音频信号来传输,以连接到远程计算机。因为物理上接触到远程计算机非常困难,所以公共电话网络的拨号接口成了当时常见的攻击向量。
在组织纷纷把主机服务器连接到互联网之后,网络攻击的发起方式也从公共电话网络转移到了互联网,互联网引发了网络攻击态势的变革。通过公共电话网络发起攻击会占用电话线路,这很容易被发现,而从IP网络上发起的攻击只是表现为TCP连接,这显然要隐蔽得多,攻击者可以长时间地进行漏洞利用和暴力破解尝试之类的攻击而不会引人怀疑。同时,这种转变还产生了更有影响力的攻击能力——利用恶意代码监听网络流量。
20世纪90年代末,世界上第一个(软件)特洛伊木马问世,并开始在互联网上传播。特洛伊木马欺骗用户安装恶意软件,然后打开一个端口等待连接请求。攻击者可以连接到这个开放的端口并远程控制目标计算机。
人们很快就意识到,需要一种保护互联网主机的方法,而设置硬件防火墙就是极好的选择(那时候大多数操作系统还没有基于主机的防火墙)。硬件防火墙能够在网络边界处强制执行安全策略,确保只允许列入白名单的“安全”的互联网流量进入内部网络。如果管理员无意中安装了向互联网开放端口(就像特洛伊木马一样)的软件,那么防火墙就可以阻断访问该端口的互联网连接。只有显式配置了允许访问该端口的策略,防火墙才会放行相应的网络连接。访问互联网主机的内部网络流量也同样可以进行控制,确保内部用户访问互联网主机的网络流量可以通过,但反过来则不行。这样可以防止攻击者利用被攻陷的隔离区的互联网主机横向移动进入内部网络。
虽然对隔离区的入站和出站网络流量都进行了严格的控制,从隔离区进入内部网络的难度非常大,但由于可以从互联网访问到隔离区的主机,因此它们仍然是攻击的主要目标。攻击者首先必须攻陷被防火墙保护的主机,然后安装用于隐蔽通信的软件,以便于把数据偷取出来。如果攻击者意图获得内部网络的访问权限,那么网络的拨号接口仍然是最容易利用的攻击入口。
事情发展到这里发生了有趣的变化,引入NAT原本的目的是使内部网络中的计算机能够访问互联网,现在它却变成了安全控制设备。这在某种程度上归功于NAT技术机制本身,而且也的确存在真实的安全需求。虽然内部网络中的计算机希望自由地访问互联网资源,但出于安全的考虑,仍然需要严格控制入站流量。部署NAT设备的网络和没有部署NAT设备的网络有一个重要的差别:前者放松了出站流量的安全控制策略。
这种网络架构与应用模式极大地改变了网络安全模型。位于可信内部网络中的主机可以直接与不可信的互联网主机通信,而互联网中那些不可信的主机也有机会滥用与自己通信的、位于可信内部网络中的计算机。更糟糕的是,恶意代码可以从内部网络向互联网上的主机发送消息,这就是今天我们都已经了解的攻击技术——回连(Phoning Home)。
回连技术是现代网络攻击技术的重要组成部分,其主要作用是从受保护的网络中把数据慢慢地偷取出来,但更重要的是,由于TCP协议的双向特性,使用回连技术也可以向受保护的网络中注入数据。
典型的网络攻击涉及多个步骤,如图1-6所示。首先,攻击者需要攻陷内部网络中的某一台计算机。攻击方法有很多种,可以在用户使用浏览器访问特定网页时,利用浏览器的安全漏洞发起攻击;也可以在给用户发送的电子邮件附件中植入恶意代码,利用内网计算机本地的安全漏洞发起攻击,等等。这种漏洞的有效负载非常小,只要建立起与远程互联网主机的连接,能够执行接收到的可执行代码即可。这类恶意代码通常被称为拨号器(Dialer)。
图1-6 客户端发起与攻击相关的连接,能够轻松穿透出站安全策略配置不强的防火墙
拨号器下载并安装真正用于攻击的恶意软件,然后恶意软件尝试与受攻击者控制的远程互联网主机建立新的连接,攻击者使用此连接向恶意软件发送指令,偷取敏感数据,甚至建立一个交互式的会话连接。于是,攻击者就可以把被攻陷的计算机当作跳板,在内部网络中发起进一步攻击。
出站安全
出站安全是一种非常有效的对抗拨号回连攻击的方法,可以检测并阻止拨号器回连的出站网络连接。但是,拨号器软件经常伪装成常规的Web流量,或者其他看似无害的“正常”网络流量。如果为了阻断攻击而配置过于严格的出站安全策略,则可能会影响Web的可用性及用户体验,组织的运维管理部门更关注这类现实的问题。
能够从内部网络中的某台主机发起攻击是一种非常强大的能力。这些主机拥有访问相同安全域中其他主机的权限(横向移动),甚至可能有权限与更高级别安全域内的主机通信。因此,攻击者首先攻陷内部网络中低级别安全域内的某台计算机,然后在网络中横向移动,最终获得更高级别安全域的访问权限。
回顾前面描述的攻击步骤,可以发现这类攻击有效地突破了基于网络边界的安全模型。边界安全模型的主要缺陷看起来有些微妙,但也是非常清晰的:基于网络区域定义安全策略,仅在网络边界处强制执行,并且仅使用了源和目标信息进行安全决策。
直到今天,边界安全模型仍然是主流的网络安全模型,但是该模型的缺陷也越来越明显。面对几乎每天都会发生的复杂攻击,一个网络即便采用了完善的边界安全模型,也往往会被攻陷。攻击者有无数种方法把远程访问工具(Remote Access Tool,RAT)投递到内部网络中以获得远程访问权限,然后开始在内部网络中横向移动。边界防火墙就像那些为了防止间谍入侵而在城市周边修建的城墙一样,作用越来越小。
把网络分割成若干安全区域,这种安全架构设计本身就存在问题。设想如下场景:一家小型电子商务公司雇用了几名员工,并拥有若干用来处理薪酬、库存等事务的内部业务系统,还有一些用于运行网站系统的服务器。在这样的场景下,当然需要对访问权限进行分类:员工需要访问内部业务系统;Web服务器需要访问数据库服务器;数据库服务器不需要互联网访问,但员工需要访问互联网等。传统的网络安全架构会把这些访问权限组定义为不同的安全区域,然后规定不同安全区域的访问规则,如图1-7所示。既然这些安全策略是以安全区域为基础定义的,那么不同安全区域之间的网络流量就应当遵循既定的安全策略强制执行检查。
大家都能想到,通用的安全规则总是存在例外,它们通常被称为防火墙例外规则(Firewall Exception)。这些例外规则应当尽可能严格地限制范围。比如,Web开发人员希望使用SSH访问用于生产环境的Web服务器,或者HR员工为了进行审计可能需要访问HR软件数据库,等等。在这些情况下,可行的办法是在防火墙上配置例外规则,允许某个IP地址访问特定的服务器。
现在,假设这家电子商务公司的竞争对手雇用了一支黑客团队,他们想要窃取该公司的库存清单和销售数字。黑客首先在互联网上找到了公司员工的电子邮件地址,然后给他们发送电子邮件,邮件内容被伪装成公司附近某家餐厅的优惠券。几乎可以肯定会有某个员工单击邮件内容中的链接,然后黑客在其个人计算机上安装恶意软件。恶意软件回连到黑客控制的服务器,建立连接会话后,黑客就能够控制这台计算机。还算幸运,这名员工只是一个实习生,黑客获得的访问权限是有限的。
图1-7 企业办公网络与生产网络的交互
黑客并没有停下脚步,他们开始在内部网络中四处搜索,很快发现该公司正在使用一款文件共享软件。并且,所有员工的计算机都没有使用这款软件的最新版本,而这款软件的当前版本存在一个漏洞,可以被利用来实施攻击。就这样,黑客逐个攻陷员工的计算机,并继续搜寻具有更高权限的计算机。当然,如果黑客拥有更高级的攻击知识,那么这个过程会更有针对性。最终,黑客找到了该公司的Web开发人员所使用的计算机,并在这台计算机上安装了键盘记录器,目的是窃取Web服务器的登录凭据。接下来,黑客使用收集到的系统登录凭据,通过SSH登录到Web服务器,使用Web开发人员的sudo权限,从磁盘读取数据库的口令并连接到数据库。最后,黑客转储数据库的内容并下载数据,删除所有日志文件。如果该公司的IT运维人员运气好的话,也许能发现这次数据泄露事件。黑客的任务完成了,完整的攻击过程如图1-8所示。
图1-8 攻击者在办公网络中横向移动,最终进入生产网络
黑客这么容易就成功了?是的,正如上面这个示例所揭示的那样,网络中多个层面的失败最终导致了这次数据泄露事故。或许有人认为,这不过是一个人为设计的攻击案例,但事实上类似的网络攻击成功案例非常普遍。然而,这个案例中令人惊讶的部分却往往被人忽视:在整个攻击过程中,网络中的安全防护措施在发挥什么作用?防火墙的部署是经过精心设计的,安全策略和例外规则严格限制了范围。从网络安全的角度看,一切都做得非常正确,那为什么攻击还能成功呢?
示例中的攻击过程
① 通过钓鱼邮件锁定企业的员工。
② 攻陷办公网的员工计算机,获得Shell。
③ 在办公网络中横向移动。
④ 定位拥有特权的计算机。
⑤ 安装键盘记录器的特权计算机本地提权。
⑥ 窃取开发人员的口令。
⑦ 从特权计算机攻击生产应用主机。
⑧ 利用开发人员口令在生产应用主机上提升权限。
⑨ 从应用程序中窃取数据库口令。
⑩ 通过失陷的应用主机外泄数据库中的数据。
经过仔细分析,就会发现传统的网络安全架构不足以抵抗这种攻击。恶意软件通过拨号器回连的方式可以轻松地穿透边界安全设备,不同安全区域之间的防火墙在执行安全策略时只使用了源和目的地址作为判别依据。虽然边界安全模型仍然具有一定的安全价值,但是它在网络安全中应当扮演什么样的角色,是否继续将其作为网络安全的主要机制?这是我们需要重新思考的问题。
当然,首先要寻找现有的解决方案。边界安全模型是公认的保护网络安全的方法,但这并不意味着没有更好的方案。在网络安全方面出现的最糟糕的情况是什么?这个问题的答案虽然有些绝对,但还是可以回答:信任出了问题。
如果要考虑边界安全模型之外的其他方案,那么首先必须准确地理解什么是可信的,什么是不可信的。信任级别(Trust Level)定义了所需安全协议强度的下限。但事实上,安全协议强度超出需求的情况是很少见的,因此尽可能减少信任是更明智的做法。一旦信任被内置于系统中,就很难消除。
什么是零信任网络?顾名思义,就是一个完全不可信的网络。我们几乎天天和这样的网络打交道,那就是互联网。
互联网给我们带来了很多安全方面的经验教训。当然,网络管理员对互联网服务器和本地服务器的安全防护方式大不相同,但为什么会这样?如果导致这种区别的问题能够解决,甚至只是部分解决,那么我们在安全方面做出的妥协还值得吗?
零信任模型认为,主机无论处于网络的什么位置,都应当被视为互联网主机。它们所在的网络,无论是互联网还是内部网络,都必须被视为充满威胁的危险网络。只有认识到这一点,才能建立安全通信。由于大多数管理员都有建设和维护互联网主机安全机制的经验,因此至少有办法阻止针对某个特定IP地址(主机)的拦截或篡改攻击。自动化系统使我们能够把这一级别的安全防护机制应用到基础设施中的所有系统。
构建零信任网络并不需要太多新的技术,而是采用全新的方式使用现有技术。自动化系统是建设和运营零信任网络的关键组件。
控制平面和数据平面之间的交互需要自动化系统来处理。如果策略执行不能动态更新,那么零信任网络就无法实现,因此,策略执行过程的自动化和速度是问题的关键。
实现自动化处理的方法有很多种,专门开发的自动化系统是较理想的,不过像传统的配置管理系统(CMS)这类工具也能够胜任。配置管理系统的广泛应用是构建零信任网络的重要基础,因为这类系统通常管理维护设备清单库,并能自动化处理数据平面中的网络策略配置。
由于现代的配置管理系统既可以维护设备库,又能够处理数据平面的配置自动化,因此利用这类系统可以很快迈出构建零信任网络的第一步。
边界安全模型与零信任模型存在根本上的差别。边界安全模型试图在可信资源和不可信资源(本地网络和互联网)之间建一堵墙,而零信任模型则“认输”了,它接受“坏人”无处不在的现实。零信任模型不是依靠建造城墙来保护墙内柔弱的身体,而是让全体民众都拥有了自保的能力。
边界安全模型事实上为受保护的内部网络赋予了一定级别的信任,这种做法违背了零信任模型的基本原则,会导致一系列问题的发生。当认为网络“可信”时,管理员往往会放松警惕(他们也是人)。可信区域内部的主机很少有自我保护的能力,因为既然这些主机共享同一个可信区域,也就意味着它们之间是互相信任的。现在,人们逐渐认识到这种假设是错误的,我们不仅需要保护主机免受来自外部的攻击,还需要保护它们免受相互之间的攻击。
既然零信任模型假定整个网络完全不可信,那么就必须假定攻击者可以使用任意IP地址进行通信。因此,仅使用IP地址或物理位置作为标识符来保护资源是不够的。所有主机,甚至处于相同“可信区域”的主机,都必须提供正确的身份标识。攻击者并不仅限于发起主动攻击,他们还可以执行被动攻击,通过监听网络流量获取敏感信息。在这种情况下,仅有主机的身份标识是不够的,还需要对网络流量进行强加密处理。
零信任网络有3个关键组件:用户/应用程序认证、设备认证和信任。第一个组件包含了用户认证和应用认证两层含义,因为并不是所有的操作都由用户执行,比如在数据中心内部,很多操作由应用程序自动执行,在这种情况下,通常把应用程序等同于用户看待。
设备的认证和授权与用户/应用程序的认证和授权同样重要,这一特性很少出现在采用边界安全模型保护的网络中。在传统的网络中,设备认证通常会出现在VPN或NAC技术中,但是在端到端的场景下很少用到。
NAC技术
NAC(网络准入控制)是一种边界安全技术,某目的是在终端设备访问敏感网络时对其进行强认证。802.1X和可信网络连接(Trusted Network Connect, TNC)这类网络准入控制技术关注的焦点是网络的准入而不是服务的准入,因此不属于零信任模型的范畴。更符合零信任模型的做法是,采用类似的机制在设备访问服务时进行强认证(TNC技术涉及一部分,详细内容参见第5章)。虽然NAC技术仍然可以应用于零信任网络中,但它距离远程端点太远,并不能满足零信任模型中设备强认证的需求。
最后,零信任模型需要计算出“信任评分”(Trust Score),并将应用程序、设备和信任评分绑定在一起形成“代理”(Agent),然后基于代理实施安全策略,进行访问请求的授权。代理所包含的信息非常丰富,因此可以执行非常灵活的、细粒度的访问控制。安全策略中包含信任评分,可以灵活适应各种条件下的访问控制需求。
如果代理发出的访问请求被批准,那么零信任模型的控制平面会通知数据平面接受该请求,这一动作还可以配置流量加密的细节参数。访问流量的机密性也非常重要,至少要采用设备级加密或者应用程序级加密中的一种,也可以两种方式同时采用。
通过这些认证/授权组件,以及使用控制平面协助完成的加密通道,就可以确保网络中每一个访问流量都按照预期经过了认证、授权和加密;没有经过认证、授权和加密完整处理的流量会被主机和网络设备丢弃,以确保敏感数据不会泄露出去。另外,控制平面的每个事件和每项操作都会被记录下来,用于完成基于访问流或访问请求的审计工作。
边界安全模型也可以提供类似的安全能力,但是这些安全能力仅在网络边界上部署和实施。传统的VPN就是一个很好的例子,它同样提供了类似的安全特性,用来实现内部网络的安全访问。但是,这种安全能力在网络流量到达VPN设备之后就会终止。很显然,网络管理员知道互联网安全应该怎么实现,只是他们没有把这些安全措施贯彻到整个网络。
假如一个网络全面部署并实施了零信任安全模型中的安全能力,那么这种全新的安全范式会让我们对安全产生新的认知和理解。采用密码学技术对身份进行强认证,意味着对于任意连接都可以不用在意它的源IP地址到底是什么(从技术上讲,网络连接的IP地址仍然可以用于风险的度量——稍后章节将对此进行详细讨论)。如果采用自动化技术解决了配置管理的棘手难题,那么VPN基本就没有什么用了,“私有网络”这个概念也将不复存在。内部网络中的主机和互联网主机没有什么区别,都采用相同的手段进行保护。认真思考NAT技术和私有地址空间,很明显零信任模型使其安全参数失去了意义。
最后,边界安全模型的根本缺陷是缺乏全局性防护和安全策略强制执行,就像用安全的外壳包裹着软弱的躯体,我们真正想要的是知道如何认证身份、如何防止沟通交流被窃听的坚硬的躯体。但是,拥有坚硬的躯体也并不一定意味着不需要维持安全的外壳,尤其是在高度敏感的应用场景下。不过,零信任模型的确将安全水平提高到了一定的程度,即使降低或取消这些安全外壳也不是不可行的。零信任模型中的绝大多数安全功能都能够对最终用户透明,这看起来甚至解决了安全性和易用性的矛盾:零信任模型更安全、更易用。事实上,解决是否易用问题的责任被推到了管理员身上。
在云环境中部署基础设施存在许多挑战,部署安全基础设施则是更大的挑战。零信任非常适合在云环境中部署,原因很明显:你完全不需要信任公有云环境中的网络!在零信任模型中,计算资源不依赖IP地址或网络的安全性即可进行身份验证和安全通信,这种能力意味着可以最大程度地把计算资源商品化。
由于零信任模型主张加密所有通信数据,哪怕通信双方位于同一个数据中心内部,因此管理员不需要操心哪些数据包流经互联网,哪些不流经互联网。零信任模型的这一优势往往被低估了。全面掌握何时、何地以及如何对通信流量进行加密,这些认知难度是相当大的,特别是对那些不完全了解底层系统的开发人员来说,更加困难。零信任模型则不再需要考虑这些特殊情况,也就意味着它在很大程度上消除了人为错误可能带来的影响。
或许有些人会争辩,虽然零信任模型降低了认知难度,但是也没有必要在数据中心内部全面实施流量加密。事实证明并非如此。在AWS这样的大型公有云中,一个“区域”(region)往往由若干数据中心组成,这些数据中心之间采用光纤进行连接,最终用户往往并不清楚公有云的这些架构细节。
此外,网络服务供应商自身的网络实施也可能存在风险,或许网络中的邻居也能够看到你的网络流量。更可能出现的情况是,网络管理员在进行故障排查时监听捕获了你的网络流量。也许网络管理员是可信任的,但是万一几个小时后有人偷走了他的笔记本电脑,而电脑磁盘上保存着你的网络流量,那该怎么办呢?因此,我们不得不接受这样的现实:不能认为数据中心内部的网络流量就是安全的,就能够防监听、防篡改。
本章探讨了零信任模型产生的原因及其基本概念。零信任模型注定会取代边界安全模型。边界安全模型试图把攻击者阻挡在可信的内部网络之外,然而零信任模型却认识到这种方法注定会失败,因此,零信任模型首先假设内部网络中同样存在恶意的攻击者,并据此建立安全机制来防范这种威胁。
为了更好地理解边界安全模型失败的原因,我们回顾了边界安全模型产生的原因和过程。起初整个互联网都是路由可达的。然而,一些用户随后认识到网络的某些部分没有理由与互联网连通,于是私有网络的概念诞生了。之后人们对这种做法逐渐形成共识,组织机构纷纷围绕如何保护可信的私有网络这一目标来构建安全体系架构。不幸的是,这些私有网络并没有,也不可能与互联网真正物理隔绝,最终的结果是建造出一个千疮百孔、经常被突破的边界防线。
在充分理解边界安全模型的基础上,我们将其安全设计与零信任模型进行了比较。零信任模型小心地管理系统中的信任。这些网络依赖自动化技术来管理安全控制系统,使之更加动态、更加安全。本章介绍了零信任模型的关键概念,比如用户、设备和应用程序的身份认证,以及这些实体组合之后的授权等,本书的后续章节会详细讨论这些概念。
本章最后的部分讨论了如何迁移到公有云,以及互联网的普及如何从根本上改变了威胁格局。所谓的“内部网络”越来越多地被共享,它其实只是一种高度抽象的概念和说法,用户也不太清楚他们的数据什么时候会在更脆弱的长距离网络中传输。这种变化导致的最终结果是,用户在构建新的业务系统时,要比以往任何时候都更加重视数据的安全问题。
第2章将讨论如何构建安全管理信任的系统,以及需要理解的高层概念。
信任管理是零信任网络的一个重要功能。人们对信任这个概念并不陌生,比如,你会信任自己的家人,但不会信任大街上的陌生人,当然更不可能信任面露凶相的陌生人。为什么会这样?信任是如何产生的?
首先,你确实了解自己的家人。你知道他们长什么样子,住在哪里,你并不会怀疑他们的身份,在重要的事情上你会更加相信自己的家人而不是陌生人。
反之,陌生人对你来说则是完全未知的。你也许见过他们的长相,知道他们的一些基本信息,但却不知道他们住在哪里,也不了解他们的过往。有的陌生人或许看上去很不错,但你也肯定不会在重要的事情上相信他们。比如说,你也许会在去洗手间的时候请陌生人帮你照看物品,但是肯定不会请陌生人帮你在ATM上取钱。
最终,你只是简单地把所有能够辨识的环境、与陌生人相关的所有信息等,都纳入考虑的范围,然后判断他们的可信度有多高。ATM取钱这样的任务需要非常高的信任等级,而帮助你看管物品所需要的信任等级则低得多,当然也不会低到信任等级为零。
在某些情况下,人们甚至可能连自己都无法完全信任,但是至少可以确信所采取的行动的确是自己所为。因此,零信任网络中的信任往往源自系统管理员。“零信任网络中的信任”这句话听上去似乎有些自相矛盾,但是理解这一点却非常重要:如果不存在与生俱来的信任,那么就必须从某个地方产生信任并小心地管理它。
这里还有一个小问题:系统管理员并不是总能有机会进行授权和授予信任!另外,当用户数量急剧增多时,信任管理的工作量会非常大,而系统管理员的数量却不可能无限制地随之增加。这个问题有成熟的解决方案,那就是信任委托,如图2-1所示。
图2-1 管理员信任某个特定的系统,这个系统又可以信任另一个系统,从而形成信任链
信任委托非常重要。借助信任委托,人们可以构建自动化系统,在无须人为干预的情况下,以安全可信的方式管理大规模增长的零信任网络。首先,系统管理员是可信的,然后他必须为系统赋予一定程度的信任,使该系统能够以管理员的身份执行后续动作。为了更好地理解信任委托这个概念,我们以服务的自动伸缩(Auto-Scaling)功能为例进行简要描述。假设你希望自己的服务能够按需自动开通,那么这里就会存在问题:如何确定一个新生成的服务是自己的而不是其他人的?为了达到这个目的,管理员就必须将责任委托给供应系统(Provisioning System),授予它创建新主机和为新主机授予信任的能力。通过这种方式,我们就可以相信新创建的服务确实是自己的,因为供应系统已经确认过该服务是由它创建的,并且供应系统还可以证明系统管理员已经把这样的权力授予了它。能够返回给系统管理员的这一串信任通常被称为信任链(Trust Chain),而系统管理员被称为信任锚(Trust Anchor)。
定义威胁模型是设计安全架构的第一步。威胁模型用来描述潜在的攻击者及其能力、资源以及意图攻击的目标。威胁模型通常会明确攻击者的范围,并按照攻击者的能力高低进行排序,以便于人们按照从易到难的顺序,合理部署相应的攻击缓解措施。
定义明确的威胁模型是非常好的工具,它能够帮助我们聚焦于攻击者,思考并部署相应的安全缓解措施。在安全系统的建设过程中,经常出现与其他工程实践类似的倾向:人们往往倾向于在那些令人浮想联翩的工程问题上投入很大的精力,却忽视那些枯燥无味但仍然很重要的工作。在安全系统的建设过程中,这种倾向更加令人担忧,因为系统中薄弱的环节恰恰是攻击者关注的地方。因此,威胁模型作为一种机制,可以帮助我们聚焦于某个具体的威胁,并仔细思考缓解该威胁的具体措施。
在对安全建设工作的优先级进行排序时,威胁模型同样可以起到指导作用。设想一下,如果一个系统的安全措施连用户弱口令暴力破解这类简单的攻击都不能防范,那么奢谈如何防范国家级别的攻击者就变得毫无意义。因此,我们在构建威胁模型时也要从初级的攻击者开始考虑,这一点非常重要。
网络安全领域有多种威胁建模方法,以下这几种都是流行的建模工具。
虽然不同的建模工具所使用的威胁描述框架并不相同,但是它们的目标是一致的,都需要尽可能地枚举针对系统的威胁,然后进一步枚举能够缓解这些威胁的系统和流程。
不同的威胁模型处理问题的视角也不尽相同。有的建模工具聚焦于被攻击者视为目标的资产;有的则独立地审视每一个软件组件,枚举针对每个组件的所有可能的攻击;还有的则使用与攻击者相同的视角,把系统看作一个整体,分析攻击者使用何种手段渗透进这个系统。这些建模工具各有其优缺点,在实践过程中混合使用这3类建模工具是比较理想的做法,有助于构建多样化的威胁缓解措施。
如果使用基于攻击者视角的威胁建模工具,则可以把攻击者按照能力(造成的损害)从低到高排列,具体如下。
(1)碰运气攻击者
这类攻击者又被称为“脚本小子”。他们没有什么高明的攻击战术,也没有明确的攻击目标,往往利用那些众所周知的漏洞和工具发起攻击,广撒网,碰运气。
(2)定向的攻击者
此类攻击者针对特定的目标发起针对性的攻击。他们经常通过鱼叉邮件、社交工程等手段发起攻击。
(3)内部人员
拥有合法凭据的系统用户。外包人员、非特权的企业员工等,都属于这一类。
(4)可信内部人员
可信度很高的系统管理员。
按照以上方式把威胁进行分级,就能够聚焦于每一个级别的威胁,分析和探讨缓解该威胁的方法。2.1.2节将讨论零信任模型的目标是缓解哪些级别的威胁。
RFC 3552描述了互联网的威胁模型。一般情况下,零信任网络遵循互联网威胁模型来描述安全态势,规划缓解威胁的措施。为了更好地理解这一威胁模型,建议完整阅读RFC 3552,本节摘录了其中相关的内容。
互联网环境下的威胁模型相当容易理解。通常情况下,假设参与协议交互的端点系统自身并没有被攻陷。如果其中一个端点系统被攻陷,那么阻止攻击就变得非常困难了。在这种情况下,通过仔细设计安全协议,还是有可能缩小损害的范围,降低损害的程度。
与之相反,假设攻击者几乎能够完全控制端点系统用以通信的信道。这意味着攻击者可以读取网络上的任何PDU(Protocol Data Unit,协议数据单元),并且不被察觉地删除和篡改数据包,或者将伪造的数据包注入到通信线路中。攻击者能够生成看似源自可信主机的数据包。因此,即使与之通信的端点系统本身是安全的,互联网环境的特点也使得我们无法确认通信数据包真的源自该端点系统。
因为零信任网络需要控制网络中的端点设备,所以它对互联网威胁模型进行了扩展,充分考虑了端点设备被攻陷的情形。面对端点设备可能遭受的攻击,通常的应对方式是首先对端点操作系统进行安全加固,然后采用端点系统安全扫描、系统活动行为分析等方式来进行攻击检测。此外,定期升级端点设备中的软件,定期更换端点设备的登录凭证,甚至定期更换端点设备本身等,也能够缓解针对端点设备的攻击。
拥有无限资源的攻击者本质上是无法防御的,零信任网络充分考虑了这一因素。因此,零信任网络的防御目标是那些常见类型(不是所有类型)的攻击者。
从前面对攻击者能力的描述来看,零信任网络能够防御的攻击者包括从低级别的“碰运气攻击者”到高级别的“可信内部人员”。大多数组织能够遇到的攻击类型基本上就是以上这些,很难遇到复杂程度更高的攻击。因此,针对这些类型的攻击者制定缓解措施具有更广泛的适用性,能够抵御组织面临的绝大多数攻击,显著提升组织的安全态势。
我们还会遇到一些很难防御的、相对小众的威胁,如利用虚拟机管理程序的漏洞复制虚拟机内存等。防御这类威胁需要付出相当大的代价,可能需要专用的物理硬件,因此大多数零信任网络的威胁模型排除了这类攻击。我们应该明白,在网络安全方面虽然有许多最佳实践,但是零信任模型仅需要保证用于认证和授权操作的信息的机密性,如存储在磁盘上的凭据的机密性。至于对端点系统安全性的进一步要求,如全盘加密等,是其他安全策略需要考虑的问题。
如果没有办法把物理世界中的人与其数字世界中的身份联系起来,那么无论采用什么方法都无法真正建立对一个人身份的信任。人类可以使用多种感官系统的组合来判断面前的这个人是否就是他们所认为的那个人,事实证明,人类多种感官的组合很难被欺骗。
然而,计算机系统就没那么幸运了。计算机场景下的身份认证更像是通过电话与某人交谈。你可以听到他的声音,可以看到他的来电号码,可以问他问题……但是,却看不到他本身。这就是很大的挑战:应该用什么办法来判断电话线路另一端的人(或系统)的确就是他所声称的那个人(或系统)?
通常情况下,管理员采用检查远程系统的IP地址,并要求对方输入口令的方式来完成身份认证。但是在零信任网络中,仅仅采用这些方法进行身份认证是远远不够的。因为零信任网络中的攻击者能够使用任意IP地址进行通信,还能够将自己置于两台远程通信的计算机之间发起中间人攻击。因此,零信任网络中的每个访问请求都需要经过强身份认证。
目前,应用较广泛的身份认证机制是安全工程师们都非常熟悉的X.509标准。该标准定义了数字证书的标准格式,并能够通过信任链认证身份。X.509证书是TLS协议(以前是SSL协议)用来验证连接的主要机制。
SSL是匿名的
大多数TLS应用实例仅配置了单向身份认证,即只是由客户端验证所访问的资源是否可信,但是被访问的资源没有验证客户端是否可信,这种配置在零信任网络场景下来说存在明显的问题。
TLS协议本身支持双向身份认证,即被访问的资源也同样可以验证客户端的身份。这一步骤对私有资源的保护来说非常重要。关于零信任网络TLS配置的更多信息可以参考8.5.2节。
X.509证书使用两个密钥:公钥和私钥。公钥需要被公布出去,私钥则被严格保密。使用公钥加密的数据,可以用私钥解密,反之亦然,如图2-2所示。通过正确解密由众所周知(且可验证)的公钥加密的数据片段,人们可以证明其拥有正确的私钥,就能够在不暴露秘密的情况下验证身份。
图2-2 Bob使用Alice的公钥加密消息,只有Alice能够解密
基于证书的身份认证机制可以让通信双方确信对方拥有正确的私钥,并且可以确信攻击者通过搭线窃听的方法无法窃取并重用密钥。但该机制仍然依赖于一个秘密,而这个秘密可能会被窃取。通过网络搭线窃听这种方式虽然行不通了,但是攻击者仍然可以使用恶意软件感染或物理接触的方式窃取这个秘密。
也就是说,虽然身份凭据的合法性可以得到验证,但是其机密性无法得到保证。因此,实践中最好使用存储在不同位置的多个秘密,根据这些秘密的组合授予访问权限。在这种情形下,攻击者必须窃取多个秘密才能完成攻击,这增加了攻击的难度。
虽然组合使用多个秘密的方式有助于防止未授权的访问,但是仍然存在所有秘密都被窃取的风险。因此,所有身份认证凭据都应当有时间限制。为身份认证凭据设定有效期限,不仅能够最大限度地缩减凭据泄露或密钥被盗的影响范围,还可以给管理员更新密钥和重建信任创造更多的机会,争取更多的时间。管理员更改或更新密钥/口令的行为被称为凭据轮换(Credential Rotation)。
凭据轮换机制能够有效防止秘密失窃,并在发生秘密失窃事件时及时将其注销,避免更大的损失。人们应当尽可能避免使用难以轮换或者轮换成本很高的身份认证凭据,如硬件令牌/口令等,特别是新建的系统,应当在系统设计早期就考虑到这个因素。身份认证凭据的轮换频率通常与轮换所需的成本成反比。
轮换代价高昂的凭据示例
需要外部机构签发的数字证书。
人工配置的服务账户。
需要系统重启才能重置的数据库口令。
一旦更改就会导致所有已保存的散列值失效的密钥种子。
2.2节简要讲述了数字证书和公钥加密体制的基本知识,但是数字证书本身并不能解决身份认证问题。虽然可以使用远程实体的公钥加密一条消息,通过远程实体是否能够解密来判断它是否拥有正确的私钥,但是从哪里获得该远程实体的公钥呢?虽然公钥不需要保密,但是仍然需要一种方法来验证获得的公钥的确属于某人。公钥基础设施(PKI)解决了这个问题。PKI定义了一组角色及其职责,能够在不可信的网络中安全地分发和验证公钥。
PKI的目标是允许无特权的通信双方通过共同信任的第三方来验证对方身份的真实性。PKI利用注册中心(RA)把通信实体的身份与其公钥进行绑定,然后把这种绑定关系内嵌入数字证书,并由可信的第三方进行数字签名。只要发送方和接收方信任同一个第三方,发送方就可以使用经过第三方签名的证书来证明自己的身份。
PKI服务供应商有很多类型,其中证书授权中心(CA)和信任网络(WoT)是较受欢迎的两类供应商。CA的信任依赖于数字签名链,用户能够根据数字签名链回溯到初始的可信根节点。WoT没有使用信任链的形式,而是允许参与通信的系统断言对等方身份的有效性,最终形成相互背书的网状结构。用户可以遍历信任网站,寻找自己需要的、能够信任的数字证书。WoT在PGP系统中得到了广泛使用,但本书更关注CA这类PKI系统,因为CA的流行程度远远超过信任网络。
CA是数字证书链的信任锚,它们签署并公开发布公钥及其绑定的身份信息,允许无特权实体通过数字签名来验证这种绑定关系的有效性。
CA证书用于表明CA自己的身份,CA证书对应的私钥用于签署由其颁发的客户证书。因为CA证书是众所周知的,所以通信实体可以使用CA证书来校验该CA颁发的客户证书的数字签名。CA作为可信的第三方,能够为客户签发并维护数字证书的有效性。
CA作为可信的第三方拥有非常高的特权,因此必须不惜一切代价保护CA的安全性。CA的安全性一旦遭到破坏,就会导致灾难性的后果。因为X.509数字证书标准支持证书链,所以根CA可以保持离线状态。离线状态的根CA可以得到更好的安全保护,这也是绝大多数PKI体系的根CA的标准做法。本书第5章将详细讨论X.509的安全机制。
PKI是零信任模型身份认证的基石,大多数零信任网络都采用PKI来证明身份的真实性。以下这些实体都可以使用数字证书来进行身份认证。
密钥和实体的绑定
PKI可以绑定实体的身份和公钥,但是如何保护实体的私钥呢?无论如何,身份认证的操作过程中使用的恰恰是实体的私钥。因此,需要安全地保存实体的私钥,并且应当使其尽可能靠近实体的物理位置,这在身份认证机制中是非常重要的一点。实体私钥的保存方法因实体的类型而异,如果实体是一个用户,那么他可以把私钥存储在智能卡的安全芯片中,然后把智能卡放在口袋里随身携带。本书第5章~第7章将讨论不同实体使用的不同方法。
零信任网络颁发的证书数量可能会很多,因此非常有必要对证书进行自动化管理。需要注意的是,如果需要人工来处理证书申请,那么必须谨慎考虑是否有必要,因为这会降低整个系统的效率。话虽如此,但数字证书的签发毕竟是敏感度很高的工作,因此很多系统在设计时都会保留人工可以介入的审批流程。
PKI通常被部署为公共的信任系统,签发和管理互联网上使用的X.509证书。在公共PKI模式下,可信第三方是公共的可信任方,客户利用公共PKI对其他组织的资源进行身份认证。虽然公共PKI非常适合作为互联网的信任基础设施,但是却不适合零信任网络。
为什么公共PKI不适合零信任网络?公共PKI有很多优势,如成熟的基础设施和工具、经过诸多专家评审过的安全实践,以及更短的市场进入时间等,这些优势都非常有吸引力。但是对零信任网络来说,公共PKI也有许多缺点,其中一个突出缺点是成本。
公共PKI系统依赖于受公众信任的权威机构签发和管理证书,而这些机构都是商业化运作的,签发证书需要收取费用。零信任网络可能会使用大量的证书,如果考虑到凭据轮换策略,证书的使用量会更大,这会产生高昂的证书签发费用,很多组织难以承受。
公共PKI系统还有另外一个重大缺点,那就是CA机构的可信度问题。人们真的可以完全信任这些公共的CA权威机构吗?很多公共的CA机构是由不同的国家和政府运营的,如果零信任网络使用了这些机构的公开PKI,那么任何一个CA机构出现问题,都会切断整个零信任网络的信任。事实上,人们很难完全信任与这些CA机构有关联的政府部门和相关法律。当然,这种情况也有相应的解决办法,比如只使用特定的某一个公共CA,但是如果它与其他组织使用的CA没有交集,那么如何建立和保持信任就是一个挑战。
最后,使用公共CA会影响零信任网络的灵活性和可扩展性。公共CA机构为了在公众面前维持其可信度,会采取措施加强自身的安全防护。这些安全措施包括证书生成的策略、在证书的哪些位置放置哪些信息等,但是这些规定并不一定适用于特定组织的零信任网络。因为零信任网络为了完成身份认证,可能需要在证书中存储与组织相关的元数据,比如用户角色或用户ID等。此外,很多公共CA不提供可编程接口,这给零信任网络的自动化管理带来了巨大的挑战。
虽然公共PKI存在很多明显的缺点,并且我们强烈反对将其应用于零信任网络,但是使用公共PKI总比完全没有PKI要好。无论选择哪种PKI,都需要在自动化管理方面下功夫,这是建设零信任网络的首要工作。如果在零信任网络建设的初期选择使用公共PKI,那么在意识到风险变大时,需要有明确的路径能够切换成使用私有PKI。当然,需要认真考虑是否值得这么做,因为这种切换意味着重新实现私有PKI的自动化,需要付出比较大的代价。
最小特权原则是指一个实体应该只被授予完成任务所需要的特权,而不是被授予该实体想要得到的权限。最小特权原则能够极大降低用户或应用程序滥用权限的可能性。
对应用程序来说,最小特权通常意味着其运行在服务账号、容器或“监狱”(Jail)中;对用户来说,最小特权通常表现为“只有工程师才能访问源代码”这样的安全策略;终端设备也同样需要考虑最小特权原则,但通常情况下终端设备采用与用户或应用程序相同的策略。
将隐私作为最小特权
以保护隐私的名义进行网络数据包加密是一种经常被忽视的最小特权应用。因为除了通信双方,还有谁真正需要访问网络数据包的内容?
最小特权原则还有另外一个作用:如果确实需要更高的访问权限,那么用户可以并且只能在需要的时候获得这些特权。因此,只有清楚地了解了每项操作所需的特权,才能恰当地给用户授权。这种做法比简单的访问控制机制前进了一步。
在这种模式下,用户大部分时间都在使用非特权账户,当需要提升权限时,则需要使用拥有更高权限的独立账户执行操作。
在一台计算机中,提升用户的权限通常需要验证其身份。比如,UNIX系统用户使用sudo命令时,系统会提示用户输入口令验证身份,验证成功之后,用户才能以另外一个角色执行操作。在GUI环境中,系统会在用户执行高权限操作时弹出一个对话框,提示用户输入口令。计算机系统通过与用户的交互,降低了恶意软件假冒用户身份执行操作的可能性。
零信任网络的情形与之类似,用户在大多数情况下以最小特权模式访问网络资源,只在需要执行敏感操作时才提升权限。比如,经过身份认证的用户可以自由地访问公司的目录或使用项目计划软件。但是,如果用户要访问关键的生产系统,那么就需要采用额外的手段确认该用户的身份,确保该用户的系统没有被攻陷。对于风险相对较低的操作,特权提升过程可以很简单,只需重新提示用户输入口令、要求出示双因素认证令牌或者给用户的手机推送认证通知。对于高风险的操作,可以选择通过带外方式要求相关人员进行主动确认。
人工认证
对于特别敏感的操作,管理员可能需要让相关人员积极参与,人工主动验证该操作权限的合法性。强制性关联身份认证的过程和现实世界是一个不错的办法,这能够避免已被攻陷的系统干扰正常的操作。但是人工参与认证付出的代价比较大,需谨慎使用,而且使用得太频繁也会失去效用。
除了用户,零信任网络也应当为应用程序配置最小特权。但是在实际应用中,企业环境部署的应用程序往往具有相当广泛的网络访问权限。一方面是因为配置应用程序的访问控制策略相对比较困难,另一方面是因为人们通常会假定网络中的用户比应用程序更有可能成为攻击的目标。人们在配置一台新的计算机时,第一步往往就是禁用保护计算机应用程序的安全框架,这几乎成了常态。
除了考虑用户和应用程序的特权之外,零信任网络还需要考虑设备的特权。零信任网络把用户或应用程序与其所使用的设备进行绑定,作为一个整体授予相应的特权。这种方式有效地降低了用户凭据丢失或被盗而造成的损失和影响。本书第3章将探讨设备和用户的绑定在实际场景中的工作方式。
零信任网络中的特权比传统网络更具有动态性。传统网络中的安全策略往往是静态的,如果遇到需要更高特权的情形,则特权的请求者通常需要说服系统管理员变更安全策略,或者请求系统管理员代替他们执行操作,后一种做法更普遍。静态安全策略存在两个问题。首先,在管理相对宽松的组织中,特权数量会随着时间的推移而逐渐增长,最终导致最小特权原则失效。其次,无论组织的管理是宽松还是严格,系统管理员都被赋予了更高的访问权限,这会导致其成为攻击者实施网络钓鱼攻击的主要目标。
与传统网络使用的静态安全策略不同,零信任网络依靠网络活动的诸多属性来分析当前访问请求的风险。这些属性可以是时间属性(比如某用户在正常活动时间窗口之外的访问请求更加可疑)、空间属性(比如某用户从与上次访问不同的地理位置发起访问请求),甚至行为属性(比如某用户试图访问通常情况下不应该访问的资源)。把访问请求的这些细节纳入考虑和分析范围,就能够对访问请求做出细粒度的授权判定。比如,用户在正常工作时间从其正常地理位置访问数据库的请求应该被授权,但是从新的地理位置或者在非工作时间访问数据库的请求则被要求使用多因子身份认证。
基于网络活动的风险分析主动调整访问权限的能力是零信任网络的安全特性之一。通过动态调整安全策略和访问权限,零信任网络能够积极应对已知和未知的恶意攻击。
信任管理是网络安全管理中非常困难的工作。确定网络中的人员和设备应该如何授权相当耗费时间,并且人员和设备又在不断变化,这会直接影响网络的安全态势。虽然网络的信任管理如此重要,但是很多网络却普遍存在信任管理系统部署不足的情况,这的确令人惊讶。
定义信任策略这项工作通常由安全工程师手工完成。云上的系统或许可以管理策略,但是这些策略只提供初级的用户权限区隔(如超级用户、管理员和普通用户),很难满足高级用户的需求。由于安全策略的定义和维护都比较困难,因此试图变更现有安全策略的请求会遇到阻力。另外,安全策略变更之后导致的影响范围也同样很难界定,于是系统管理员对策略的变更非常谨慎。这种现状会让最终用户感到沮丧,也使得系统管理员面对大量策略变更请求不堪重负。
权限分配通常也是手工作业,系统管理员根据用户在组织中的职责为其分配相应的权限。这种基于角色的策略系统导致管理员不得不制造出许多信任池(pool of trust),从而削弱了网络的整体安全态势。这些信任池也为黑客创造了一个“猎杀系统管理员”的市场,他们四处寻找并试图攻陷系统管理员的权限。安全网络的黄金标准或许应该是这样的:根本就不存在高特权的系统管理员!
信任池问题凸显了传统网络信任管理的根本性缺陷:安全策略动态性不足,无法应对日益变化的网络安全威胁。安全成熟度比较高的组织会针对网络活动部署审计设备,执行审计流程,但是审计工作的执行频率往往不高,而且坦率地说,网络活动的审计工作非常乏味,以至于没人愿意认真做好这件事。另外,行为恶劣的管理员对网络造成的损害是巨大的,试图通过审计流程发现并减轻影响往往为时已晚。因此,需要重新思考网络参与者的信任关系,意识到网络参与者的信任是基于参与者过去和当前的行为而不断变化的。
根据参与者的行为来确定其可信度,这种信任模式并不是新鲜事物,信用卡代理机构许多年以前就已经开始提供这项服务了。信用卡代理机构不再要求零售商、金融机构甚至雇主独立定义和确定一个人的可信度,而是对一个人在现实世界中的行为进行度量和评分,从而确定这个人的可信度。然后,消费机构就可以根据其信用评分来决定给予此人多少信用。在申请按揭抵押贷款时,信用评分较高的人将获得更优惠的利率,从而降低贷款人的风险。企业雇主也可以把一个人的信用评分作为是否录用的决策参考依据。以具体个案为基础进行分析,信用评分依赖的这些因素会让人觉得有些随意和模糊,但正是这种模糊性发挥了重要作用:在这种评分机制下,安全策略的定义不仅基于确定性的描述,还要基于不断变化的度量分值,这为系统提供了一种防御任意威胁的机制。
零信任网络基于上述认识和理解定义信任,如图2-3所示。零信任网络不再给网络参与者定义和分配基于二元决策的策略,而是持续监视参与者的网络活动,并据此持续更新其信任评分,然后使用这个评分作为授权策略判定的依据之一,如图2-4所示。比如,一个用户从不可信的网络查看日历,这种访问请求需要相对较低的信任评分;但是,如果该用户试图更改系统设置,则需要更高的信任评分,信任评分不满足要求,系统会拒绝该用户的请求,并将此请求标记为需要立即审核。这个示例虽然很简单,但是足够我们从中发现信任评分的价值:能够对确保信任所需的检查与平衡进行细粒度的决策判定。
加密流量的监听
由于零信任网络中的所有网络流量都是加密的,因此传统的流量监听方法很难达到预期的效果,只能看到有限的内容,比如IP报头或下一个协议报头(比如TLS场景下的TCP报头)。但是,如果网络访问请求的路径中部署了负载均衡设备或代理服务器,那么就能够看到应用数据,也就有机会进行深度包检测和授权操作。
图2-3 信任评分使得采用更少的策略就能提供相同数量的访问权限
图2-4 信任引擎计算信任评分并生成网络代理,然后根据策略进行请求的授权。本书第3章将详细讨论关于网络代理的概念
客户端以不可信的方式开始访问会话请求,并在访问过程中通过各种机制不断积累信任,直到积累的信任足够获得系统的访问权限。比如,用户通过强认证能够证明所使用的终端设备属于公司,这可能积累了一些信任,但不足以获得账单系统的访问权限。接下来,用户提供了正确的RSA令牌,就可以积累更多的信任。最后,设备认证和用户认证相结合计算出的信任评分满足要求,用户就可以获得账单系统的访问权限了。
强策略是信任的“增压器”
与静态策略相比,基于信任评分的策略能够根据历史行为等多种变量动态影响授权的判定结果,这将极大地改善网络的安全态势。经由这种机制检查和授权的访问会话有更高的可信度。此外,传统的信任机制高度依赖用户的身份认证,而这种信任评分积累机制可以显著降低此依赖,从而改善用户的使用体验。
基于信任评分的策略模型也不是没有缺点。其中一个问题是,单一的评分值是否足以保护所有的敏感资源。用户的信任评分能够基于历史行为而降低,同样也可以基于历史的可信行为而增加。那么,攻击者是否有可能通过在系统中慢慢建立信任,从而获得更高的访问权限呢?
如果考虑到组织的审计人员通过定期的网络审计有机会发现入侵者,那么只要延长用户积累信任所需的“正常”行为的时间,就能够延缓攻击者积累信任的进度,从而应对这种威胁。另外一种方法是把敏感操作的若干条信息公布给控制平面,并将其配置成只有可信位置的可信用户才能够访问。通过信任评分与设备和应用程序元数据的绑定,能够实现灵活的策略机制,既可以显式描述确定的授权策略,又可以通过计算信任评分的方式应对未知的威胁。
安全策略和用户组织角色之间的解耦可能会给最终用户带来一定的困扰。比如,用户在咖啡馆访问敏感资源时请求被拒绝,但是在家里就不会遇到这种情况,系统应该如何与用户沟通这种差别呢?是否应该对用户提出越来越严格的身份认证要求?在积累更多的信任、获得更高的访问权限之前,是否应该要求新用户在较低的访问权限下工作一段时间?用户携带出现故障的终端设备来到技术支持办公室进行维修,是否应该给这个用户增加额外的信任?以上所有这些问题都是需要考虑的重点,不同的零信任网络解决这类问题的方法也是不同的。
控制平面和数据平面是网络系统经常使用的概念,其基本思想是,网络设备有控制平面和数据平面两个逻辑域,这两个逻辑域之间存在清晰的接口。数据平面的作用是转发网络流量,它需要高速处理数据包,因此其处理逻辑相对简单,通常使用专用硬件。控制平面可以看作是网络设备的大脑,系统管理员用它来配置管理网络设备,因此控制平面会随着策略的变化而变化。
控制平面的强可塑性导致其无法处理高速网络数据包流量。因此,控制平面和数据平面之间的接口定义需要遵循这样的原则:任何在数据平面执行的策略行为,都要尽可能减少向控制平面发送请求(相对于网络流量速率来说)。
零信任网络还定义了控制平面和数据平面之间明确的区别。零信任网络中的数据平面由直接处理网络流量的应用程序、防火墙、代理服务器和路由器组成。这些系统都处于网络连接的路径上,需要快速决定是否应该允许流量通过。如果把数据平面视为一个整体,就会发现它在整个零信任网络中具有范围很广的访问权限和暴露面。因此,不能使用数据平面上的服务来获得控制平面的特权,从而在网络中横向移动。本书第4章将讨论控制平面的安全性。
零信任网络中的控制平面由一系列组件构成,这些组件接收并处理来自数据平面的请求,这些请求或者是希望访问网络资源,或者是授予网络资源的访问权限,如图2-5所示。控制平面的组件检查发起请求的系统的相关数据,以确定该操作的风险有多大,同时检查相关策略以确定访问该资源需要的信任度有多高。控制平面一旦做出授权判定,就会通知或者重新配置数据平面,并授予相应的访问权限。
控制平面能够影响数据平面的变化,这种机制非常重要。因为数据平面的系统通常是攻击者进入网络的入口,所以数据平面与控制平面之间的接口必须非常清晰,确保数据平面中的系统不会因为被攻陷而导致在网络内横向移动。数据平面和控制平面系统之间的交互请求必须使用私有PKI系统进行身份认证和加密,以确保接收方的可信度。控制平面和数据平面之间的接口应当类似于操作系统内核空间和用户空间之间的接口,为了防止提权攻击,两个系统之间的交互需要进行高度隔离。
在关注控制平面和数据平面之间的接口之余,还要关注控制平面的另外一个基本特性:控制平面是整个网络的信任授予者。由于控制平面对网络行为的控制力度非常大,因此其自身的可信度至关重要。由于零信任网络中存在这样一个具有极高特权的参与者,因此其在安全设计上也提出了许多有意思的设计需求。
图2-5 零信任客户端与控制平面进行交互以访问服务资源
需求是这样的:控制平面授予数据平面的某个参与者的信任应该具有时效性。信任应当是临时性的,信任委托方和信任受托方之间需要定期履行确认手续,才能保证持续信任的合理性。租用访问令牌或短生命周期证书是实现这一原则的较合适的解决方案。如果采取租用访问令牌的方案,那么这些令牌不仅需要在数据平面(比如,当控制平面向网络代理授予了令牌,网络代理在数据平面中移动时)进行校验,还需要在数据平面和控制平面交互时进行校验。通过限制数据平面和控制平面进行凭据交互的时间窗口,能够降低对网络进行物理攻击的可能性。
本章讨论了零信任网络信任管理的基本概念和所需的关键系统。虽然这些概念和系统在传统的网络安全架构中都很常见,但是却非常重要。在毫无信任的网络中建立并管理信任需要依赖这些概念和系统。
信任源自于人,并通过计算机可以执行的信任机制流入其他系统。这种建立信任的方法是合乎逻辑的,因为只有使用系统的人确信它确实按照其意愿忠实地运行,该系统才能被认为是可信的。
网络安全常常被视为一系列最佳实践,由安全工程师代代相传。这种经验主义的传承需要被打破,因为每个系统都是独一无二的,不存在放之四海而皆准的最佳实践。因此,本章讨论了威胁模型的概念。威胁模型主要包括两部分内容,一是枚举针对系统的威胁,二是定义能够缓解这些威胁的系统和过程。威胁模型通过这种描述框架来定义系统的安全态势。虽然零信任网络所假设的网络环境非常恶劣,但仍然可以基于威胁模型进行分析,这种分析有助于构建零信任网络的安全系统。本章列举了几种常见的威胁建模技术,以便于我们今后更加深入地学习。本章还讨论了如何把互联网的威胁模型应用于零信任网络,并把威胁模型的范围扩展到零信任网络管理员能够控制的终端设备。
在系统中建立信任需要使用强身份认证。本章详细讨论了身份认证机制在零信任网络中的重要性,还简要地描述了如何利用现有的成熟技术实现强身份认证。后续章节将会更加详细地介绍这些内容。
为了有效地管理网络中的信任,人们必须能够明确地识别可信信息,特别是在身份认证和身份识别的场景下。PKI是提供身份认证的最佳方法。本章讨论了PKI在零信任网络中的重要性、证书机构CA的角色,以及为什么私有PKI优于公共PKI。
最小特权是零信任网络的关键思想之一。零信任网络的目的不是构建一个自认为安全的网络,让网络参与者在这个“安全”的网络中自由地通信,而是假设网络是完全不可信的,网络中参与者在通信时应该具有最小的特权。本章解释了零信任网络中的最小特权的概念,还比较了它与单一操作系统最小特权的异同。
可变信任是零信任网络的一个令人兴奋的思想。传统网络策略关注的是允许哪些系统以何种方式进行访问。这种二元决策框架容易导致两类问题,一方面可能导致策略定义太严格,使用过程中需要不断进行人为调整;一方面可能导致策略定义太宽松,使安全系统事实上缺少安全断言。此外,传统的策略框架基于交互的具体细节来定义策略,这会使其不可避免地陷入类似“猫捉老鼠”的状况,总是需要根据曾经遭遇过的威胁不断调整策略。零信任模型提出了可变信任的概念,使用一个数值来代表系统组件的信任级别,然后基于这个数值编写策略,使得一条策略能够有效覆盖一定的范围,又不会因为边界条件过多而使策略复杂化。因为使用了不那么具体的细节来定义策略,并在授权判定时引入了信任评分,所以这样的授权系统能够应对新出现的威胁。
零信任网络明确区分了控制平面系统和数据平面系统。本章从较高的逻辑层面讨论了两个系统之间的交互方式,以及如何确保网络流量按照期望在网络中流动。本书后续章节将进一步探讨控制平面系统和数据平面系统的详细内容。
从第3章开始,我们将深入讨论零信任网络用于执行授权操作的基本要素。