Azure Kubernetes 服务 (AKS) 的漏洞管理

漏洞管理涉及检测、评估、缓解和报告组织系统与软件中存在的任何安全漏洞。 漏洞管理的责任由你和 Microsoft 共同分担。

本文介绍 Azure 如何管理 Azure Kubernetes 服务 (AKS) 群集的安全漏洞和安全更新(也称为补丁)。

如何发现漏洞

Azure 识别并修补以下组件的漏洞和缺失安全更新:

  • AKS 容器映像

  • Ubuntu 操作系统 18.04 和 22.04 工作器节点:Canonical 为 Azure 提供应用了所有可用安全更新的操作系统内部版本。

  • Windows Server 2022 OS 工作器节点:Windows Server 操作系统在每个月的第二个星期二进行修补。 SLA 应与其支持合同和严重性相同。

  • Azure Linux OS 节点:Azure Linux 为 AKS 提供应用了所有可用安全更新的操作系统内部版本。

AKS 容器映像

虽然 Cloud Native Computing Foundation (CNCF) 拥有和维护 AKS 运行的大部分代码,但 Azure 负责生成在 AKS 上部署的开放源代码包。 该责任包括对生成、扫描、签名、验证和修补过程拥有完整的所有权,以及对容器映像中的二进制文件的控制。 由于我们负责生成在 AKS 上部署的开放源代码包,我们能够基于二进制文件建立软件供应链,并根据需要修补软件。  

Azure 在更广泛的 Kubernetes 生态系统中积极参与,以在更广大的 CNCF 社区中帮助构建云原生计算的未来。 这项工作不仅可确保全球每个 Kubernetes 版本的质量,还使 AKS 能够在几年内快速将新的 Kubernetes 版本投入生产。 在某些情况下,领先于其他云提供商几个月。 Azure 与 Kubernetes 安全组织中的其他行业合作伙伴展开协作。 例如,在禁发的安全漏洞面向公众公布之前,安全响应委员会 (SRC) 会先收到这些漏洞,确定其优先级并对其进行修补。 这一承诺可确保 Kubernetes 对每个人都是安全的,并使 AKS 能够更快地修补和响应漏洞,以确保客户的安全。 除了 Kubernetes 之外,Azure 还注册接收 Envoy 等产品、容器运行时和许多其他开放源代码项目的软件漏洞预发布通知。

Azure 使用静态分析扫描容器映像,以发现 Kubernetes 和 Azure 托管容器中的漏洞和缺失更新。 如果有补丁可用,扫描程序会自动开始更新和发布过程。

除了自动扫描之外,Azure 还通过以下方式发现和更新扫描程序未知的漏洞:

  • Azure 在所有 AKS 平台上执行自己的审核、渗透测试和漏洞发现。 Azure 内部的专门团队和受信任的第三方安全供应商开展自己的攻击研究。

  • Azure 通过多个漏洞奖励计划积极与安全研究社区互动。 专用的 Azure 赏金计划为每年发现的最佳云漏洞提供了大量奖励。

  • Azure 与其他行业和开放源代码软件合作伙伴进行协作,这些合作伙伴会在漏洞公开发布之前分享漏洞、安全研究和更新。 此协作的目标是在向公众公布漏洞之前更新大量 Internet 基础结构。 在某些情况下,Azure 会向社区提供发现的漏洞。

  • Azure 在许多级别进行安全协作。 有时,我们通过各种计划正式开展协作,在这些计划中,组织会注册接收有关 Kubernetes 和 Docker 等产品的软件漏洞的预发布通知。 由于我们与许多开放源代码项目(如 Linux 内核、容器运行时、虚拟化技术等)互动,也会以非正式方式进行协作。

工作节点

Linux 节点

默认情况下,AKS 中的夜间规范 OS 安全更新处于关闭状态。 若要显式启用它们,请使用 unmanaged [channel][aks-node-image-upgrade]。

如果使用的是 unmanaged [channel][aks-node-image-upgrade],则夜间规范安全更新将应用于节点上的操作系统。 用于为群集创建节点的节点映像保持不变。 如果将新的 Linux 节点添加到你的群集,则原始映像将用于创建节点。 此新节点将在每晚执行的自动评估期间接收所有安全更新和内核更新,但在所有检查和重启完成之前保持未修补状态。 可以使用节点映像升级来检查和更新群集使用的节点映像。 有关节点映像升级的更多信息,请参阅[Azure Kubernetes 服务 (AKS) 节点映像升级][aks-node-image-upgrade]。

对于使用 unmanaged 之外的 [channel][aks-node-image-upgrade] 的 AKS 群集,将禁用无人参与的升级过程。

Windows Server 节点

