保护Azure Kubernetes 服务 (AKS)部署

Azure Kubernetes 服务 (AKS)提供了用于部署和操作容器化应用程序的托管 Kubernetes 环境。 Microsoft管理 Kubernetes 控制平面,同时负责保护群集中的工作负荷、节点配置、网络、标识和数据。 部署 AKS 时,请务必遵循安全最佳做法来保护群集生命周期中的此共享图面。

本文提供了有助于保护 AKS 部署的安全建议。

本文中的安全建议实施零信任原则:“显式验证”、“使用最低特权访问”和“假设违规”。 有关全面的零信任指南,请参阅 零信任指南中心。

特定于服务的安全性

AKS 将 Kubernetes 安全基元与Azure平台控件相结合。 以下建议解决了运行托管 Kubernetes 群集特有的强化问题,包括节点完整性、映像证明和工作负荷隔离。

集群和节点加固

  • 使用自动群集升级将群集保留在受支持的 Kubernetes 版本上:在自动升级通道中注册群集,以便控制平面和节点池接收 Kubernetes 修补程序,这些修补程序无需手动干预即可修复已知漏洞。 有关详细信息,请参阅 自动升级 AKS 群集。
  • 自动应用节点 OS 安全更新:配置节点 OS 自动升级通道,使节点在定义的节奏上接收 Linux 和Windows OS 安全修补程序。 有关详细信息,请参阅 自动升级 AKS 群集节点操作系统映像。
  • 强制实施 Pod 安全允许标准:在命名空间级别应用基线或受限的 Pod 安全标准,以防止特权 Pod、主机命名空间共享和不安全卷装载。 有关更多信息,请参阅 在 AKS 中保护 Pod。
  • 为受管制工作负荷部署启用了 FIPS 的节点池:启用启用了 FIPS 的节点池(使用 FIPS 140-3 验证的加密模块),当工作负荷必须满足 FedRAMP 合规性等要求时。 有关详细信息,请参阅 为 AKS 节点池启用联邦信息进程标准(FIPS)。
  • 不要在共享群集上运行恶意多租户工作负荷:标准 Kubernetes 群集不是不受信任的租户之间的硬安全边界,因为安全域是整个群集而不是单个节点。 对于需要强隔离的工作负载,请使用物理隔离的集群、隔离的 VM 节点规格或 Pod 沙盒隔离。 有关详细信息,请参阅 AKS 中群集隔离的最佳做法。

容器映像和供应链安全性

  • 将部署限制为受信任的容器注册表:使用Azure Policy加载项强制要求 Pod 只能从批准的注册表(如专用Azure 容器注册表)拉取映像,因此不受信任的公共映像无法在群集中运行。 有关详细信息,请参阅 使用 Azure Policy 保护您的 AKS 集群。
  • 使用图像清理器删除未使用的易受攻击图像:使图像清理器能够自动从节点中删除过时的图像,并减少易受攻击图像留下的攻击面。 有关详细信息,请参阅 使用图像清理器清理 AKS 上易受攻击的图像。
  • 使用容器Microsoft Defender扫描注册表和正在运行的工作负荷:在部署前后检测注册表和群集中易受攻击的映像和配置错误。 有关详细信息,请参阅 Microsoft Defender for Containers 概述。

网络安全

默认情况下,AKS API 服务器可通过公共终结点访问,群集出口不受限制。 限制对控制平面的入站访问,以及限制工作负载的出站流量,是减少集群网络攻击面的最有效措施之一。

  • 实施网络策略以控制 Pod 之间的流量:应用 Kubernetes 网络策略,将 Pod 之间的东西向流量限制为仅工作负载所需的流量。 有关详细信息,请参阅在 AKS 中使用网络策略保护 Pod 之间的流量。
  • 限制群集出口流量:设置用户定义的出站类型和通过Azure 防火墙路由出口,以筛选和检查工作负荷可以访问的目标。 有关详细信息,请参阅控制 AKS 中群集节点的出口流量。
  • 按完全限定的域名筛选出站流量:在高级容器网络服务中使用基于 FQDN 的筛选,以仅允许出口到已批准的域。 有关详细信息,请参阅 高级容器网络服务的 FQDN 筛选。

身份和访问管理

