你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
什么是容器网络安全?
容器网络安全是高级容器网络服务的一种产品,可以增强对跨容器的网络流量的控制。 容器网络安全利用基于 Cilium 的策略,与传统的基于 IP 的方法相比,提供了更精细、更用户友好的网络安全管理方法。
容器网络安全的功能
截至目前,容器网络安全中提供的第一项功能是 FQDN 筛选。 这样,就可以基于域名定义网络安全策略,从而提供更精细、更用户友好的方法来管理网络流量。
FQDN 筛选概述
容器化环境面临着独特的安全挑战。 传统的网络安全方法通常依赖于基于 IP 的筛选,但由于 IP 地址频繁变化,这种方法会变得繁琐且效率低下。 此外,了解网络流量模式和识别潜在威胁可能很复杂。
FQDN 筛选提供了一种高效且用户友好的方法来管理网络策略。 通过基于域名而不是 IP 地址来定义这些策略,组织可以显著简化策略管理流程。 这种方法消除了需要在 IP 地址改变时频繁更新的需求,从而减轻了管理负担并充分降低了配置错误的风险。
在 Kubernetes 群集中,Pod IP 地址经常发生变化,这使得使用 IP 地址的安全策略保护 Pod 变得非常困难。 FQDN 筛选允许你使用域名而不是 IP 地址创建 Pod 级别策略,这样就无需在 IP 地址发生变化时更新策略。
注意
需要由 Cilium 提供支持的 Azure CNI 和 Kubernetes 版本 1.29 或更高版本,才能使用高级容器网络服务的容器网络安全功能。
FQDN 筛选的组件
Cilium 代理:Cilium 代理是一个关键的网络组件,它作为 DaemonSet 在由 Cilium 提供支持的 Azure CNI 群集中运行。 它负责处理群集中 Pod 的网络、负载均衡和网络策略。 对于具有强制实施的 FQDN 策略的 pod,Cilium 代理会将数据包重定向到 ACNS 安全代理进行 DNS 解析,并使用从 ACNS 安全代理获得的 FQDN-IP 映射更新网络策略。
ACNS 安全代理:ACNS 安全代理在 Azure CNI 中作为 DaemonSet 运行,Azure CNI 由 Cilium 群集提供支持,并启用了高级容器网络服务。 它负责处理 pod 的 DNS 解析,并在成功完成 DNS 解析后,使用 FQDN 到 IP 映射更新 Cilium 代理。
FQDN 筛选的工作原理
启用 FQDN 筛选后,系统首先会评估 DNS 请求以确定是否应允许这些请求,之后 pod 只能根据网络策略访问指定的域名。 Cilium 代理标记源自 Pod 的 DNS 请求数据包,并将其重定向到 ACNS 安全代理。 此重定向仅适用于强制实施 FQDN 策略的 Pod。
然后,ACNS 安全代理根据策略条件决定是否将 DNS 请求转发到 DNS 服务器。 如果允许,则将请求发送到 DNS 服务器,在收到响应后,ACNS 安全代理使用 FQDN 映射更新 Cilium 代理。 Cilium 代理可借此更新策略引擎内的网络策略。 下图演示了 FQDN 筛选的简要流程。
关键优势
可扩展的安全策略管理:群集和安全管理员不必在每次 IP 地址发生变化时更新安全策略,从而提高操作效率。
增强的安全合规性:FQDN 筛选支持零信任安全模型。 网络流量仅限于受信任的域,以减轻未经授权访问的风险。
弹性策略实施:通过 FQDN 筛选实现的 ACNS 安全代理可确保即使 Cilium 代理发生故障,DNS 解析也能无缝继续,并且策略仍能继续执行。 此实现至关重要,可确保在动态和分布式环境中维护安全性和稳定性。
注意事项:
- 容器网络安全功能需要由 Cilium 提供支持的 Azure CNI 和 Kubernetes 版本 1.29 或更高版本。
限制:
- 部分支持通配符 FQDN 策略。 这意味着可以创建使用前导通配符(例如 .example.com)匹配特定模式的策略,但不能使用通用通配符 () 匹配字段
spec.egress.toPorts.rules.dns.matchPattern
上的所有域
支持的模式:
*.example.com
- 这允许流量流向 example.com 下的所有子域。不支持的模式
*
这会尝试匹配任何域名,不支持。
- 节点本地 DNS 目前不支持 FQDN 筛选。
- 不支持双协议栈。
- 不支持 Kubernetes 服务名称。
- 不支持其他 L7 策略。
- 每秒处理超过 1000 个请求时,FQDN pod 可能会出现性能下降。
- 基于 Alpine 的容器镜像与 Cilium 网络策略一起使用时可能会遇到 DNS 解析问题。 这是由于 musl libc 的搜索域迭代有限。 若要解决此问题,请使用通配符模式显式定义网络策略 DNS 规则中的所有搜索域,如以下示例所示
rules:
dns:
- matchPattern: "*.example.com"
- matchPattern: "*.example.com.*.*"
- matchPattern: "*.example.com.*.*.*"
- matchPattern: "*.example.com.*.*.*.*"
- matchPattern: "*.example.com.*.*.*.*.*"
- toFQDNs:
- matchPattern: "*.example.com"
定价
重要
高级容器网络服务将成为付费服务。 有关定价的详细信息,请参阅高级容器网络服务 - 定价。
后续步骤
了解如何在 AKS 上启用容器网络安全。
了解开源社区如何构建 Cilium 网络策略。
有关 Azure Kubernetes 服务 (AKS) 的高级容器网络服务的详细信息,请参阅什么是 Azure Kubernetes 服务 (AKS) 的高级容器网络服务。
在“什么是容器网络可观测性?”中探索高级容器网络服务中的容器网络可观测性功能。