你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Defender for Containers 体系结构

Defender for Containers 为每个 Kubernetes 环境使用不同的设计。 设计取决于环境是在以下哪种情况下运行:

  • Azure Kubernetes 服务 (AKS) - Microsoft 的托管服务,用于开发、部署和管理容器化应用程序。

  • 在连接的 Amazon Web Services (AWS) 帐户中的 Amazon Elastic Kubernetes Service (EKS) - Amazon 的托管服务,用于在 AWS 上运行 Kubernetes,而无需安装、操作和维护自己的 Kubernetes 控制平面或节点。

  • 在已连接的 Google Cloud Platform (GCP) 项目中的 Google Kubernetes Engine (GKE) - Google 的托管环境,通过 GCP 基础结构部署、管理和缩放应用程序。

  • 非托管 Kubernetes 分发(使用启用了 Azure Arc 的 Kubernetes)- 托管在本地或 IaaS 上的经云原生计算基础 (CNCF) 认证的 Kubernetes 群集。

注释

Defender for Containers 对启用了 Arc 的 Kubernetes 群集(AWS EKS 和 GCP GKE)的支持是一项预览版功能。

为了保护 Kubernetes 容器,Defender for Containers 接收并分析:

  • 来自 API 服务器的审核日志和安全事件
  • 来自控制平面的群集配置信息
  • Azure Policy 中的工作负载配置
  • 来自节点级别的安全信号和事件

有关实现详细信息(如支持的操作系统、出站代理和功能可用性),请参阅 Defender for Containers 功能可用性

用于每个 Kubernetes 环境的体系结构

Defender for Cloud 和 AKS 群集的体系结构示意图

当 Defender for Cloud 保护 Azure Kubernetes 服务中托管的群集时,它会无代理地通过 Azure 基础结构收集审核日志数据,无需额外的成本或配置注意事项。 若要获取 Microsoft Defender for Containers 提供的完整保护,需要以下组件:

  • Defender 传感器:部署在 AKS 节点上的轻型 DaemonSet,使用 eBPF 技术收集运行时遥测(Kubernetes 事件、进程和网络数据)。 它安全地将遥测数据发送到 Defender for Cloud 进行运行时威胁防护。 传感器向 Log Analytics 工作区注册并充当数据管道。 但是,审核日志数据不会存储在 Log Analytics 工作区中。 Defender 传感器作为 AKS 安全配置文件部署,与 AKS 资源提供程序 (RP) 实现本地集成。

注释

在 AKS 群集上配置 Defender 传感器时,它会触发对帐过程。 此过程作为 Defender for Containers 计划的一部分进行,并且是预期行为。

  • 适用于 Kubernetes 的 Azure Policy:一个扩展了开源 Gatekeeper v3 的 Pod,并将其注册为 Kubernetes 准入控制的 Webhook。 借助此 Pod,你可以集中且一致的方式在群集上应用大规模强制和保护措施。 可将 Azure Policy Pod for Kubernetes 作为 AKS 加载项进行部署,只需在群集的一个节点上安装即可。 它提供了强制实施配置规则的选项。 有关详细信息,请参阅保护 Kubernetes 工作负载了解适用于 Kubernetes 群集的 Azure Policy

  • ACR 集成:Azure 容器注册表的推送触发和定期映像扫描,无需额外的组件即可提供漏洞评估。

  • 无代理发现:通过使用 Azure 本机功能发现和评估群集配置,无需任何代理即可查看 Kubernetes 群集。

  • 无代理扫描机器:对 Kubernetes 节点进行定期磁盘快照,以便对操作系统配置和文件系统进行带外的深入分析。 此功能不需要任何已安装的代理或网络连接,并且不会影响计算机性能。

  • Microsoft XDR 集成:与Microsoft的扩展检测和响应平台无缝集成,实现统一的安全作和事件响应。

Microsoft Defender for Containers、Azure Kubernetes 服务和 Azure Policy 之间的交互的概要体系结构图。

注释

这些组件可以无缝协作。 它们不需要与群集建立入站连接,并使用 Azure 的本机安全基础结构。 所有组件都使用仅限出站的连接(无需入站访问)。

Defender 传感器组件详细信息

Pod 名称 Namespace 种类 简短说明 能力 资源限制 需要外出通道
microsoft-defender-collector-ds-* kube-system DaemonSet 使用 eBPF 技术从节点收集运行时遥测(Kubernetes 事件、进程和网络数据),并将其安全地发送到 Defender for Cloud。 SYS_ADMIN、
SYS_RESOURCE、
SYS_PTRACE
内存:296Mi

CPU:360m
microsoft-defender-collector-misc-* kube-system 部署 收集未绑定到特定节点的群集级清单和安全事件。 内存:64Mi

cpu:60m
microsoft-defender-publisher-ds-* kube-system DaemonSet 将收集的遥测数据发布到 Microsoft Defender for Containers 后端服务进行处理和分析。 内存:200Mi

cpu:60m
Https 443

详细了解出站访问先决条件

* 无法配置资源限制。 详细了解 Kubernetes 资源限制

Azure 中 Kubernetes 的无代理发现是如何工作的?

发现过程使用间隔拍摄的快照:

权限体系结构图。

启用 Kubernetes 的无代理发现扩展后,将发生以下过程:

  • 创建

    • 如果从 Defender CSPM 启用扩展,Defender for Cloud 会在环境中创建一个名为CloudPosture/securityOperator/DefenderCSPMSecurityOperator的身份。
    • 如果从 Defender for Containers 启用扩展,Defender for Cloud 将在名为 CloudPosture/securityOperator/DefenderForContainersSecurityOperator 的环境中创建标识。
  • 分配:Defender for Cloud 在订阅范围将一个名为“Kubernetes 无代理操作员”的内置角色分配给该标识。 该角色包含以下权限:

    • AKS 读取 (Microsoft.ContainerService/managedClusters/read)
    • AKS 受信任的访问以及以下权限:
    • Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings/write
    • Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings/read
    • Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings/delete

    详细了解 AKS 受信任的访问

  • 发现:使用系统分配的标识,Defender for Cloud 通过调用 AKS 的 API 服务器来发现环境中的 AKS 群集。

  • 绑定:发现 AKS 群集后,Defender for Cloud 会在创建的标识和 Kubernetes ClusterRoleaks:trustedaccessrole:defender-containers:microsoft-defender-operator 之间创建一个 ClusterRoleBinding 来执行 AKS 绑定操作。 可以通过 API 查看 ClusterRole,并在群集内授予 Defender for Cloud 数据平面读取权限。

注释

复制的快照与群集位于同一区域。

后续步骤

通过此概述,你已了解了 Microsoft Defender for Cloud 容器安全性的体系结构。 若要启用计划,请参阅 Defender for Containers 部署概述