对于 Windows Server 节点,Windows 更新不会自动运行和应用最新的更新。 围绕定期 Windows 更新发布周期和你自己的更新管理过程,在 AKS 群集中计划 Windows Server 节点池升级。 此升级过程会创建运行最新 Windows Server 映像和修补程序的节点,然后删除旧节点。 有关此过程的详细信息,请参阅[升级 AKS 中的节点池][upgrade-node-pool-in-aks]。

如何对漏洞进行分类

除了设置合适的默认值并提供安全强化的配置和托管组件外,Azure 还对整个堆栈(包括操作系统、容器、Kubernetes 和网络层)的安全强化方面进行了大量投资。 综合起来,这些努力有助于降低漏洞的影响和可能性。

AKS 团队根据 Kubernetes 漏洞评分系统对漏洞进行分类。 分类考虑许多因素,包括 AKS 配置和安全强化。 由于此方法以及 AKS 在安全性方面的投资,AKS 漏洞分类可能不同于其他分类源。

下表描述了漏洞严重性类别:

严重性 说明
严重 未经身份验证的远程攻击者在所有群集中很容易利用,从而导致完全系统泄露的漏洞。
很容易被许多群集利用,从而导致机密性、完整性或可用性损失的漏洞。
中型 机密性、完整性或可用性损失受常见配置、攻击本身难度、所需访问或用户交互限制的某些群集可利用的漏洞。
所有其他漏洞。 不太可能被利用,或者利用的后果有限。

如何更新漏洞

AKS 每周修补有供应商修补程序的常见漏洞和风险 (CVE)。 任何没有修补程序的 CVE 在进行修正之前会等待“供应商修补程序”。 修补的容器映像将缓存在下一个相应的虚拟硬盘 (VHD) 内部版本中,该版本还包含更新的 Ubuntu/Azure Linux/Windows 已修补 CVE。 只要运行更新的 VHD,就不应运行有供应商修补程序超过 30 天的任何容器映像 CVE。

对于 VHD 中基于 OS 的漏洞,AKS 默认还依赖于节点映像 vhd 更新,因此任何安全更新都将附带每周的节点映像版本。 除非切换到非托管状态,否则将禁用无人参与升级,由于其发布是全局性的,因此不建议使用非托管状态。

更新发布时间线

Azure 的目标是在适合其所代表风险的时间段内缓解检测到的漏洞。 [Azure FedRAMP High][microsoft-azure-fedramp-high] 临时运营授权 (P-ATO) 包括审核范围内的 AKS,并且已获得授权。 FedRAMP 持续监视策略指南以及 FedRAMP 低、中和高安全控制基线要求在特定时间段内根据其严重性级别修正已知漏洞。 如 FedRAMP RA-5d 中所述。

如何传达漏洞和更新

通常情况下,对于适用于 AKS 的新补丁版本的发布,Azure 不会进行广泛地宣传。 但是,Azure 会持续监视和验证可用的 CVE 修补程序,以便及时在 AKS 中支持它们。 如果找到了关键补丁或需要用户操作,Azure 会在 GitHub 上发布并更新 CVE 问题详细信息

安全报告

你可以通过创建漏洞报告来向 Microsoft 安全响应中心 (MSRC) 报告安全问题。

如果你更希望在不登录该工具的情况下提交报告,请发送电子邮件至 secure@microsoft.com。 如果可能,请从 Microsoft 安全响应中心 PGP 密钥页下载 PGP 密钥,以使用该 PGP 密钥加密你的邮件。

你应该会在 24 小时内收到答复。 如果出于某种原因你无法操作,请通过电子邮件进行跟进,以确保我们收到了你的原始邮件。 有关详细信息,请转到 Microsoft 安全响应中心

请提供以下要求的信息(尽可能多地提供),以便我们更好地了解可能问题的性质和范围:

  • 问题类型(例如,缓冲区溢出、SQL 注入、跨站脚本等)
  • 与问题表现形式相关的源文件的完整路径
  • 受影响源代码的位置(tag/branch/commit 或直接 URL)
  • 重现问题所需的任何特殊配置
  • 介绍如何重现问题的分步说明
  • 概念证明或攻击代码(如果可能)
  • 问题的影响,包括攻击者可能如何利用该问题。

此信息可帮助我们更快地会审你报告的安全问题。

如果你是为了 Bug 奖励而报告,则提供更完整的报告可以获得更高的奖励。 有关我们正开展的计划的详细信息,请参阅 Microsoft Bug 赏金计划

策略

Azure 遵循漏洞协同披露原则。

后续步骤

请参阅有关升级 Azure Kubernetes 服务群集和节点池的概述。

[apply-security-kernel-updates-to-aks-nodes]: node-updates-kured.md [aks-node-image-upgrade]: node-image-upgrade.md [upgrade-node-pool-in-aks]: manage-node-pools.md#upgrade-a-single-node-pool [aks-node-image-upgrade]: auto-upgrade-node-image.md