14、架构-可靠通讯之零信任网络

概述

零信任网络是近年来在微服务和云原生架构中逐渐兴起的一种安全模型。传统的网络安全模型主要依赖于边界防护,基于网络位置、IP地址和子网等特征划分网络区域,并在跨区域流量上采取严格控制,而对内网流量相对宽松。然而,随着微服务架构的普及,这种基于边界的安全模型暴露出许多不足,促使人们探索新的安全模型,即零信任网络。

零信任安全模型的特征

零信任安全模型的核心思想是不自动信任任何流量,无论其来源于内网还是外网,除非明确验证了请求的身份。它要求每次服务调用、资源访问都必须经过身份验证和权限检查,即使是内网中的流量也不例外。这一理念在2019年Google发表的论文“BeyondProd: A New Approach to Cloud-Native Security”中被详细阐述,指出了传统边界安全模型与零信任安全模型之间的差异 。

零信任安全模型的主要特征

  1. 身份验证:在零信任网络中,身份验证依赖于服务本身提供的身份凭证(如数字证书),而非IP地址或主机名。传统应用通常根据服务器的IP地址和主机名等静态特征进行信任认证。然而,在微服务系统中,虚拟化和容器化技术的广泛应用使得服务实例的IP地址和数量随时变化,因此身份验证必须依赖更为动态和可信的机制 。

  2. 双向TLS认证:在零信任网络中,不仅要验证服务端的身份,还需要验证客户端的身份。双向TLS认证确保了通信双方的身份可信,防止中间人攻击。单向TLS认证仅验证服务端身份,适用于公开服务,但在微服务体系中,这显然不足以满足安全需求 。

  3. 服务访问策略:零信任模型通过服务访问策略(Service Access Policy)管理服务之间的调用权限。每个服务在发起请求时都必须先通过访问策略的验证,确保只有经过授权的服务才能进行访问 。

  4. 细粒度的访问控制:零信任模型强调细粒度的访问控制策略,不仅在网络边界进行防护,还在每个服务节点实施严格的访问控制,防止任何未经授权的访问 。

笔者按照自己的理解将主要观点转述如下:

  1. 零信任网络不等同于放弃边界保护设施:虽然防火墙等位于网络边界的设施属于边界安全而非零信任安全的概念,但它仍然是一种提升安全性的有效且必要的做法。在微服务集群的前端部署防火墙,把内部服务节点间的流量与来自互联网的流量隔离开来,这种做法无论何时都值得提倡,至少能让内部服务避开来自互联网未经授权流量的攻击,如DDoS(拒绝服务攻击) 。

  2. 身份只来源于服务:传统应用一般部署在特定服务器上,这些机器的IP、MAC地址很少变化,此时系统的拓扑状态相对静态,安全策略使用IP地址、主机名等作为身份标识符,无条件信任具有特定身份表示的服务。然而,在现代微服务系统中,尤其是云原生环境中的微服务系统,虚拟化基础设施已得到广泛应用,服务部署的IP地址和服务实例数量随时变化,因此身份只能来源于服务本身能够出示的身份凭证(通常是数字证书),而不再是服务所在的IP地址、主机名或其他特征 。

  3. 服务之间没有固有的信任关系:这点决定了只有已知的、明确授权的调用者才能访问服务,阻止攻击者通过某个服务节点中的代码漏洞来越权调用其他服务。如果某个服务节点被成功入侵,这一原则可阻止攻击者扩大其入侵范围。与微服务设计模式中使用断路器、舱壁隔离实现容错来避免雪崩效应类似,在安全方面也应当采用这种“互不信任”的模式来减小入侵危害的影响范围 。

  4. 集中、共享的安全策略实施点:这点与微服务的“分散治理”相反。微服务提倡每个服务独立负责自身所有的功能性与非功能性需求。然而,Google的观点是安全需求最好集中管理。要写出高度安全的代码极为不易,精力甚至可能远高于业务逻辑本身。让服务各自处理安全问题容易出现实现不一致或漏洞多处修改的问题。安全需求应从微服务的应用代码下沉至云原生基础设施里,这契合其论文的标题“Cloud-Native Security” 。

