你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
随着组织越来越依赖 Azure Kubernetes 服务(AKS)来运行容器化工作负载,确保应用程序和服务之间的网络流量的安全性变得至关重要,尤其是在受监管或安全敏感的环境中。 使用 WireGuard 的传输中加密可以保护数据,因为它在 Pod 和节点之间移动,从而缓解拦截或篡改的风险。 WireGuard 以其简单性和可靠的加密而闻名,它提供了一个强大的解决方案,用于保护 AKS 群集中的通信。
AKS 的 WireGuard 加密是 高级容器网络服务(ACNS) 功能集的一部分,其实现基于 Cilium。
重要
AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:
WireGuard 加密范围
AKS 中的 WireGuard 传输中加密旨在保护 Kubernetes 群集中的特定流量流。 本部分概述了哪些流量类型已加密,当前不支持高级容器网络服务(ACNS)。
支持的/加密的流量流:
- 节点间 Pod 流量:从一个节点的 Pod 发送到另一个节点上的 Pod 的流量。
不支持/未加密的流量流
- 同节点 Pod 流量:同一节点上 Pod 之间的流量
- 节点网络流量:由节点本身生成的流量发往另一个节点
体系结构概述
WireGuard 加密依赖于 由 cilium 提供支持的 Azure CNI 来保护分布式系统中的节点间通信。 该体系结构使用专用 WireGuard 代理来协调密钥管理、接口配置和动态对等更新。 本部分尝试提供详细说明
WireGuard 代理
启动时,Cilium 代理会评估其配置,以确定是否启用了加密。 选择 WireGuard 作为加密模式时,代理将初始化专用 WireGuard 子系统。 Wireguard 代理负责配置和初始化强制实施 WireGuard 加密所需的组件。
密钥生成
安全通信的基本要求是生成加密密钥对。 Kubernetes 群集中的每个节点将在初始化阶段自动生成唯一的 WireGuard 密钥对,并通过 Kubernetes CiliumNode 自定义资源对象中的“network.cilium.io/wg-pub-key”注释分发其公钥。 密钥对存储在内存中,每 120 秒轮换一次。 私钥充当节点的机密标识。 公钥与集群中的其他节点共享,用于对来自和去往该节点上运行的 Cilium 管理的终端的流量进行加密和解密。 这些密钥完全由 Azure 管理,而不是由客户管理,确保安全和自动化处理,而无需手动干预。 此机制可确保只有具有已验证凭据的节点才能参与加密网络。
接口创建
密钥生成过程结束后,WireGuard 代理将配置专用网络接口(cilium_wg0)。 此过程涉及使用以前生成的私钥创建和配置接口。
与虚拟网络加密的比较
Azure 提供了多个选项来保护 AKS 中的传输中流量,包括 虚拟网络级别加密 和基于 WireGuard 的加密。 虽然这两种方法都增强了网络流量的机密性和完整性,但它们在范围、灵活性和部署要求方面有所不同。 本部分可帮助你了解何时使用每个解决方案。
在以下情况下使用虚拟网络加密
需要对虚拟网络中的所有流量进行完整的网络层加密: 虚拟网络加密可确保在遍历 Azure 虚拟网络时自动加密所有流量,而不考虑工作负荷或业务流程层。
需要最少的性能开销: 虚拟网络加密使用受支持的 VM SKU 中的硬件加速,将加密从 OS 卸载到基础硬件。 此设计提供高吞吐量,CPU 使用率较低。
所有虚拟机都支持虚拟网络加密: 虚拟网络加密取决于支持必要硬件加速的 VM SKU。 如果基础结构完全由受支持的 SKU 组成,则可以无缝启用虚拟网络加密。
AKS 网络配置支持虚拟网络加密: 虚拟网络加密在 aks Pod 网络方面存在一些限制。 有关详细信息,请参阅 虚拟网络加密支持的方案
使用 WireGuard 加密时
你希望确保应用程序流量跨所有节点 虚拟网络加密加密不会加密同一物理主机上的节点之间的流量。
想要跨多云或混合环境统一加密: WireGuard 提供与云无关的解决方案,可在不同云提供商或本地运行的群集之间实现一致的加密。
不需要或想要加密虚拟网络中的所有流量: WireGuard 支持更有针对性的加密策略,用于保护敏感工作负载,而不会产生加密所有流量的开销。
某些 VM 机型不支持虚拟网络加密: WireGuard 实现于软件中,无论 VM 硬件支持情况如何,都是一个适用于异构环境的实用选择。
注意事项和限制
• WireGuard 不符合 FIPS 。 • WireGuard 加密不适用于使用主机网络的 Pod(spec.hostNetwork:true),因为这些 Pod 使用主机标识,而不是各自拥有单独的标识。
重要
WireGuard 加密在软件级别运行,这可能会导致延迟并影响吞吐量性能。 此影响的程度取决于各种因素,包括 VM 大小(节点 SKU)、网络配置和应用程序流量模式。 我们的基准测试表明,吞吐量限制为 1.5 Gbps,MTU 为 1500;但是,结果可能因工作负荷特征和群集配置而异。 使用支持 MTU 3900 的 SKU 可提高大约 2.5 倍的吞吐量。 虽然 WireGuard 加密可以与网络策略一起使用,但这样做可能会导致进一步性能下降,吞吐量降低和延迟增加。 对于对延迟或吞吐量敏感的应用程序,我们强烈建议先在非生产环境中评估 WireGuard。 与往常一样,结果可能因工作负荷特征和群集配置而异。
Pricing
重要
高级容器网络服务是一项付费服务。 有关定价的详细信息,请参阅高级容器网络服务 - 定价。
后续步骤
了解如何在 AKS 上应用 WireGuard 加密 。
有关 Azure Kubernetes 服务 (AKS) 的高级容器网络服务的详细信息,请参阅什么是 Azure Kubernetes 服务 (AKS) 的高级容器网络服务。
在“什么是容器网络可观测性?”中探索高级容器网络服务中的容器网络可观测性功能。