1. 授权
1.1. 授权决策不容忽视,所有访问请求都必须被授权
1.2. 数据存储系统和其他各支撑子系统是授权的基石
1.2.1. 子系统提供访问控制的权威数据源和评估依据,直接影响授权决策
1.2.2. 谨慎区分各子系统的职责和能力,需要将其严格隔离
1.2.3. 尽量避免将它们合并到一个单体系统实现
2. 授权体系架构
2.1. 策略执行组件
2.1.1. 在整个零信任网络中大量存在,部署时需要尽可能地靠近工作负载
2.2. 策略引擎
2.2.1. 依据事先制定好的策略,对请求及其上下文进行比较并做出决策,根据决策结果通知策略执行点对访问请求放行还是拒绝
2.3. 信任引擎
2.3.1. 策略引擎调用信任引擎,利用各种数据源分析并评估风险
2.3.2. 风险评分类似信用等级,能有效防护未知威胁,通过风险评分可以提升策略的安全性和鲁棒性,又不至于因为考虑各种边界场景而引入复杂性
2.4. 数据存储系统
2.4.1. 授权决策依据的大量数据都存放在数据存储系统中,各种数据库构成了授权决策的权威数据源,基于这些数据,可以将所有请求的上下文清晰地描绘出来
2.4.2. 一般使用认证阶段已经确认的实体标识信息作为数据库的主键,用户名和设备序列号都是常用的实体标识
2.4.3. 数据存储系统是授权决策过程的重要支撑系统
2.5. 组件职责各不相同
2.5.1. 视为不同的子系统,从安全的角度来看,将这些组件彼此隔离大有必要
2.5.2. 授权组件是零信任安全模型的核心构成要素,其安全性至关重要,可维护性也需要妥善评估
2.5.3. 不管出于任何目的,如果不得不把这4大组件合并到一个单体系统实现,那么其可行性和安全性都必须谨慎评估,最好是尽量避免这种实现方式
3. 策略执行组件
3.1. 两大职责
3.1.1. 和策略引擎交互完成授权决策
3.1.2. 授权决策结果的强制执行
3.1.3. 可以通过一个组件实现,也可以由两个系统组件来分别实现
3.2. 策略执行组件的位置非常重要
3.2.1. 作为零信任网络在数据平面的实际控制点,它也可以被称为策略执行点
3.2.2. 需要确保其部署位置尽量靠近终端,否则信任“收缩”到策略执行组件之后,零信任的安全性可能会受到影响
3.3. 策略执行组件确保策略引擎的授权决策对所有的网络请求生效,一般位于用户流量必经的数据平面,通过调用策略引擎进行授权决策并强制执行
4. 策略引擎
4.1. 策略引擎基于系统管理员制定的策略和数据存储系统中存放的数据进行授权决策,是零信任网络的关键组件,其运行环境应该被严格地物理隔离
4.1.1. 在策略引擎和策略执行组件之间进行进程级隔离还是必须的
4.1.2. 将策略引擎作为独立的进程进行部署,能确保其不受策略执行组件因为Bug或漏洞而导致的网络攻击的影响
4.2. 策略引擎是零信任授权模型中进行授权决策的组件
4.2.1. 接收来自策略执行组件的授权请求
4.2.2. 和预先制定好的策略进行比较,决定请求是否被允许
4.2.3. 决策结果返回策略执行组件进行强制执行
4.3. 低延迟授权系统适用于对网络活动进行细粒度的复杂授权
4.3.1. 一种可能的场景是作为策略执行组件的负载均衡器通过进程间通信(IPC)机制而不是网络远程调用发起授权请求,这种架构可以降低授权决策的时间延迟,此优势在某些场景下很有吸引力
4.3.2. 授权的低延迟就至关重要
4.4. 版本控制系统
4.4.1. 传统的变更管理流程不能很好地满足策略存储的需求,为了能通过程序自动对系统进行配置,版本控制系统应运而生
4.4.2. 使用版本控制系统,策略规则数据可以通过程序自动读取和使用,加载特定版本的策略就像部署一个软件一样简单,而不是像以前一样依赖系统管理员手动加载期望的策略版本
4.4.3. 系统管理员可以使用成熟的标准软件开发过程来管理策略的变更,比如代码回顾、持续集成等软件开发管理的技术手段都能派上用场
4.5. 策略存储系统
4.5.1. 策略引擎进行授权决策时所使用的规则需要被持久化存储,策略规则虽然最终被加载到策略引擎模块中,但是其制定、存储和管理最好独立于策略引擎
4.5.2. 将策略规则存放在版本控制系统中是一种值得推荐的方案
4.5.2.1. 策略的变更可持续跟踪
4.5.2.2. 策略变更的缘由可通过版本控制系统进行跟踪
4.5.2.3. 策略配置的当前状态可通过实际的策略执行机制进行验证
4.6. 制定策略
4.6.1. 零信任网络策略使用信任评分对未知攻击向量进行预估和防护,制定策略时引入信任评分机制,管理员可以很好地缓解未知威胁,这种威胁很难通过一条具体的策略进行匹配和处置,因此,应该尽可能地采用信任评分机制
4.6.2. 零信任策略尚未标准化
4.6.2.1. 在零信任网络框架下,良好的策略往往是细粒度的,粒度的粗细一般和网络的成熟度有关
4.6.2.2. 零信任模型和传统网络安全在策略上的差异点主要体现在用于定义策略的控制机制不同
4.6.2.2.1. 零信任策略不基于网络具体信息(如IP地址或网段),而是基于网络中的逻辑组件来制定策略
4.6.2.2.1.1. 网络服务
4.6.2.2.1.2. 设备终端分类
4.6.2.2.1.3. 设备终端分类
4.6.2.3. 基于网络中的逻辑组件定义策略,有利于策略引擎充分利用网络的当前状态等各类信息作为授权决策依据
4.6.3. 尚无策略描述标准
4.6.3.1. 目前成熟的零信任网络方案大多是非公开的,它们采用了私有的策略语言和格式
4.6.3.2. 标准的、互操作性强的策略语言,其价值毋庸置疑,但遗憾的是,标准化工作目前尚未实质性开
4.6.3.3. 策略不仅仅依赖信任评分,访问请求包含的其余属性对策略制定和授权决策也不可或缺
4.7. 需要将策略定义和管理的权责开放给资源或服务的所有者,以便分担管理员的策略维护压力
4.7.1. 将策略定义权限开放给服务所有者会引入一些潜在风险
4.7.2. 一种有效的流程是策略审查
4.7.2.1. 策略都是基于逻辑实体进行定义的,和针对物理实体定义策略的传统方式相比,前者变更的频率会低很多
4.7.3. 另外一种手段是实施分层策略
4.7.3.1. 策略引擎可以默认拒绝来自非信任源的宽松的策略定义和声明
4.8. 策略引擎周期性地从权威清单库读取各类实体的属性值,并基于一定的算法进行风险评分计算
4.8.1. 对风险进行量化并不简单,一种可行的方案是定义一系列专门的规则来对实体的风险评分进行估计
5. 信任引擎
5.1. 信任引擎作为安全系统的新面孔,基于静态规则或机器学习算法计算访问请求的信任评分
5.1.1. 信任引擎是对特定的网络请求或活动进行风险分析的系统组件
5.1.2. 其职责是对网络请求及活动的风险进行数值评估,策略引擎基于这个风险评估进行进一步的授权决策,以确定是否允许此次访问请求
5.1.3. 信任评分是对系统和组件当前信任程度的量化表示,策略制定者可以基于访问资源所需的信任等级来定义策略
5.1.4. 信任引擎是使用历史数据的主要组件
5.2. 成熟的信任引擎除了使用静态规则,还大量采用机器学习技术来实现信任评分功能
5.2.1. 信任引擎一般会混合使用基于规则的静态评分方法和机器学习方法
5.2.2. 机器学习通过将活动数据的一个子集作为训练数据进行模型训练,推导出评分函数,这些训练数据来自于原始观测,每一条训练数据都和一个信任或不信任的实体相关联,即这些数据已经进行了明确的标定
5.3. 哪些实体需要评分
5.3.1. 应该对攻击者的网络代理进行阻止,这样可以保证合法用户的网络代理不受影响
5.3.1.1. 需要将网络代理作为整体进行风险评分
5.3.2. 仅仅对网络代理进行整体评分是无法对抗其他攻击向量的
5.3.2.1. 设备本身也应该被单独评分
5.3.3. 内部威胁场景
5.3.3.1. 一个恶意用户使用多台网吧设备窃取机密的交易数据,信任引擎应该识别这类行为,并为后续的授权决策持续地给出较低的信任评分,即便此用户换用其他设备发起访问也不能改变其信任评分
5.3.3.2. 用户及其行为需要被单独评估
5.3.4. 应该同时对网络代理及网络代理的构成要素(设备、用户及应用程序)进行风险评分
5.4. 在很多场景下,一个实时的综合信任评分就足够了,但这样会对信任引擎的可用性提出更高的要求
5.4.1. 为了动态选择最佳的评分函数,信任引擎必须知道被授权请求的上下文信息,这种方案的构建和运维都会变得更加复杂
5.5. 信任评分的暴露存在风险
5.5.1. 实体的信任评分看似并不机密,但仍然需要尽量避免将信任评分暴露给最终用户
5.5.2. 对于潜在攻击者,当前信任评分无疑是一种提示信号,让他们可以知悉自己在当前系统中的信任度正在上升还是下降,从而进行更多的攻击尝
5.5.3. 隐藏信任评分也需要适度,不要让最终用户完全无法理解他们的行为是如何影响信任评分的,安全和易用需要适量平衡
5.5.4. 一种较好的折中方式是,不直接提供信任评分给用户,但明确标识出能提升信任评分的影响因子
6. 数据存储系统
6.1. 零信任网络的权威数据库存放系统当前和历史的各类数据
6.1.1. 策略引擎直接或间接地使用这些数据进行授权决策
6.1.2. 策略引擎、信任引擎甚至其他第三方系统都大量使用这些数据库作为信任源,使用率较高
6.2. 用于授权决策的数据库可以被视为系统当前和历史状态的权威数据源
6.2.1. 数据库存放的信息被控制平面的各个系统使用,是授权的一个重要的决策依据
6.3. 存放在控制平面数据库内的信息通过授权系统,最终传递给策略引擎进行授权决策
6.3.1. 这些数据被策略引擎直接或间接使用
6.3.2. 当其他系统需要知道网络的当前状态时,这些数据库也是非常有用的权威数据源
6.4. 按照功能划分的数据库
6.4.1. 清单库
6.4.1.1. 清单库是记录资源当前状态的权威数据源
6.4.1.2. 用户清单库存放所有的用户信息
6.4.1.2.1. 用户清单库一般使用用户名做主键
6.4.1.3. 设备清单库则记录公司所有在册的设备的最新信息
6.4.1.3.1. 设备清单库则使用设备序列号做主键
6.4.2. 历史库
6.4.2.1. 历史数据库的种类可能多种多样,基于这些数据可以进行的风险分析也无穷无尽
6.4.2.2. 无论哪类历史数据,都必须能够通过设备清单库或用户清单库的主键(如设备序列号或用户名)进行查询