关键要点
• 零信任通过有选择地只允许访问用户应该被允许访问的特定资源,解决了开放网络访问的问题。
• 实现持续验证的关键策略是零信任网络访问 (ZTNA)。
• 实施零信任有助于解决 SOC(安全运营中心)或安全分析师角色中的组织技能短缺问题 。
• 在零信任环境中,开发人员必须全面了解如何保护请求者与应用程序交互的每一步,同时考虑当前的安全上下文。
• 零信任框架并没有消除在每次部署后持续扫描漏洞的需要,漏洞扫描可以确保应用程序和后端系统保持保护和运作。
什么是零信任模型?
零信任安全模型是一种设计和实施安全 IT 系统的方法。零信任背后的基本概念是 “从不信任,始终验证”。这意味着用户、设备和连接在默认情况下永远不会被信任,即使它们连接到公司网络或之前已经过身份验证。
现代 IT 环境由许多互连的组件组成,包括本地服务器、基于云的服务、移动设备、边缘位置和物联网 (IoT) 设备。依赖于保护所谓的 “网络边界” 的传统安全模型在这种复杂的环境中是无效的。
攻击者可以破坏用户凭据并访问防火墙后面的本地系统。
他们还可以访问在组织控制之外部署的基于云的或物联网资源。零信任方法在受保护资产周围建立微边界(micro-perimeter),并使用相互身份验证、设备身份和完整性验证以及基于严格用户授权的应用程序和服务访问等安全机制。
为什么零信任很重要?
在零信任出现之前,组织使用防火墙和虚拟专用网络 (VPN) 等技术来控制对网络和应用程序的访问。这些解决方案的问题在于,一旦连接通过了安全检查,它就会被隐式信任,并开放访问网络。这允许合法用户和攻击者访问敏感数据和关键任务资源。
为了减轻这种威胁,企业实施了多个复杂的安全层来检测和阻止攻击,但攻击者仍然可以避开这些防御措施。零信任解决了开放网络访问的问题,根据细化的访问策略和当前的安全环境,有选择地只允许访问用户应该被允许访问的特定资源。
零信任模型的核心原则是什么?
实施零信任安全模型需要将以下原则纳入组织的安全策略。
持续验证
持续验证是零信任的关键 —— 这意味着没有隐式受信任的设备、凭据或区域。几个元素对于允许对各种资产进行持续验证至关重要,包括基于风险的条件访问以维护用户体验和易于应用的考虑合规性要求的动态安全策略。
实现持续验证的关键策略是 零信任网络访问 (ZTNA) [1] —— 一种实施零信任策略的解决方案。ZTNA 可以强制执行最小权限原则 (PLP),这样用户或服务账户只能在其角色需要时才能访问资源。这种网络策略将网络安全风险降至最低,并保护组织免受内部和外部威胁。
微分段
零信任网络应 实施微分段 [2] 以创建多个受保护区域,而不是单个安全边界。这种方法有助于分别保护网络的不同部分,因此一个受损区域不会威胁到网络的其余部分。
什么是微分段?
微分段(Microsegmentation)是每个网络仅有两个端站,即交换机的一个接口上只连接一台主机,或者不同的两个接口上各连接一台主机。它可以使端站之间不会产生冲突,是实现全双工的必要因素。每个端站有专用带宽,即每一个微分段可以由一个站单独使用。
最小权限访问
最小权限原则是零信任的关键。它涉及授予每个用户或实体最低必要的访问权限,防止暴露于敏感网络区域。最小权限方法需要仔细管理用户权限。
设备访问控制
强大的设备访问控制补充了用户访问控制,以确保设备无法通过适当的授权访问网络。零信任系统必须监控试图访问网络的设备,以尽量减少其攻击面。
横向移动预防
横向移动是攻击者在不同网络部分之间移动的能力。即使初始入口点已知,在网络中检测攻击者也是一项挑战,因为他们可能已经移动到网络的任何部分。
零信任解决方案对网络进行分段以限制横向移动并包含渗透者。这种方法可确保隔离受感染的账户或设备并消除威胁。
执行分段的实际组件可能是 ZTNA、与零信任策略集成的下一代防火墙 (NGFW),或云安全访问代理 (CASB),一种附加到云资源的迷你防火墙。这些工具可以跨多个维度对网络进行分段 —— 例如应用程序分段、环境分段、流程分段和基于用户的分段。
零信任用例和好处
零信任多年来一直是既定标准,但它继续经历正式化过程,以帮助组织应对不断变化的威胁形势。数字化转型的普及和复杂网络威胁的增长促使许多组织采用或改进其零信任策略。
零信任安全对所有组织都有利,对于使用混合或多云部署模型、非托管设备、遗留系统或软件即服务 (SaaS) 应用程序的组织来说尤其重要。在所有这些情况下,组织都拥有不受其直接控制的资源,或者可能与组织的安全策略和实践不兼容 —— 零信任有助于在这些系统周围建立安全边界。
零信任对于及时检测和响应常见威胁用例也至关重要,例如:
• 勒索软件攻击 —— 执行恶意代码并危及身份。
• 内部威胁 —— 随着远程访问和外部用户的增加而增加的风险。
• 供应链攻击 —— 远程特权用户和非托管端点设备带来的风险。
实施零信任有助于组织弥补诸如 SOC(安全运营中心)或安全分析师技能短缺等挑战。零信任支持跨混合环境大规模设置安全策略,并使用自动化来检测和响应威胁。这消除了手动工作并减少了过度紧张的安全团队的工作量。
它有助于最大限度地减少安全机制对用户体验的影响,同时强制遵守法规和行业标准。零信任的另一个优势是在面对快速变化的威胁和保险政策时加强组织的保险战略。
鉴于高度可变的业务、安全和数字化条件,每个组织都面临着独特的挑战。零信任是一种可调整的策略,可以满足不同组织的特定安全要求。
零信任参考架构
过渡到零信任可能很复杂。谷歌和微软是两个已经大规模实施零信任的组织,并创建了参考架构来帮助业内其他人效仿。
BeyondCorp
BeyondCorp [3] 是 Google 实现的零信任。它以 Google 的长期经验为基础,结合了社区理念和最佳实践。BeyondCorp 将访问控制安全层从单一的外围转移到单个网络用户,允许远程工作人员从任何地方安全地访问网络,而无需传统的 VPN。
BeyondCorp 提供了一系列最佳实践和概念,可以帮助任何组织实施零信任。它也是一种商业解决方案,可用于在组织中实施零信任。商业解决方案被称为 BeyondCorp Enterprise(取代以前的版本 BeyondCorp Remote Access)。
BeyondCorp 新版本的一个关键特性是它为 Google Chrome 添加了零信任功能。除了在托管端点设备上部署代理之外,组织还可以通过浏览器扩展 BeyondCorp 架构。Chrome 的更新包括威胁防护和嵌入式数据功能,有助于防止意外或恶意数据泄露、恶意软件感染以及其他形式的网络和设备入侵。
BeyondCorp Enterprise 还提供连续身份验证功能,定期对设备、用户和应用程序之间的所有交互进行身份验证。组织可以创建和实施访问控制策略,以持续验证身份验证数据,包括用户身份、设备数据和 IP 地址,在违反策略的情况下立即撤销访问权限。
第三方安全提供商可以利用 BeyondCorp 联盟计划为这个新平台开发零信任产品。例如, Tanium [4] (端点安全供应商)提供与 BeyondCorp Enterprise 的集成平台,允许这两种产品交换安全信息并提高组织对其环境的可见性。
微软零信任模型
微软已经公布了其 内部零信任实施 [5] 的细节。这种零信任实施解决方案侧重于企业范围的企业服务,例如 Microsoft Office 和业务线 (LOB) 应用程序。
它适用于在 Windows、Android、Mac 或 iPhone 上运行的设备。云移动设备管理服务 Microsoft Intune 管理这些设备。
Microsoft 零信任模型包括四个阶段:
- 身份验证 :Microsoft 通过要求对远程访问请求进行双重身份验证来保护网络。历史上,身份验证方法是智能卡,但今天它使用 Azure Authenticator 来启用移动设备质询。微软未来的目标包括消除密码以支持完全生物识别身份验证。
- 设备健康验证 :Microsoft 使用 Intune 注册新的用户设备。设备运行状况策略指定在访问主要生产力应用程序(例如 SharePoint、Exchange 和 Teams)之前哪些设备运行状况良好或需要管理(测试和修补漏洞)。对于某些用例,Microsoft 通过虚拟化 Windows 应用程序和桌面支持非托管设备。
- 访问验证 :任何对 Microsoft 服务的访问尝试都必须根据身份、设备运行状况、整体安全上下文(例如一天中的时间和用户的位置)以及来自 Microsoft Intelligence Security Graph 的其他数据进行验证。这里的创新元素是,无论用户如何连接 —— 无论他们是直接访问公司网络、通过 VPN 访问还是通过 Internet 连接到资源,微软都可以应用访问验证。
- 服务验证 :微软提出了一种未来的机制来验证服务,以确保它们在允许用户与之交互之前是健康的。该功能目前处于规划阶段。
开发人员的零信任注意事项
零信任将安全责任从网络边界转移到应用程序。应用程序本身能够验证细粒度的策略,并确保每个用户都能准确地访问他们被允许访问的功能和数据,而不会超出界限。
在零信任环境中,开发人员不能仅依赖简单的 API 令牌进行身份验证和授权。他们必须全面了解如何保护请求者与应用程序交互的每一步,同时考虑到当前的安全上下文。
零信任环境下的应用需求
在零信任安全模型中开发应用程序时,开发人员需要:
1. 评估会话的完整上下文以确定总体风险。
2. 确定零信任验证的关键因素 —— 用户身份、发出请求的设备状态、正在使用的应用程序功能以及请求试图访问的数据。
3. 确保每个请求,即使它来自网络边界内,都经过批准的安全策略来允许、阻止或限制它。
4. 应用额外的安全措施,例如多因素身份验证、功能限制和合规控制的实施。
5. 确保在应用程序生命周期的所有阶段,仅在允许列表的基础上授予访问权限,换句话说,只有在明确允许时才授予访问权限。
第一步到第三步通常通过 API 处理到专用 ZTNA 工具,例如 Perimeter81 或 CrowdStrike Zero Trust。
第四步通常由 Auth0 或 Okta 等身份验证解决方案处理。在大型组织中,这些由 Azure Active Directory 等企业标识服务补充或取代。
第五步在应用层实现 —— 这是应用开发者对零信任的主要贡献。
持续测试零信任要求
仅实施上述措施是不够的。还需要测试和验证应用程序是否正确实现了身份验证、授权和数据的强加密。这需要:
• 在开发的早期阶段对代码运行静态分析,以确保每个用户交互都对零信任和身份验证 / 授权组件进行适当的调用。
• 对测试、UAT 和生产环境中的应用程序运行动态分析,并测试用户请求是否收到适当的安全措施。
• 执行模糊测试和渗透测试以发现并消除在开发生命周期中引入的漏洞,例如缺少身份验证或安全策略应用不正确。
管理第三方风险
零信任框架还需要验证第三方创建的开源和专有组件的安全性。对于开发人员来说,了解他们的项目中使用了哪些组件、它们存在哪些风险和漏洞以及如何应用更新和修复非常重要。
软件组合分析 (SCA) 解决方案可以帮助提供对软件项目中使用的开源组件的可见性,包括数以千计的传递依赖项。对于每个开源库,这些工具可以识别安全弱点,指出代码质量问题,还可以提醒组织注意可能造成法律风险的限制性开源许可证。 在此详细的软件组合分析 [6] 指南中了解更多信息。
第三方组件不是唯一的风险来源。开发团队必须监控整个软件供应链,包括开发环境、持续集成 (CI) 系统、部署系统和暂存环境、容器存储库以及将代码从开发阶段转移到生产环境所涉及的任何其他元素。
安全前置
开发人员必须从一开始就将安全性纳入他们的设计和代码库。这是从隐式信任转向显式身份验证、强身份和访问控制的最佳方式。这就是为什么转向 DevSecOps(开发人员、安全团队和运维部门之间的密切合作)强烈支持零信任采用的原因。
DevSecOps 团队可以在软件交付生命周期的所有阶段实施零信任要求。即使外围控制失败,构建在零信任框架中的应用程序也可以保护敏感数据和功能。例如,即使防火墙、入侵防御系统 (IPS) 和数据丢失防护 (DLP) 工具配置错误、出现故障或被攻击者破坏,应用程序也会尽最大努力保护其资产。
请记住,零信任框架并没有消除在每次部署后持续扫描漏洞的需要,以确保应用程序和后端系统得到适当的保护和正常运行。
结论
今天的开发人员不仅仅是开发人员 —— 他们也应该是安全专家。组织意识到最能防止下一次安全漏洞的人是具有安全意识的开发人员,从软件项目的第一天开始就实施安全编码实践。这是一项重大责任,但对开发人员来说也是一个重大机遇,他们可以在为客户提供价值方面发挥更核心的作用。
我希望这篇文章能帮助开发人员开发安全智能并戴上他们的 “零信任眼镜”—— 通过零信任模型的视角来看待代码和软件架构。这将帮助他们不仅开发更安全的应用程序,而且提高他们 “说话” 的能力 —— 在现代安全环境中进行有效沟通并理解目标和策略。
引用链接
[1]
零信任网络访问 (ZTNA): https://www.catonetworks.com/zero-trust-network-access/
[2]
实施微分段: https://www.tigera.io/learn/guides/zero-trust/microsegmentation/
[3]
BeyondCorp: https://cloud.google.com/beyondcorp
[4]
Tanium: https://www.tanium.com/
[5]
内部零信任实施: https://www.microsoft.com/en-us/insidetrack/implementing-a-zero-trust-security-model-at-microsoft
[6]
在此详细的软件组合分析: https://www.mend.io/resources/blog/software-composition-analysis/