关于 defender-for-containers
用于规划和强化 Kubernetes 集群及其镜像仓库防护的技能,面向使用 Microsoft Defender for Cloud 的团队。它覆盖集群态势、镜像漏洞、运行时威胁和准入控制。
主要功能
- 01规划集群接入与传感器部署
- 02配置镜像持续漏洞扫描
- 03规划运行时威胁检测
- 04设计 Kubernetes 准入策略
- 05审查攻击路径
适用场景
- 01通过 Arc 接入 EKS 或 GKE 集群
- 02在镜像发布后持续发现新漏洞
- 03先以审计模式测试准入策略
- 04调查容器运行时威胁告警
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ vinayaklatthe/ microsoft-security-skills --skill defender-for-containers安装后在 Claude Code 中输入/defender-for-containers确认已加载。
详细介绍
Microsoft Defender for Containers
Defender for Containers 是 Microsoft Defender for Cloud 中支持 Kubernetes 的计划。 它覆盖 AKS、Azure Arc-enabled Kubernetes(本地、EKS、GKE、OpenShift)以及为这些集群提供镜像的容器注册表,提供安全态势管理、镜像漏洞评估、运行时威胁检测和准入控制。
适用场景
保护 Kubernetes 集群及其镜像来源注册表。此技能适用于计划部署、传感器与无代理方案的权衡、注册表扫描、准入策略设计和运行时警报响应。
此技能不适用于 VM/主机加固(defender-for-servers)、集群网络设计(azure-network-security-design)或通用 AKS 运维(azure-kubernetes)。
功能概览
| 功能 | 工作方式 | 覆盖范围 |
|---|---|---|
| 无代理发现 | 基于 API 的集群清单、控制平面配置错误、K8s API 审计日志分析 | AKS、EKS、GKE、Arc |
| 无代理漏洞评估 | 对节点磁盘创建快照;扫描注册表中的镜像和正在运行的容器 | AKS、EKS、GKE |
| 注册表扫描 | 在拉取时、推送时和持续扫描镜像 | ACR、ECR、GAR |
| 运行时威胁检测 | Defender 传感器(DaemonSet,在 Linux 上使用 eBPF)——检测无文件攻击、横向移动和加密货币挖矿程序 | AKS、Arc、EKS、GKE |
| Kubernetes 数据平面加固 | Azure Policy for Kubernetes 加载项(OPA/Gatekeeper) | AKS、Arc-enabled K8s |
| 攻击路径分析 | 综合安全态势、漏洞和运行时数据,找出互联网 → Pod → 云 IAM 攻击路径 | 全部 |
实施方法
-
在订阅范围启用 Defender for Containers。 自动预配会安装:
- Defender 传感器(DaemonSet),用于检测 Linux 节点上的运行时威胁。
- 用于准入控制的 Azure Policy for Kubernetes 加载项。
- 自动连接 ACR 扫描。
验证:
kubectl get ds -n kube-system显示microsoft-defender-collector-ds;AKS 显示 Defender 配置文件 = enabled。
-
通过 Arc 连接非 Azure 集群。 EKS/GKE 需要在 AWS/GCP 云帐户级别配置连接器,并通过 Arc 完成接入,才能使用运行时传感器(无代理功能无需传感器即可使用)。
-
配置注册表扫描安全态势。 开启持续扫描,确保新披露的 CVE 能在已推送的镜像中触发发现,而不仅仅是在推送时触发。设置保留期限,以便 90 天后仍能回答“镜像 X 是否易受 CVE-Y 影响”。
-
在管道中管理镜像漏洞。 不要等到运行时才处理:将相同的 MDVM API 集成到 CI 中,在发现严重且可利用的 CVE 时让构建失败。结合镜像签名(Notation / cosign)和准入控制,要求镜像必须经过签名。
-
运行时威胁检测——使用传感器还是无代理方案?
- 以下情况需要传感器:无文件攻击、进程树、内存中利用、横向移动、反向 Shell。
- 无代理方案覆盖:镜像漏洞、安全态势、基于 K8s API 审计的检测。
- 在生产环境中两者都用。仅在 Linux 节点池上部署传感器(Windows 运行时传感器的覆盖范围有限)。
-
使用 Azure Policy / Gatekeeper 实施准入控制。 先以审计模式运行 14 天,然后再启用拒绝。基线策略:
- 禁止特权容器。
- 禁止将
hostPath挂载到敏感路径。 - 应用工作负载必须使用 readOnlyRootFilesystem。
- 必须设置资源限制。
- 必须使用经过签名的镜像(注册表允许列表)。
-
每周检查攻击路径分析。 应优先修复的高价值路径是暴露于互联网的 Pod 存在严重 CVE → 工作负载标识 → 云 IAM。应根据影响范围排序,而非发现数量。
-
通过 Defender for Cloud 连接器将警报流式传输到 Sentinel。 针对按 ProductName = "Microsoft Defender for Containers" 筛选的
SecurityAlert构建威胁搜寻查询。
防护措施
- 运行时检测需要 Defender 传感器。 仅靠无代理方式无法发现 Pod 内运行的反向 Shell 或加密货币挖矿程序。
- 先以审计模式部署准入策略。 如果第一天就以拒绝模式启用
requiredLabels策略,会导致部署受阻。 - 未经测试,不要运行两个会挂接内核的特权 DaemonSet(例如 Defender 传感器、Falco 和第三方 EDR);这可能导致 eBPF 程序冲突和节点不稳定。
- ACR + 专用终结点 + Defender 扫描需要仔细设计网络。 扫描器必须能够访问注册表;请验证专用 DNS 解析和受信任服务绕过设置。
- 不要将计划范围限定为单个集群的资源组。 其他资源组中的新集群将得不到保护。请使用订阅范围 + 策略强制实施。
- Windows 容器的传感器覆盖范围有限。 请通过对 Windows 工作负载实施更严格的准入控制和映像扫描来弥补。
- 没有可利用性上下文的映像漏洞发现结果只是噪声。 分类处理前,务必按可利用漏洞 / KEV 筛选。
常见反模式
- “只有无代理模式,因为传感器会让每个节点增加 80 MB 内存开销”——但你没有任何运行时检测。请为内存预留预算。
- “第一天就以拒绝模式启用准入策略”——会造成服务中断。先审计 14 天,修复违规项,然后再启用拒绝模式。
- “只在推送时扫描映像”——昨天的映像若出现今天的 CVE,就不会被标记。请启用持续扫描。
- “CI 忽略 MDVM 发现结果——我们会在运行时发现漏洞”——漏洞会进入生产环境;回滚代价高昂。对于严重且可利用的漏洞,应让构建失败。
- “所有集群都纳入范围,不为沙盒环境设置例外”——警报过多会掩盖真实事件。通过标记 / 范围设置,将沙盒环境排除在准入拒绝和警报路由之外。
- “在直接运行 Docker 的 VM 主机上使用了 Defender for Containers”——工具不对;这种情况应使用
defender-for-servers。 - “因为连接器已经够用,所以跳过了 EKS/GKE 的 Arc”——没有运行时传感器,也就没有 eBPF 检测。
示例提示词
为包含 AKS 集群的 5 个订阅启用 Defender for Containers;先在开发环境试运行 7 天。部署用于 Kubernetes 准入控制的 Azure Policy——将基线策略集设为审计模式。通过 Arc 连接 3 个 EKS 集群并启用运行时传感器。构建一个 CI 门禁:发现 MDVM 报告的严重可利用 CVE 时让构建失败。调查“容器中的加密货币挖矿活动”警报——提供运行手册 + KQL。调整攻击路径分析,使其只显示从互联网到云 IAM 的路径。设计准入控制,仅允许来自已批准 ACR 的已签名映像。
Microsoft Learn
- 概述:https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-introduction
- 启用计划:https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable
- 架构:https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-architecture
- 漏洞评估:https://learn.microsoft.com/azure/defender-for-cloud/agentless-vulnerability-assessment-azure
- 运行时检测警报:https://learn.microsoft.com/azure/defender-for-cloud/alerts-reference#alerts-k8scluster
- 用于 Kubernetes 的 Azure Policy:https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes
- EKS / GKE 保护:https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable?pivots=defender-for-container-eks
- 攻击路径分析:https://learn.microsoft.com/azure/defender-for-cloud/concept-attack-path