服务网格的崛起与安全性改进
关键要点
- 服务网格作为一种基础设施层,管理Kubernetes应用程序中微服务之间的网络通信。
- 安全和合规团队开始关注服务网格,以提升安全性。
- 依赖sidecar代理的架构确保了具备高效的网络安全控制。
- 采用互信TLS和授权策略作为服务网格安全特性的实施手段。
随着快速发展的生态系统,出现了多种工具和概念,彻底改变了组织在云环境中部署和运营应用程序的方式。其中备受关注的工具之一是服务网格
:一种控制和管理Kubernetes应用程序中微服务之间网络通信的基础设施层。
以Linkerd和Istio等项目为例,服务网格最初在平台所有者和站点可靠性工程师(SREs)中获得了广泛使用。这些工程师负责为其组织构建内部基础设施平台,利用服务网格为平台构建可靠性特性,包括负载均衡、自动重试、蓝绿部署和可观测性。
近年来,服务网格又引起了安全和合规团队的关注。过去一年,首席信息安全官(CISO)及其团队愈发依赖服务网格提升安全态势。这在云环境中尤其明显,复杂的攻击者、复杂的威胁模型以及对低层网络基础设施缺乏控制和所有权等因素共同构成了曝光和风险的完美风暴。
CISO开始关注
要理解CISO为何对服务网格如此关注,了解其工作原理至关重要。最成功的服务网格使用sidecar代理 ——一个被插入到每个Kubernetes
pod中的网络代理(每个应用程序最小的单元)。该代理透明地处理所有进出该pod的流量。通过透明地衡量和修改流量,该代理可以在不需要更改底层应用程序的情况下实现多种功能。由于它是所有流量进出该pod的单一切入点,因此非常适合实施该pod的网络安全控制。
当然,只有在这些代理轻量且对应用程序透明的情况下,在单个集群中部署数百或数千个网络代理才能说得通。最先进的服务网格专注于最小化每个代理的计算和操作占用。Linkerd使用用Rust编写的超轻量代理,以提高性能和
安全性,而不是更为流行但更复杂的C++基础Envoy代理。
无论实现细节如何,对于关注可靠性的平台所有者而言,服务网格提供延迟感知负载均衡、自动重试和“黄金信号”指标等功能的能力显得尤为重要。但同样的sidecar代理模型也使得服务网格对于安全和合规所有者非常有价值。像平台所有者一样,服务网格让安全所有者得以在不要求开发人员做任何工作的情况下实现关键的安全特性。
安全交付
首先,让我们来看一下CISO今天面临的挑战:如何确保在中实现安全和合规,而他们并不拥有网络设备、机器,且对最终发生的事情没有控制权?
我们从硬件中失去的安全保证必须通过软件来建立。为了解决这个问题,一系列技术、概念和模式(如互信TLS、工作负载身份和授权策略(微分段))应运而生。
从本质上说,这些都是在不安全基础上提供安全的软件技术。正如服务网格成为提供可靠性特性的理想选择,它同样成为实现这些安全特性的重要场所。例如,推动服务网格采纳的一个重要因素是互信TLS——一种确保每次两个pods在集群内或跨集群通信时建立安全通道的TLS变体,该通道不仅加密并防止操控,还基于每一侧pod固有的身份进行授权。再也不是依赖IP地址作为身份或通过明文TCP连接后就认为安全工作完成的时代。
同样,授权策略意味着每个pod可以明确授权它所接收的连接和流量,不仅根据客户的工作负载身份,还根据请求的(加密且不可修改的)路径、路由或方法进行