前言
在今年不同的安全会议中大家都开始宣讲一种之前国内关注不多的模式-零信任架构概念,在全球领域内该概念下实践较为前沿的是Google BeyondCorp项目。我目前所在的团队一直在各细分领域学习并对标Google&Amazon等厂的优秀安全架构方案,并有幸参与、设计公司的零信任架构项目并去实践落地,也会在不涉密的情况下持续分享一些我的拙见。
BeyondCorp与传统企业安全防护策略的不同
在今年某安全厂商的会上请来了提出零信任模型概念的约翰·金德维格(John Kindervag),通过我的所见所闻盲从的从业者将BeyondCorp项目与约翰·金德维格的Zero Trust Model完全混为一谈,二者在核心理念上同出一辙但实践的方向目前来看并不一致。Google BeyondCorp项目的5篇论文中大面积的篇幅都在引用受管设备概念,而约翰·金德维格侧重推动全流量不可信,从我的角度来看是既相同又不同的两种发展路径。
我在接触这套概念前所见到的企业安全建设将重心放在了由外至内的所有的链路上,并利用分层的方式阶梯式缓解攻击力度,而内部威胁的管控相对薄弱,当年同事间笑谈称之为“防君子不防小人”。在了解到Google BeyondCorp项目后让我眼前一新,其目的是在不信任内网的前提下实现无边界的可信访问,不同于传统企业安全防护策略所基于的可信边界划分机制,BeyondCorp将请求来源默认均视为从不可信边界发起,用“零信任安全”架构来取代基于网络边界构筑安全体系的传统实践方案。
在弃用了安全边界这个概念后,对用户的控制会聚焦在受管设备、网络准入、应用访问等精细化的颗粒上,细颗粒度的中心化访问控制鉴权将构筑新的企业安全核心。BeyondCorp对身份、设备、资源进行统一管理,通过集中的认证和授权机制,有效地对所有资源的访问进行控制。通过实时更新指纹库中的用户、设备、状态、资源及历史用户行为可信度等相关信息作为判定基础,利用动态的多轮打分机制对请求来源进行信任层级划分,并根据信任层级通过决策引擎动态调整访问控制规则,界定其可访问的区域,从而实现层级内的最小权限。这样做的显著收益点将是无论从办公网或是外部网络对内部系统、服务进行访问,安全部门都可以将其可能所产生的不可控风险转化为可控风险,进一步提高员工与相关设备访问内部网络时的安全性,从而帮助企业进行灵活、精细的信任决策控制,从而建起真正有效的信息安全架构。
基于设备指纹服务识别设备安全性
图1:BeyondCorp基础组件结构
如图1所示,图中向我们清晰地展现了BeyondCorp系统的组成结构。在Google BeyondCorp公开的论文中多次提到其项目中所倡导的“受管设备“概念,只有受管设备才能访问公司内部的系统、应用或其他资源。在设备的生命周期内任何信息的变更将通过Agent向设备库存服务上报存储,并提供给BeyondCorp的其他部分进行分析。Google采用多个数据仓库存储来自不同来源、类型的设备信息通过元库存数据库进行合并与归一化,在信息进行有效聚合后再提供给BeyondCorp的下游组件。
用户必须使用在公司系统中注册并持续管理的设备才能通过身份认证,那么如何识别设备、用户也就成了问题的关键。自PC时代起,设备识别就是互联网追踪用户的重要手段,传统的设备识别手段主要依赖于诸如浏览器、传感器等维度通过算法生成该设备的唯一标识符,以此辨别不同的设备。近年来从对抗角度来考虑笔者更为推崇的方式是通过设备信息的同源性做差异多轮打分,尽可能使用更多维度的数据参与匹配。通过分析与鉴别对每一组从前端采集的设备信息进行组合并赋予唯一的设备ID,用以标识该终端设备。
设备指纹是所有基于设备指纹服务进行访问控制的首要先决条件,根据当前设备环境和安全策略对设备进行区分。主机基础信息源建立完成后,可以按需开启Agent其他组件,以改善安全性、覆盖率、颗粒度、延迟时间和灵活性。BeyondCorp界定请求来源可访问的区域是通过将设备指纹服务中所存储的主机基础信息源、基线检查结果、最近一次主机执行基线检查的时间差等多维度数据动态的推送至BeyondCorp中的可信度推断系统进行联动,由可信度推断系统推断出请求来源所对应设备的信任层级,然后将打分结果输出给访问控制引擎通过RADIUS调度执行不同的访问策略同步至网关、VLAN、代码仓库等内部信息系统进行限制。
图2:BeyondCorp 设备指纹服务
在BeyondCorp的设计中,所有受管设备都需要在设备指纹数据库中进行注册。在完成注册行为且认证成功后,BeyondCorp会向设备推送用于每个不同设备的X.509证书作为持久性设备标识符,证书可以提供一个加密GUID,供加密网关将证书用于公司内部与服务间的所有通信。虽然证书可以标识设备唯一性,但不会将其作为例外规则授予设备访问权限;相反,证书信息同样会作为设备指纹中的一个关键子集。例如:如果证书发生变动,则该设备会被认为是另一个不同的设备,即使其他所有标识符都保持不变;如果证书安装在另一个不同的设备上,则Agent相关逻辑会上报证书冲突和辅助标识符的不符,通知BeyondCorp降低该设备信任层级。因此,有了证书并不表示该设备受信或不需要相关逻辑判定即可获得访问权限。设备鉴定过程中会验证证书存储的有效性,只有在例行的基线检查中被视为足够安全的设备才可以归类为受管设备,同时证书定期更新时会强制触发执行基线检查。
如图2所示,设备指纹服务需要从各数据源中提取数据持续更新。这些源当中至少需要包括企业IT资产管理系统、人力资源系统、主机基础信息源、历史基线检查结果、当前及近期设备状态、网络基础设施元素(漏洞扫描、证书认证和ARP表)等信息,各数据源负责发送相关的完整更新或增量更新方便BeyondCorp其他组件跟踪和管理数据库中的用户。随着员工加入公司、更改角色(职位)或离开公司,这些数据库将得到更新。基于此当用户需要访问公司内部系统时,BeyondCorp将拥有所需的全部信息并加以判断。值得一提的是在Google的公开文档中多次提及留存历史数据对于了解指定设备的端到端生命周期、分析与跟踪集群内的趋势、执行安全审计和取证都至关重要。
设备指纹服务的数据处理流程
图3:BeyondCorp 数据处理流程
设备指纹服务通过对不同来源的数据进行分析,以识别出存在数据冲突的情况,而不是盲目地信任某一个或某几个系统,其内部数据始终处于最新状态。在Google的论文中,将数据划分归纳成两大类:观测数据和规定指标。其中观测数据是指Agent及其它组件搜集上报到后端系统的数据,例如基线检查结果、最新同步的策略的时间戳、OS版本和补丁级别、应用列表等;而规定指标是指企业IT资产管理系统、人力资源系统这种录入性数据,例如设备资产登记的所有者、DNS和DHCP分配记录等。观测数据是动态变化的,而规定指标通常是静态的。
从整个设备生命周期来看,硬盘、主板等硬件可能会被更换甚至是在企业设备资产之间发生交换,这就使得设备组成问题变得更加复杂。将数据进行有效关联的实现成本并不大,但这个阶段的实践中Google在论文中言明了其中遇到的困难,主要原因是因为多数据源使用的标识符并不一致造成的。例如,使用企业IT资产管理系统存储的资产ID和设备序列号、使用磁盘加密托管存储硬盘序列号、使用证书认证存储证书指纹,在ARP数据记录中记录MAC地址。同一设备具备几种标识符,在设备指纹数据库中当来自这些系统的变量发生增量时,无法确定设备信息描述的是否为同一设备,需要花费大量的精力将这些可能互斥的字段整合到同一设备指纹记录中。一旦多条记录合并到同一记录中,可信度推断服务就会被触发重新打分进行评估引用不同字段的内容以确定信任层级。可信度推断服务需要参考包括平台特定字段和平台无关字段,涉及到各种不同的数据源。一台设备至少需要满足下列所有要求才能确认为高信任等级:符合加密合规要求、成功执行所有基线检查、安装最新的OS安全补丁、后端所有输入源的数据处于一致的状态。
在向网关推送数据前用预计算的方式合并本地指纹信息,可以有效的减少推向网关的数据量以及访问请求时的计算量,并可以确保执行网关使用同一数据集。在该阶段可以针对闲置的设备做信任变更,在发现严重问题的设备做出访问请求之前Agent已经拒绝其访问。预先计算的另外一个好处是提供了一个实验环境,可以用于在策略迭代和可信度推断服务更新时执行指定的测试,以金丝雀模型进行小比例进行灰度测试验证,而不会影响公司的整体是现在互联网公司中测试的主要手段之一。但预计算无法满足所有使用场景,例如:验证访问请求的动作会触发执行访问策略,需要实时的双因素认证凭证,这部分可以通过单点登录(SSO)系统来完成。但策略或设备状态发生变动时,与网关执行此项变动决策之间因延迟所产生的影响无法评估。Google的做法是将更新延迟时间控制在不超过一秒;仅部分信息参与预计算;验证通过之后SSO系统会生成短期令牌将其参与到系统授权过程中的一部分。
由可信度推断服务来最终决定指定设备的信任层级,信任评估会考虑设备指纹服务中已经存在的例外情况,可能需要重新制定一般访问策略。例外规则首先是一种机制,目的是降低策略变更或新策略原语的部署延迟。在这些情况下,权宜之计是在扫描任务完成更新之前进行查询、对容易被0-day漏洞攻击的特定设备进行保护,或允许不受信任的设备连接至引导网络中(最小权限,仅用于恢复信任层级认证)。物联网设备,例如打印机就需要在例外规则下被放置到其对应的限制信任层级下,因为这些设备的安装和维护证书的成本是远高于办公设备的。
通过设备指纹服务可以对多个数据源发起验证询问,能够动态推断出分配给用户或设备的信任级别,从而实现对单个用户或设备的进行细颗粒度级别的访问控制。作为其决策过程的一部分,访问控制引擎可以使用此信任级别。例如,未使用最新操作系统修补程序级别更新的设备可能会降级到信任级别降低;特定类别的设备(例如手机或平板电脑的特定型号)可能会被分配特定的信任级别;从新位置访问应用程序的用户可能会被分配不同的信任级别,使用静态规则和启发式来确定这些信任级别。
访问控制引擎为内部应用、服务提供每个请求的授权基础,授权决定是从用户设备、设备证书以及设备的人工产物中关联用户所属的属性。如有必要,访问控制引擎还可以实施基于位置的访问控制,推断的用户和设备信任级别也包含在授权决定中,例如只有使用受管设备的RD工程师才能访问内部的代码仓库,而使用受管设备的其他工程师不可以访问代码仓库等,将人物属性与设备数据进行关联并在访问控制过程中影响决策结果。访问控制引擎始终由各上下游组件动态提供有助于访问决策的数据信息,例如证书白名单、设备和用户的信任级别关系以及有关设备和用户的更多详细信息。
精细化的网络准入 - 分层访问
在完成了识别设备、用户的前提下,下一步需要进行更加精细化的网络准入。当符合访问控制引擎中的策略要求时,Agent应具备自动打通加密隧道的能力用于访问访问特定的公司内部资源打通内部应用和工作流,实现基于受管设备和用户联通的访问控制,并动态更新设备和用户信息。
这一步将移除对网络的信任,并将信任等级纳入“层级”中,并由信任推断(Trust Inferer)系统分配到设备上。各项资源的信任等级为访问所需的最低信任层级。为了访问指定资源,设备的信任层级分配必须与资源的最低信任层级要求相当或高于该要求。例如,外卖客服在公司内部应控制在较低的访问层级,仅能访问订单记录的相关系统,不需要访问更多关于整体消费流程的其他较为敏感的服务。
单一请求指定最低访问层级有多种优势:可以降低高安全级别设备的维护成本(首先需要在支持和效率方面投入成本),还能提高设备的可用性。由于设备能够访问更多敏感数据,我们需要更加频繁地对在线用户进行分析,因此我们对指定设备越信任,其证书的有效期应越短。因此,将设备的信任层级限制为访问所需的最低层级,可以尽量避免用户在使用过程中被中断。例如需要对敏感岗位要求安装最新版本的操作系统并及时更新以保持较高的信任层级,而对于信任层级较低的设备而言,这一时间要求可能相对限度的宽松一些。除了提供信任层级分配服务外,信任推断(Trust Inferer)还可以通过标注设备能够访问的VLAN来进行网络分割。网络分割让我们能够基于设备状态,限制对特殊网络的访问。当一台设备变得不可信时将其分配到恢复环境中,该设备在恢复之前只能访问用于恢复认证的限定资源。
写于结束
首先关于BeyondCorp的分享并没与完结,哪怕在Google内部这也是一个历史4年多才完成的大项目,而对于没有更多细节的我们更多的点需要实践、采坑后才能得知,总结起来就是未完待续,欢迎其他在实践的朋友与我交流。
未完待续
声明:本文来自掮客酒馆,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。