AKS 通过Microsoft Entra ID对群集和工作负荷标识进行身份验证,并通过 Azure RBAC 和 Kubernetes RBAC 授权访问。 使用托管标识和 Entra 支持的授权,而不是静态凭据或独立的 Kubernetes 帐户。

  • 使用群集的托管标识:将群集配置为使用托管标识,以便 AKS 访问Azure资源,而无需轮换静态服务主体凭据。 有关详细信息,请参阅Azure Kubernetes 服务 (AKS)中使用托管标识。
  • 使用工作负荷标识来访问 Azure 资源:将 Kubernetes 服务帐户与Microsoft Entra工作负荷标识联合,以便 Pod 无需存储机密即可获取Azure资源的令牌。 有关详细信息,请参阅将Microsoft Entra Workload ID与 AKS 配合使用。
  • 将群集身份验证与Microsoft Entra ID集成:启用Microsoft Entra集成,以便用户和组使用其 Entra 标识而不是共享证书向群集进行身份验证。 有关详细信息,请参阅 AKS 托管的 Microsoft Entra 集成。
  • 使用 Azure RBAC 授权 Kubernetes API 访问权限:使用 Azure RBAC 进行 Kubernetes 授权,并分配 AKS 内置角色(Azure Kubernetes 服务 RBAC 读取器,Azure Kubernetes 服务 RBAC 编写器,Azure Kubernetes 服务群集或命名空间范围内的 RBAC 管理员和 Azure Kubernetes 服务 RBAC 群集管理员,以授予最低特权访问权限。 有关详细信息,请参阅 群集授权概念。
  • 禁用本地 Kubernetes 帐户:关闭本地帐户,以便所有群集访问都流经Microsoft Entra ID,并且无法使用静态群集管理员凭据绕过 Entra 支持的授权。 有关详细信息,请参阅使用 AKS 管理的Microsoft Entra集成管理本地帐户。
  • 为群集管理员强制实施条件访问:应用条件访问策略,这些策略要求多重身份验证和符合设备的 Entra 标识,这些标识可以创建、升级或删除 AKS 群集并管理其节点池、网络和角色分配。 更多信息请参见“要求 Azure 管理多重身份验证”。

数据保护

默认情况下,AKS 对托管磁盘上的静态数据进行加密。 配置以下控件以保护 Kubernetes 机密,并自带密钥,满足合规性要求。

  • 使用密钥管理服务加密 etcd 中的 Kubernetes 机密:启用 KMS 数据加密,以便在将 Kubernetes 机密对象写入 etcd 之前在应用程序层加密,并在Azure 密钥保管库中使用平台管理的密钥或你自己的客户管理的密钥进行加密。 有关详细信息,请参阅 AKS 静态数据加密概念。
  • 在 Azure 密钥保管库 中存储应用程序机密:使用适用于机密存储 CSI 驱动程序的 Azure 密钥保管库 提供程序从密钥保管库装载机密、密钥和证书,而不是将它们存储为纯文本 Kubernetes 机密。 有关更多信息,请参阅在 AKS 中将 Azure 密钥保管库 提供程序与 Secrets Store CSI Driver 配合使用。
  • 对节点和数据磁盘使用客户管理的密钥:当需要控制加密密钥生命周期时,请在密钥保管库中使用自己的密钥加密 OS 和数据磁盘。 有关详细信息,请参阅 在 AKS 中将自带密钥 (BYOK) 与 Azure 磁盘配合使用。
  • 启用基于主机的加密:启用基于主机的加密,以便在主机上静态加密节点 VM 上的临时磁盘和 OS/数据磁盘缓存。 有关详细信息,请参阅 基于主机的 AKS 加密。

日志记录和监控

收集群集、控制平面和工作负荷遥测数据,以便可以检测和调查 AKS 群集的威胁。

  • 使用容器见解监视群集:使容器见解能够将群集的节点和容器指标和日志收集到Log Analytics工作区中。 有关详细信息,请参阅“监视Azure Kubernetes 服务 (AKS)”。
  • 使用诊断设置收集控制平面审核日志:配置诊断设置以将 Kubernetes API 服务器和审核日志类别(kube-auditkube-audit-admin以及guard)发送到Log Analytics进行安全调查。 有关更多信息,请参阅 AKS 数据监控参考。
  • 使用容器Microsoft Defender启用威胁检测:为容器启用Defender,以接收群集节点、工作负载和 Kubernetes 控制平面的运行时威胁检测警报。 有关详细信息,请参阅 Microsoft Defender for Containers 概述。

合规性和治理

使用Azure Policy在 AKS 群集中一致地强制实施安全配置,并防止部署不合规的工作负荷。

  • 使用 AKS Azure Policy强制实施群集和工作负荷配置:启用Azure Policy加载项,并分配 AKS 内置策略计划来审核和强制实施已批准的注册表、资源限制和阻止特权容器等控制措施。 有关详细信息,请参阅 使用 Azure Policy 保护您的 AKS 集群。
  • 为 Kubernetes 最佳做法应用部署安全措施:启用部署安全措施,以在警告或强制模式下针对 AKS 最佳做法验证群集资源。 有关详细信息,请参阅 使用部署安全措施在 AKS 中强制实施最佳做法。
  • 分配 AKS 内置策略定义以强制实施特定控制:为 AKS 分配内置Azure Policy定义以强制实施各个控制,例如要求授权 IP 范围或专用群集、禁用特权容器和强制实施内部负载均衡器。 有关更多信息,请参阅 AKS 的 Azure Policy 内置定义。

备份和恢复

保护群集状态和应用程序数据,以便可以从意外删除、损坏或失败的升级中恢复。

  • 使用 AKS 备份来备份群集状态和持久卷:使用 AKS 备份和备份保管库,对由 Azure 磁盘和 Azure 文件存储 (SMB) 提供支持的群集资源和持久卷进行计划备份,并还原某个命名空间或整个群集。 有关详细信息,请参阅什么是Azure Kubernetes 服务 (AKS)备份?
  • 使用受信任的访问权限(而不是广泛的权限)授予备份访问权限:启用受信任访问,以便备份保管库到达具有作用域权限的群集,而不是需要长期管理访问权限。 有关详细信息,请参阅“启用Azure资源以使用受信任访问访问 AKS 群集。

后续步骤