你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
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的扩展检测和响应平台无缝集成,实现统一的安全作和事件响应。
注释
这些组件可以无缝协作。 它们不需要与群集建立入站连接,并使用 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 CSPM 启用扩展,Defender for Cloud 会在环境中创建一个名为
分配: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 部署概述。