Google的实践探索

Google在其论文中提出,零信任安全模型的最终目标是实现整个基础设施上的自动化安全控制,确保服务在任何情况下都能安全运行。Google的实现策略包括以下几点:

  1. 边缘代理(Google Front End):设计边缘代理以保护内部服务免受DDoS攻击,确保所有流量都在TLS之上传输,并自动将流量路由到适合的区域 。

  2. 应用层传输安全(ALTS):用于双向认证和传输加密的系统,自动将服务与其身份标识符绑定,确保所有服务间流量的身份认证和加密 。

  3. 服务访问策略(Service Access Policy):管理服务间的访问权限,确保所有访问请求都经过严格验证,防止未经授权的访问 。

  4. 二进制授权(Binary Authorization):在软件供应链的每个阶段进行安全检查和授权,确保所有部署的代码都是经过验证的 。

  5. 宿主机完整性(Host Integrity):在创建宿主机时验证包括BIOS、BMC、Bootloader和操作系统内核的数字签名,确保宿主机的安全性 。

  6. 轻量级虚拟化方案(gVisor):为每个容器提供独立的虚拟Linux内核,弥补容器共享操作系统内核而导致的隔离性不足的问题 。

Google的这些实践展示了零信任安全模型的复杂性和全面性,但也指出了实现这一模型的高成本和技术挑战。这些探索为业界提供了重要的参考,但零信任安全模型的广泛应用仍需要依赖基础设施的进一步发展和优化 。

小结

零信任网络是为适应微服务和云原生架构发展而提出的新型安全模型。它强调对所有流量进行严格的身份验证和权限控制,打破了传统边界安全模型的局限。尽管零信任安全模型在实现上存在诸多挑战和高成本,但其在提升系统安全性方面的优势无疑是显著的。随着虚拟化和容器化技术的不断发展,零信任网络有望成为未来分布式系统安全防护的重要方向。

总结与启示

零信任网络不等同于放弃在边界上的保护设施,而是对传统边界安全模型的一种补充和强化。通过严格的身份验证、双向TLS认证、服务访问策略和细粒度的访问控制,零信任网络可以有效提升系统的安全性。Google的实践探索为业界提供了宝贵的经验,但实现零信任安全模型仍需克服诸多技术和成本挑战。在未来的分布式系统中,零信任网络有望成为主流的安全防护方案,确保系统在任何情况下都能安全运行。

相关推荐

  1. 14架构-可靠通讯信任网络

    2024-06-12 08:18:03       7 阅读
  2. 15架构-可靠通讯服务安全

    2024-06-12 08:18:03       8 阅读
  3. 信任安全架构发展趋势

    2024-06-12 08:18:03       32 阅读
  4. 网络安全信任学习2:信任概念

    2024-06-12 08:18:03       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 08:18:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 08:18:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 08:18:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 08:18:03       18 阅读

热门阅读

  1. 如何在小程序中实现页面之间的返回

    2024-06-12 08:18:03       7 阅读
  2. Linux中“计划任务”设置以及补充

    2024-06-12 08:18:03       4 阅读
  3. Json和Protobuf区别详细分析

    2024-06-12 08:18:03       5 阅读
  4. 一五二、go缓存GCache和Go-Redis

    2024-06-12 08:18:03       6 阅读
  5. react 0至1 【jsx】

    2024-06-12 08:18:03       6 阅读
  6. 一个有趣的c++案例

    2024-06-12 08:18:03       6 阅读
  7. “手撕”二叉树的OJ习题

    2024-06-12 08:18:03       6 阅读
  8. jQuery Ajax 基本用法 附带Fetch API

    2024-06-12 08:18:03       7 阅读