你当前正在访问 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 筛选的简要流程。

显示 ACNS 安全代理在 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"

定价

重要

高级容器网络服务将成为付费服务。 有关定价的详细信息,请参阅高级容器网络服务 - 定价

后续步骤