你当前正在访问 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 传感器:部署在每个节点上的 DaemonSet 使用 eBPF 技术从主机收集信号,并提供运行时保护。 该传感器向 Log Analytics 工作区注册,并用作数据管道。 但是,审核日志数据不会存储在 Log Analytics 工作区中。 Defender 传感器可部署为 AKS 安全配置文件。
  • 适用于 Kubernetes 的 Azure Policy:扩展开放源代码 Gatekeeper v3 的 Pod,可注册为 Kubernetes 准入控制的 Webhook,支持你以集中且一致的方式在群集上应用大规模强制性操作和安全措施。 适用于 Kubernetes pod 的 Azure Policy 可部署为 AKS 加载项。 它仅安装在群集中的一个节点上。 有关详细信息,请参阅保护 Kubernetes 工作负载了解适用于 Kubernetes 群集的 Azure Policy

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

Defender 传感器组件详细信息

Pod 名称 命名空间 种类 简短说明 功能 资源限制 需要出口
microsoft-defender-collector-ds-* kube-system DaemonSet 一组容器,重点介绍从 Kubernetes 环境收集清单和安全事件。 SYS_ADMIN、
SYS_RESOURCE、
SYS_PTRACE
内存:296Mi

CPU:360m
microsoft-defender-collector-misc-* kube-system 部署 一组容器,重点介绍从 Kubernetes 环境收集不受特定节点限制的清单和安全事件。 空值 内存: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 服务器执行 API 调用来发现环境中的 AKS 群集。

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

注意

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

后续步骤

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