译者简介
以身份为中心、业务安全访问、持续信任评估、动态访问控制”
译者序
“从来不信任,始终在校验”(Never Trust, Always Verify)是零信任的核心思想。
默认情况下不应该信任网络内部和外部的任何人、设备、系统和应用,而是应该基于认证和授权重构访问控制的信任基础,并且这种授权和信任不是静态的,它需要基于对访问主体的风险度量进行动态调整。
从网络中心化走向身份中心化,其本质诉求是以身份为中心进行细粒度的自适应访问控制
随着企业数字化转型的逐渐深入,以云计算、微服务、大数据、移动计算为代表的新一代信息化建设浪潮愈演愈烈,IT 基础设施的技术架构发生了剧烈的变革,导致传统的内外网络边界变得模糊,很难找到物理上的网络安全边界,企业自然无法基于传统的边界安全架构理念构筑安全基础设施。
2017 年,Google 对外宣布其基于零信任架构实践的新一代企业网络安全架构——BeyondCorp 项目成功完成,为零信任在大型、新型企业网络的实践提供了参考架构
零信任是一种全新的安全架构,但其核心组件基于身份与访问管理技术、终端设备环境风险评估技术、基于属性的访问控制模型、基于机器学习的身份分析技术等构建
第二,零信任架构认为网络是不可信任的,因此不再寄希望于在传统的网络层面增强防护措施,而是把防护措施建立在应用层面,构建从访问主体到客体之间端到端的、最小授权的业务应用动态访问控制机制,极大地收缩了攻击面;采用智能身份分析技术,提升了内外部攻击和身份欺诈的发现和响应能力
前言
安全应当与系统的运营管理从根本上融为一体,而不是建立在系统之上;安全应当自始至终与系统并存,要为系统赋能而不能成为其运行的障碍。
采用零信任模型,可以从根本上解决外部攻击者在网络中的横向移动问题、令人头痛的 VPN 配置管理问题,以及防火墙集中式安全策略管理带来的管理开销问题等。
配置管理系统(Configuration Management System, CMS)
目前零信任网络主要是利用现有的软件组件和定制化软件,以全新的方式集成在一起构建起来的。
第 1 章 零信任的基本概念
零信任模型旨在解决“基于网络边界建立信任”这种理念本身固有的问题。零信任模型没有基于网络位置建立信任,而是在不依赖网络传输层物理安全机制的前提下,有效地保护网络通信和业务访问。
1.1 什么是零信任网络
零信任网络的概念建立在以下 5 个基本假定之上。• 网络无时无刻不处于危险的环境中。• 网络中自始至终存在外部或内部威胁。• 网络的位置不足以决定网络的可信程度。• 所有的设备、用户和网络流量都应当经过认证和授权。• 安全策略必须是动态的,并基于尽可能多的数据源计算而来。
缺乏网络内部的流量检查。• 主机部署缺乏物理及逻辑上的灵活性。• 存在单点故障。
VPN 的作用是对用户进行身份认证并分配 IP 地址,然后建立加密的传输隧道。用户的访问流量通过隧道传输到远程网络,然后进行数据包的解封装和路由。
零信任架构的支撑系统称为控制平面,其他部分称为数据平面,数据平面由控制平面指挥和配置。访问受保护资源的请求首先经过控制平面处理,包括设备和用户的身份认证与授权。细粒度的控制策略也在这一层进行,控制平面可以基于组织中的角色、时间或设备类型进行授权。如果用户需要访问安全等级更高的资源,那么就需要执行更高强度的认证。
1.2 边界安全模型的演进
1994 年 3 月,RFC 1597 宣布 IANA 为私有网络保留 3 个 IP 地址范围:10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16。
这就意味着他们需要一个可公开访问的邮件服务器,也意味着他们需要以某种方式连接到互联网。
发展到这一步,边界安全模型就诞生了。内部网络变成了“安全”的网络,受到严格控制的服务器所部署的位置成为 DMZ,即隔离区。
RFC 1631 为网络设备定义了一个标准,使其能够在组织的网络边界执行 IP 地址转换。通过维护一张公共 IP/端口与私有 IP/端口的映射关系表,NAT 设备能够使私有网络中的设备访问任意的互联网资源。
因为 IP 地址映射关系是多对一的,所以源自互联网的连接无法访问内部的私有 IP 地址,除非事先在 NAT 设备上进行专门的配置来处理这种特殊情况。
通过在内部网络和互联网之间部署防火墙/ NAT 设备,能够清晰地划分安全区域,包括组织内部的“安全”区、隔离区和不可信区域(互联网)。
1.3 威胁形势的演进
特洛伊木马欺骗用户安装恶意软件,然后打开一个端口等待连接请求。攻击者可以连接到这个开放的端口并远程控制目标计算机。
硬件防火墙能够在网络边界处强制执行安全策略,确保只允许列入白名单的“安全”的互联网流量进入内部网络。
引入 NAT 原本的目的是使内部网络中的计算机能够访问互联网,现在它却变成了安全控制设备。
恶意代码可以从内部网络向互联网上的主机发送消息,这就是今天我们都已经了解的攻击技术——回连(Phoning Home)。
这种漏洞的有效负载非常小,只要建立起与远程互联网主机的连接,能够执行接收到的可执行代码即可。这类恶意代码通常被称为拨号器(Dialer)。
客户端发起与攻击相关的连接,能够轻松穿透出站安全策略配置不强的防火墙
出站安全是一种非常有效的对抗拨号回连攻击的方法,可以检测并阻止拨号器回连的出站网络连接。
边界安全模型的主要缺陷看起来有些微妙,但也是非常清晰的:基于网络区域定义安全策略,仅在网络边界处强制执行,并且仅使用了源和目标信息进行安全决策。
1.4 边界安全模型的缺陷
攻击者有无数种方法把远程访问工具(Remote Access Tool, RAT)投递到内部网络中以获得远程访问权限,然后开始在内部网络中横向移动。边界防火墙就像那些为了防止间谍入侵而在城市周边修建的城墙一样,作用越来越小。
恶意软件通过拨号器回连的方式可以轻松地穿透边界安全设备,不同安全区域之间的防火墙在执行安全策略时只使用了源和目的地址作为判别依据。
在网络安全方面出现的最糟糕的情况是什么?这个问题的答案虽然有些绝对,但还是可以回答:信任出了问题。
1.5 信任在哪里
信任级别(Trust Level)定义了所需安全协议强度的下限。
什么是零信任网络?顾名思义,就是一个完全不可信的网络。
零信任模型认为,主机无论处于网络的什么位置,都应当被视为互联网主机。它们所在的网络,无论是互联网还是内部网络,都必须被视为充满威胁的危险网络。
1.6 自动化系统的赋能
如果策略执行不能动态更新,那么零信任网络就无法实现,因此,策略执行过程的自动化和速度是问题的关键。
配置管理系统的广泛应用是构建零信任网络的重要基础,因为这类系统通常管理维护设备清单库,并能自动化处理数据平面中的网络策略配置。
1.7 边界安全模型与零信任模型的对比
零信任模型不是依靠建造城墙来保护墙内柔弱的身体,而是让全体民众都拥有了自保的能力。
我们不仅需要保护主机免受来自外部的攻击,还需要保护它们免受相互之间的攻击。
攻击者并不仅限于发起主动攻击,他们还可以执行被动攻击,通过监听网络流量获取敏感信息。在这种情况下,仅有主机的身份标识是不够的,还需要对网络流量进行强加密处理。
零信任网络有 3 个关键组件:用户/应用程序认证、设备认证和信任。
最后,零信任模型需要计算出“信任评分”(Trust Score),并将应用程序、设备和信任评分绑定在一起形成“代理”(Agent),然后基于代理实施安全策略,进行访问请求的授权。
另外,控制平面的每个事件和每项操作都会被记录下来,用于完成基于访问流或访问请求的审计工作。
采用密码学技术对身份进行强认证,意味着对于任意连接都可以不用在意它的源 IP 地址到底是什么
边界安全模型的根本缺陷是缺乏全局性防护和安全策略强制执行
1.8 云环境的应用
在零信任模型中,计算资源不依赖 IP 地址或网络的安全性即可进行身份验证和安全通信,这种能力意味着可以最大程度地把计算资源商品化。
由于零信任模型主张加密所有通信数据,哪怕通信双方位于同一个数据中心内部,因此管理员不需要操心哪些数据包流经互联网,哪些不流经互联网。
不能认为数据中心内部的网络流量就是安全的,就能够防监听、防篡改
1.9 总结
零信任模型首先假设内部网络中同样存在恶意的攻击者,并据此建立安全机制来防范这种威胁。
第 2 章 信任管理
信任管理是零信任网络的一个重要功能。
如果不存在与生俱来的信任,那么就必须从某个地方产生信任并小心地管理它。
能够返回给系统管理员的这一串信任通常被称为信任链(Trust Chain),而系统管理员被称为信任锚(Trust Anchor)。
2.1 威胁模型
威胁模型用来描述潜在的攻击者及其能力、资源以及意图攻击的目标
威胁模型作为一种机制,可以帮助我们聚焦于某个具体的威胁,并仔细思考缓解该威胁的具体措施。
网络安全领域有多种威胁建模方法,以下这几种都是流行的建模工具。• STRIDE。• DREAD。• PASTA。• Trike。• VAST。
RFC 3552 描述了互联网的威胁模型。
零信任网络的防御目标是那些常见类型(不是所有类型)的攻击者。
零信任模型仅需要保证用于认证和授权操作的信息的机密性,如存储在磁盘上的凭据的机密性。至于对端点系统安全性的进一步要求,如全盘加密等,是其他安全策略需要考虑的问题。
2.2 强认证
如果没有办法把物理世界中的人与其数字世界中的身份联系起来,那么无论采用什么方法都无法真正建立对一个人身份的信任
X.509 证书是 TLS 协议(以前是 SSL 协议)用来验证连接的主要机制。
TLS 协议本身支持双向身份认证,即被访问的资源也同样可以验证客户端的身份。
但该机制仍然依赖于一个秘密,而这个秘密可能会被窃取。通过网络搭线窃听这种方式虽然行不通了,但是攻击者仍然可以使用恶意软件感染或物理接触的方式窃取这个秘密。
管理员更改或更新密钥/口令的行为被称为凭据轮换(Credential Rotation)
2.3 认证信任
PKI 定义了一组角色及其职责,能够在不可信的网络中安全地分发和验证公钥。
因为 X.509 数字证书标准支持证书链,所以根 CA 可以保持离线状态。离线状态的根 CA 可以得到更好的安全保护,这也是绝大多数 PKI 体系的根 CA 的标准做法。
PKI 是零信任模型身份认证的基石,大多数零信任网络都采用 PKI 来证明身份的真实性。
零信任网络颁发的证书数量可能会很多,因此非常有必要对证书进行自动化管理
虽然公共 PKI 非常适合作为互联网的信任基础设施,但是却不适合零信任网络。
对零信任网络来说,公共 PKI 也有许多缺点,其中一个突出缺点是成本。
零信任网络可能会使用大量的证书,如果考虑到凭据轮换策略,证书的使用量会更大,这会产生高昂的证书签发费用,很多组织难以承受。
公共 PKI 系统还有另外一个重大缺点,那就是 CA 机构的可信度问题。
最后,使用公共 CA 会影响零信任网络的灵活性和可扩展性。
无论选择哪种 PKI,都需要在自动化管理方面下功夫,这是建设零信任网络的首要工作。
2.4 最小特权
最小特权原则是指一个实体应该只被授予完成任务所需要的特权,而不是被授予该实体想要得到的权限。
以保护隐私的名义进行网络数据包加密是一种经常被忽视的最小特权应用
如果确实需要更高的访问权限,那么用户可以并且只能在需要的时候获得这些特权
对于风险相对较低的操作,特权提升过程可以很简单,只需重新提示用户输入口令、要求出示双因素认证令牌或者给用户的手机推送认证通知。对于高风险的操作,可以选择通过带外方式要求相关人员进行主动确认。
但是人工参与认证付出的代价比较大,需谨慎使用,而且使用得太频繁也会失去效用。
零信任网络也应当为应用程序配置最小特权
零信任网络把用户或应用程序与其所使用的设备进行绑定,作为一个整体授予相应的特权。
静态安全策略存在两个问题。首先,在管理相对宽松的组织中,特权数量会随着时间的推移而逐渐增长,最终导致最小特权原则失效。其次,无论组织的管理是宽松还是严格,系统管理员都被赋予了更高的访问权限,这会导致其成为攻击者实施网络钓鱼攻击的主要目标。
零信任网络依靠网络活动的诸多属性来分析当前访问请求的风险。这些属性可以是时间属性(比如某用户在正常活动时间窗口之外的访问请求更加可疑)、空间属性(比如某用户从与上次访问不同的地理位置发起访问请求),甚至行为属性(比如某用户试图访问通常情况下不应该访问的资源)。
基于网络活动的风险分析主动调整访问权限的能力是零信任网络的安全特性之一
2.5 可变的信任
安全网络的黄金标准或许应该是这样的:根本就不存在高特权的系统管理员!
信任池问题凸显了传统网络信任管理的根本性缺陷:安全策略动态性不足,无法应对日益变化的网络安全威胁。
安全策略的定义不仅基于确定性的描述,还要基于不断变化的度量分值,这为系统提供了一种防御任意威胁的机制
零信任网络不再给网络参与者定义和分配基于二元决策的策略,而是持续监视参与者的网络活动,并据此持续更新其信任评分,然后使用这个评分作为授权策略判定的依据之一
如果网络访问请求的路径中部署了负载均衡设备或代理服务器,那么就能够看到应用数据,也就有机会进行深度包检测和授权操作。
基于信任评分的策略模型也不是没有缺点。其中一个问题是,单一的评分值是否足以保护所有的敏感资源。用户的信任评分能够基于历史行为而降低,同样也可以基于历史的可信行为而增加。那么,攻击者是否有可能通过在系统中慢慢建立信任,从而获得更高的访问权限呢?
2.6 控制平面和数据平面
数据平面的作用是转发网络流量,它需要高速处理数据包,因此其处理逻辑相对简单,通常使用专用硬件。控制平面可以看作是网络设备的大脑,系统管理员用它来配置管理网络设备,因此控制平面会随着策略的变化而变化。
任何在数据平面执行的策略行为,都要尽可能减少向控制平面发送请求(相对于网络流量速率来说)
零信任网络中的数据平面由直接处理网络流量的应用程序、防火墙、代理服务器和路由器组成。
控制平面的组件检查发起请求的系统的相关数据,以确定该操作的风险有多大,同时检查相关策略以确定访问该资源需要的信任度有多高
数据平面和控制平面系统之间的交互请求必须使用私有 PKI 系统进行身份认证和加密,以确保接收方的可信度。控制平面和数据平面之间的接口应当类似于操作系统内核空间和用户空间之间的接口,为了防止提权攻击,两个系统之间的交互需要进行高度隔离。
控制平面是整个网络的信任授予者。
控制平面授予数据平面的某个参与者的信任应该具有时效性。信任应当是临时性的,信任委托方和信任受托方之间需要定期履行确认手续,才能保证持续信任的合理性。
2.7 总结
威胁模型主要包括两部分内容,一是枚举针对系统的威胁,二是定义能够缓解这些威胁的系统和过程。
PKI 是提供身份认证的最佳方法
最小特权是零信任网络的关键思想之一
可变信任是零信任网络的一个令人兴奋的思想
零信任模型提出了可变信任的概念,使用一个数值来代表系统组件的信任级别,然后基于这个数值编写策略,使得一条策略能够有效覆盖一定的范围,又不会因为边界条件过多而使策略复杂化。
第 3 章 网络代理
用户和设备的这种绑定关系称为网络代理,这是零信任网络引入的一个非常重要的概念。
3.1 什么是网络代理
网络代理指在网络请求中用于描述请求发起者的信息集合,一般包括用户、应用程序和设备共 3 类实体信息。
信任评估系统会根据访问活动日志之类的信息进行实时计算,并更新用户、应用程序和设备的信任评分。
网络代理包含的数据越详细,数据的差异性就越是明显,必须予以解决。
网络代理包含的不同类型的数据,其优先级、粒度都有所差异,典型的网络代理可能包含如下数据。• 网络代理信任评分。• 用户信任评分。• 用户角色或群组。• 用户居住地。• 用户认证方式。• 设备信任评分。• 设备制造厂商。• TPM 制造厂商和版本号。• 当前设备位置。• IP 地址。
3.2 如何使用网络代理
在零信任网络模型下,授权的主体必须是网络代理,因此,所有的访问控制策略都是针对网络代理制定的。
评估网络代理的信任度时,信任引擎不仅仅可以使用网络代理自身包含的信息,还可以使用其历史行为记录。
一般来说,认证是面向会话的,而授权是面向请求的。
认证是向远程系统证明身份的过程,授权则是基于这个已证明的身份决定用户是否具有访问资源的权限。
3.3 如何适当地暴露网络代理
控制平面的系统应该在逻辑上和物理上都与数据平面隔离,应该定义明确的边界,并且不要频繁变更。
策略判定依赖访问代理,既然访问代理的数据位于控制平面,那么策略判定就应该在控制平面完成。
将网络代理的信息暴露给下游应用程序,也有利于兼容应用系统既有的丰富的授权机制
3.4 标准的缺失
网络代理。缺乏明确的规范,零信任网络就难以一致地对这些数据进行处理。同时,当需要引入新的控制平面组件或网络代理数据时,由于缺乏标准,因此这种系统扩展的代价将变得使人难以承受,而按需扩展和伸缩性对一个成熟的零信任网络来说至关重要。
3.5 总结
网络代理属于授权范畴,它参与授权决策,不属于认证范畴,但认证的结果和状态会在网络代理的数据中有所体现。
4.1 授权体系架构
• 策略执行组件。• 策略引擎。• 信任引擎。• 数据存储系统。
策略执行组件在整个零信任网络中大量存在,部署时需要尽可能地靠近工作负载。策略执行组件直接影响授权决策的结果,在实际场景中,可以由负载均衡器、代理服务器甚至防火墙充当策略执行组件的角色。
一般使用认证阶段已经确认的实体标识信息作为数据库的主键,用户名和设备序列号都是常用的实体标识
4.2 策略执行组件
策略执行组件有两大职责。第一,和策略引擎交互完成授权决策,比如,负载均衡器收到一个请求时需要通过授权并获悉此请求是否被允许。第二,授权决策结果的强制执行。
策略执行组件的位置非常重要,作为零信任网络在数据平面的实际控制点,它也可以被称为策略执行点,需要确保其部署位置尽量靠近终端,否则信任“收缩”到策略执行组件之后,零信任的安全性可能会受到影响。实际实现中,策略执行点可以作为客户端组件在系统中大量部署,这一点和其他组件不同,其他组件大多数是作为服务组件进行部署。
4.3 策略引擎
策略执行组件和策略引擎的这种部署关系能很好地支持动态、实时、按需的授权决策,并且在必要的时候,快速撤销授权结果
在策略引擎和策略执行组件之间进行进程级隔离还是必须的
将策略规则存放在版本控制系统中是一种值得推荐的方案
零信任策略不基于网络具体信息(如 IP 地址或网段),而是基于网络中的逻辑组件来制定策略,这些逻辑组件可能包括以下几种。• 网络服务。• 设备终端分类。• 用户角色。
需要将策略定义和管理的权责开放给资源或服务的所有者,以便分担管理员的策略维护压力。
一种有效的流程是策略审查
另外一种手段是实施分层策略。
4.4 信任引擎
策略引擎周期性地从权威清单库读取各类实体的属性值,并基于一定的算法进行风险评分计算。
成熟的信任引擎除了使用静态规则,还大量采用机器学习技术来实现信任评分功能。
信任引擎一般会混合使用基于规则的静态评分方法和机器学习方法。
应该同时对网络代理及网络代理的构成要素(设备、用户及应用程序)进行风险评分
不直接提供信任评分给用户,但明确标识出能提升信任评分的影响因子。
4.5 数据存储系统
清单库是记录资源当前状态的权威数据源,用户清单库存放所有的用户信息,设备清单库则记录公司所有在册的设备的最新信息。
4.6 总结
策略引擎基于系统管理员制定的策略和数据存储系统中存放的数据进行授权决策,是零信任网络的关键组件,其运行环境应该被严格地物理隔离。
信任引擎作为安全系统的新面孔,基于静态规则或机器学习算法计算访问请求的信任评分
第 5 章 建立设备信任
建立设备信任是基石,直接影响零信任网络架构的成败
5.1 初始信任
众所周知的首要原则被称作“黄金镜像”,无论以何种方式收到设备,都需要加载一个明确的“好”镜像,这个镜像就是“黄金镜像”。
记录设备上次重新加载镜像的时间可以在一定程度上决定设备的可信程度。
安全启动是防护此类攻击的方法之一,通过在设备固件内嵌入的公钥对驱动程序和操作系统引导程序进行签名验证,可以确保这类非法植入物无所遁形。
典型做法是通过私有 CA 为每台设备签发单独的设备证书,进行网络通信时,设备必须提交此证书。设备证书不仅仅能证明设备是已知在册的,还能证明设备的唯一身份。使用设备证书的详细字段信息和设备清单库中的数据进行比较,还能为授权判定提供参考因子。
迄今为止存储设备密钥的一种极好的方法是使用安全的加密处理器。这些设备[通常被称为硬件安全模块(HSM)或可信平台模块(TPM)]提供可以执行加密操作的安全区域。
通过使用一次性动态口令(TOTP)可以在单个步骤中完成部署和签名授权
无论如何,为了实现应用的零信任安全,所有应用和系统组件都应该身份化,这一原则是不变的,这同时适用于主机中心化和容器中心化的环境。
5.2 通过控制平面认证设备
X.509 是当之无愧的设备身份和认证方面的重要标准,它定义了公钥证书、吊销列表的证书格式和验证证书链的方法。
使用私钥加密一小段数据,则这段数据只能通过对应的公钥进行解密,从而证明证书所有者确实持有证书私钥。
硬件安全模块(HSM)在私钥的保护方面迈出了一大步,它们可以通过硬件生成密钥对并且将私钥保存在安全存储区内,安全存储区的私钥是禁止直接读取的,只能通过 HSM 提供的接口请求其使用私钥来进行指定的运算
零信任网络的每个设备都应该拥有 X.509 证书。
可信平台模块(TPM)是一种嵌入到计算设备中的特殊芯片,这种芯片一般称为加密处理器,用于以可信和安全的方式进行密码运算
TPM 生成并存储所谓的存储根密钥(Storage Root Key, SRK),这个密钥对代表了 TPM 设备的信任根
5.3 设备清单管理
零信任网络模型主张跟踪工作负载流量以便进行细粒度的网络策略
零信任网络的强大之处在于系统预期的明确,什么应该发生和什么不应该发生是很清晰的。
为了应对客户端的这种略显野性的复杂场景,需要稍微不同的解决方案。一种可行的方案是允许各类全局访问,但确保所有的通信都使用双向认证的 TLS 连接进行保护,强制客户端提供设备证书,否则双向认证的 TLS 连接将无法建立。
5.4 设备信任续租
没有完美的安全,也没有永远的安全。
对设备的信任进行续租,一种可能的方案是度量,可以分为两类:本地度量和远程度量。
基于硬件的度量更加安全可靠,但是受限于硬件的能力;基于软件的度量安全性和可靠性稍弱,但是在实践中,其度量能力会更加强大。
一种较好的基于硬件的度量方法是利用 TPM 实现远程证明。
5.5 软件配置管理
配置管理是严格控制和记录所有软件变更的过程,所需的配置被定义为代码或数据,这些信息通常被提交到版本控制系统进行管理,以便进行变更审计、回滚之类的操作。
5.6 使用设备数据进行用户授权
设备认证一般在用户认证之前完成,因此设备认证不应该依赖用户认证阶段获取的任何信息,用户认证则与之相反。
6.3 身份的存储
最好用几个相互隔离的数据库代替单一数据库来存储所有用户信息。理想情况下,这些数据库仅仅可以通过受限的 API 接口进行访问,这样最大程度地限制了信息的暴露面。最好的情况是,永远不要直接暴露原始数据,而是通过有权访问这些数据的应用程序开放访问接口,通过这些接口对一个用户的信息进行断言式查询,比如一个存储用户历史位置坐标的系统可以开放如下接口。
6.4 何时进行身份认证
认证用户实际上就是系统验证用户是否是他声称的那个人。
认证的目的是获取信任,但切记不要毫无目的地让用户通过各种认证挑战,而是应该根据期望的信任等级设定认证需求的机制。
信任评分驱动的认证机制摒弃绝对的一次性的认证需求,取而代之的是一种自适应的按需认证和授权机制。
对请求进行授权时若采用控制平面令牌代替应用令牌,那么当信任等级波动时,可以更方便高效地更改授权判定,及时撤销授权。
6.5 如何认证身份
用户所知道的信息:只有用户本人知道的信息(如密码)。• 用户所持有的凭证:用户可以提供的物理凭证(如时间型动态口令令牌)。• 用户所固有的特征:用户的固有特征(如指纹或视网膜)。
在任何情况下,都不能以明文形式直接存储密码,而应该存储密码的加密散列值
推荐使用移动设备/手机上的应用程序来产生动态口令,大多数用户机不离手,因此,这种手机令牌非常便捷,已被广泛应用。
无论是使用硬件还是软件,TOTP 都要求用户和服务之间共享一个随机的种子密钥,将种子密钥和当前时间戳结合,使用一个加密散列算法就可生成一次性口令。
• 指纹。• 掌纹。• 视网膜扫描。• 语言分析。• 人脸识别。
单点登录(SSO)是一个非常成熟的概念。在 SSO 模式下,用户通过集中授权进行身份认证后会被授予令牌。此令牌会用于后续和其他受保护服务的通信,这些服务收到带有令牌的用户请求后,通过安全的传输通道向认证服务验证这些令牌的合法性。
• SAML。• Kerberos。• CAS。
6.8 信任信号
系统可以通过挖掘用户历史操作构建其行为基线,然后通过比较当前操作和其行为基线来计算用户的信任评分
第 7 章 建立应用信任
确保创建代码的人可信。• 确保从代码生成应用的过程可信。• 确保应用被部署到基础设施的过程可信。• 持续监控可信应用,防止应用程序被恶意程序所操纵。
7.3 构建系统的信任
构建所用的源代码是符合预期的。• 构建流程/配置是符合预期的。• 构建的执行本身安全可靠,未被操纵。
第 8 章 建立流量信任
网络流的验证和授权是零信任网络至关重要的机制。
8.1 加密和认证
加密提供机密性,用于确保只有接收者才能读取发送的数据;认证则用于确保接收者可以验证消息确实是由所声称的对象发送的。
8.2 首包认证建立初始信任
使用 UDP 进行预认证非常重要,因为 UDP 传输是无连接的,默认无须响应,这个特性允许信息接收方“隐藏”自己,只有其接收到采用正确密钥加密的数据包时才会做出响应暴露自己。
这种预认证操作模式也称为单包授权(Single Packet Authorization, SPA)。
8.4 零信任应该在网络模型中的哪个位置
目前有两大主流网络安全套件:TLS 和 IPSec。TLS(传输层安全,其前身是 SSL)相对较为常见,许多应用层协议支持通过 TLS 来保护流量;IPSec 是一种替代协议,通常用于 VPN 场景
8.5 协议
IKE 可以被认为是 IPSec 的控制平面,它处理会话协商和认证,使用协商的结果为端点配置会话密钥和加密算法。
8.6 过滤
• 主机过滤:过滤主机上的流量。• 双向过滤:同时过滤主机的出入流量。• 中间过滤:通过两个主机间的设备过滤流量。
第 9 章 零信任网络的实现
零信任不是可以拿来就用的产品,而是一组基于网络需求和约束的架构理念与原则。
9.1 确定实现范围
完整的零信任架构是一个理想的愿景,刚开始构建零信任网络时不需要满足全部需求,而应当在实现过程中逐步完善,这一点与构建基于边界安全架构的网络没有区别。
• 所有网络流量在处理前必须经过认证。• 所有网络流量在传输前应当被加密。• 必须由网络中的端点系统执行认证和加密。• 必须枚举所有网络流量,这样系统才可以执行强制访问控制。• 应当使用网络中安全强度最高的认证和加密算法套件。• 认证不应当依赖公共 PKI 供应商,而应当使用私有 PKI 系统。• 应当定期执行设备扫描、为设备安装补丁以及轮换设备。
在零信任网络中,系统接收到的所有数据包都是不可信的,因此在处理封装于数据包中的数据之前必须严格检查这些数据包,强认证机制是完成该项检查的首选方案。
必须由应用层的端点系统执行认证和加密
9.3 理解网络流量
网络流量是源系统和目标系统之间具有时间限制的通信
从逻辑上来说,捕获现有生产网络中的所有流量是现有网络系统向零信任模型转变的第一步。
9.4 无控制器架构
SAML(安全断言标记语言)、OAuth2 等都是用来集成应用系统和身份管理系统的协议和技术。
正确的做法是把账户管理、用户认证以及高级别的授权/访问等任务交给外部集中式身份管理系统完成,而应用系统保留应用级授权操作。
在后端系统中,对应用进行授权的较好方法就是在运行时插入一个临时凭证,可以是 API 密钥、短期证书等。每一个凭证都唯一代表了运行的应用实例。
零信任模型中的策略作用范围不再是网段之间的通信,而是设备之间的通信,这种机制有时也被称为“微边界”。
9.6 零信任代理
零信任代理是应用级代理服务器,用来保护零信任网络,它是处理认证、授权以及加密的基础设施。
零信任代理分为反向代理和前向代理两种工作模式
9.9 案例:Google BeyondCorp
基于用户身份而不是网络位置的访问控制体系,用于控制对应用、数据和服务的访问。
9.10 案例研究:PagerDuty 的云平台无关网络
PagerDuty 的零信任网络主要解决多平台公有云环境下服务器与服务器之间的安全交互问题。
10.3 枚举终端
在专注于保护网络隐私的系统中,连会话是否发生也是无从知晓的,Tor 就是典型的提供网络隐私保护的系统。机密性和隐私性是截然不同的两个概念,对网络隐私性的保护不在零信任模型关注的范围内。
10.7 无效性
在零信任网络语境下,无效性主要是指获得过授权的某个长期行为一直在持续,但其授权原本应该已经无效。