容器安全性建议

本文列出了 Microsoft Defender for Cloud 中可能会显示的所有容器安全建议。

环境中显示的建议基于要保护的资源和自定义配置。

提示

如果建议的描述中显示“无相关策略”,通常是因为该建议依赖于另一个建议

例如,建议“应修正 Endpoint Protection 运行状况失败”依赖于建议“应安装 Endpoint Protection 解决方案”,后者检查 Endpoint Protection 解决方案是否已安装。 基础建议确实具有一个策略。 将策略限制为仅用于基本建议可简化策略管理。

Azure 容器建议

已启用 Azure Arc 的 Kubernetes 群集应已安装 Azure Policy 扩展

说明:适用于 Kubernetes 的 Azure Policy 扩展扩展了 Gatekeeper v3(用于开放策略代理 (OPA) 的许可控制器 Webhook),以集中、一致的方式在群集上应用大规模强制措施和安全措施。 (无相关策略)

严重性:高

类型:控制平面

Azure Kubernetes 服务群集应启用 Defender 配置文件

说明:Microsoft Defender for Containers 提供云原生 Kubernetes 安全功能,包括环境强化、工作负载保护和运行时保护。 在 Azure Kubernetes 服务群集上启用 SecurityProfile.AzureDefender 配置文件时,会将代理部署到群集以收集安全事件数据。 有关详细信息,请参阅 Microsoft Defender for Containers 简介。 (无相关策略)

严重性:高

类型:控制平面

Azure Kubernetes 服务群集应已安装适用于 Kubernetes 的 Azure Policy 加载项

说明:适用于 Kubernetes 的 Azure Policy 加载项扩展了 Gatekeeper v3(用于开放策略代理 (OPA) 的许可控制器 Webhook),以集中、一致的方式在群集上应用大规模强制措施和安全措施。 Defender for Cloud 要求加载项审核并强制实施群集内的安全功能和合规性。 了解详细信息。 需要 Kubernetes v1.14.0 或更高版本。 (相关策略:应在群集上安装并启用用于 Kubernetes 服务的 Azure Policy 加载项 (AKS))

严重性:高

类型:控制平面

Azure 注册表容器映像应已解决漏洞(由 Microsoft Defender 漏洞管理提供支持)

说明:容器映像漏洞评估会扫描注册表中常见的漏洞 (CVE),并为每个映像提供详细的漏洞报告。 解决漏洞可以极大地改善安全状况,确保在部署之前可以安全地使用映像。 (相关策略:应修正 Azure 容器注册表映像中的漏洞)。

严重性:高

类型:漏洞评估

Azure 注册表容器映像应该已解决漏洞(由 Qualys 提供支持)

说明:容器映像漏洞评估功能会扫描注册表中的安全漏洞,并公开每个映像的详细发现结果。 修复这些漏洞可以极大改善容器的安全状况,并保护其不受攻击影响。 (相关策略:应修正 Azure 容器注册表映像中的漏洞)。

评估密钥:dbd0cb49-b563-45e7-9724-889e799fa648

类型:漏洞评估

Azure 运行容器映像应已解决漏洞(由 Microsoft Defender 漏洞管理提供支持)

说明:容器映像漏洞评估会扫描注册表中常见的漏洞 (CVE),并为每个映像提供详细的漏洞报告。 此建议可显示出 Kubernetes 群集中当前运行的易受攻击映像。 修正当前正在运行的容器映像中的漏洞是改善安全状况的关键,可显著减少容器化工作负载的攻击面。

严重性:高

类型:漏洞评估

Azure 正在运行的容器映像应该已解决漏洞(由 Qualys 提供支持)

说明:容器映像漏洞评估功能会扫描 Kubernetes 群集上运行的容器映像是否存在安全漏洞,并公开每个映像的详细发现结果。 修复这些漏洞可以极大改善容器的安全状况,并保护其不受攻击影响。 (无相关策略)

评估密钥:41503391-efa5-47ee-9282-4eff6131462c

类型:漏洞评估

应强制执行容器 CPU 和内存限制

说明:强制执行 CPU 和内存限制可阻止资源耗尽攻击(一种拒绝服务攻击的形式)。

建议为容器设置限制,以确保运行时防止容器使用的资源超过配置的资源限制。

(相关策略:确保容器 CPU 和内存资源限制不超过 Kubernetes 群集中指定的限制)。

严重性:中等

类型:Kubernetes 数据平面

应只从受信任的注册表中部署容器映像

说明:在 Kubernetes 群集上运行的映像应来自已知和监视的容器映像注册表。 受信任的注册表通过限制引入未知漏洞、安全问题和恶意映像的可能性,降低群集的暴露风险。

(相关策略:确保 Kubernetes 群集中只有允许使用的容器映像)。

严重性:高

类型:Kubernetes 数据平面

[预览] Azure 注册表中的容器映像应解决漏洞问题

说明:Defender for Cloud 会扫描注册表映像中是否存在已知漏洞 (CVE),并为每个扫描的映像提供详细扫描结果。 扫描并修正注册表中容器映像的漏洞有助于维护安全可靠的软件供应链,降低安全事件风险,并确保符合行业标准。

新建议正式发布时,将删除建议 Azure 注册表容器映像应已解决漏洞(由 Microsoft Defender 漏洞管理提供支持)

新建议为预览版,不用于安全功能分数计算。

严重性:高

类型:漏洞评估

(必要时启用)容器注册表应使用客户管理的密钥 (CMK) 进行加密

说明:默认情况下,不会评估使用客户管理的密钥来加密静态数据的建议,但仍会显示这些建议,以便为适用的方案启用。 将会使用平台管理的密钥自动对数据进行加密,因此,只有在合规性或限制性策略要求强制时,才应应用客户管理的密钥。 若要启用此建议,请导航到适用作用域的安全策略,并更新相应策略的 Effect 参数以审核或强制使用客户管理的密钥。 有关详细信息,请参阅管理安全策略。 使用客户管理的密钥来管理注册表内容的静态加密。 默认情况下,使用服务管理的密钥对数据进行静态加密,但为了满足监管合规标准,通常需要使用客户管理的密钥 (CMK)。 CMK 允许使用由你创建并拥有的 Azure Key Vault 密钥对数据进行加密。 你可以完全控制并负责关键生命周期,包括轮换和管理。 有关 CMK 加密的详细信息,请参阅客户管理的密钥概述。 (相关策略:应使用客户管理的密钥 (CMK) 对容器注册表进行加密)。

严重性:低

类型:控制平面

容器注册表不得允许无限制的网络访问

说明:默认情况下,Azure 容器注册表接受来自任何网络上的主机的 Internet 连接。 为了防止注册表受到潜在的威胁,只允许来自特定的公共 IP 地址或地址范围的访问。 如果注册表没有 IP/防火墙规则或配置的虚拟网络,它将出现在不正常资源中。 有关容器注册表网络规则的详细信息,请参阅配置公共 IP 网络规则。 (相关策略:容器注册表不应允许不受限制的网络访问)。

严重性:中等

类型:控制平面

说明:通过 Azure 专用链接,在没有源位置或目标位置的公共 IP 地址的情况下,也可以将虚拟网络连接到 Azure 服务。 专用链接平台处理使用者与服务之间通过 Azure 主干网络进行的连接。 通过将专用终结点映射到容器注册表(而不是整个服务),还可以防范数据泄露风险。 有关详细信息,请访问:https://aka.ms/acr/private-link。 (相关策略:容器注册表应使用专用链接)。

严重性:中等

类型:控制平面

[预览]在 Azure 中运行的容器应解决漏洞问题

说明:Defender for Cloud 创建 Kubernetes 群集中当前运行的所有容器工作负载清单,并通过匹配为注册表映像创建的映像和漏洞报告来为这些工作负载提供漏洞报告。 扫描并修正容器工作负载的漏洞对于确保强大且安全的软件供应链、降低安全事件风险和确保符合行业标准至关重要。

新建议正式发布时,将删除建议运行容器映像的 Azure 应已解决漏洞(由 Microsoft Defender 漏洞管理提供支持)

新建议为预览版,不用于安全功能分数计算。

注意

从 9 月中旬开始,该建议将被更新为仅为每个根控制器报告一个单个容器。 例如,如果一个 cronjob 创建了多个作业,其中每个作业都创建了一个带有易受攻击容器的 Pod,则建议只报告该作业中易受攻击的容器的单个实例。 此更改将有助于删除需要采取单一补救措施的相同容器的重复报告。 如果你在更改之前使用了此建议,则预期此建议的实例数量会减少。
为了支持这一改进,此建议的评估密钥将更新为 c5045ea3-afc6-4006-ab8f-86c8574dbf3d。 如果你当前正在通过 API 从该建议中检索漏洞报告,请确保在评估密钥更新后更新该密钥。

严重性:高

类型:漏洞评估

应避免使用共享敏感主机命名空间的容器

说明:若要防止容器外的特权提升,请避免 Pod 访问 Kubernetes 群集中的敏感主机命名空间(主机进程 ID 和主机 IPC)。 (相关策略:Kubernetes 群集容器不应共享主机进程 ID 或主机 IPC 命名空间)。

严重性:中等

类型:Kubernetes 数据平面

容器应仅使用允许的 AppArmor 配置文件

说明:在 Kubernetes 集群上运行的容器应仅限使用允许的 AppArmor 配置文件。 AppArmor(应用程序防御)是一种 Linux 安全模块,可保护操作系统及其应用程序免受安全威胁。 为使用此模块,系统管理员需要将 AppArmor 安全配置文件与每个程序相关联。 (相关策略:Kubernetes 群集容器应只使用允许的 AppArmor 配置文件)。

严重性:高

类型:Kubernetes 数据平面

应避免使用特权提升的容器

说明:容器在 Kubernetes 群集中不应将特权提升到根目录。 AllowPrivilegeEscalation 属性控制进程是否可以获得比其父进程更多的特权。 (相关策略:Kubernetes 群集不应允许容器特权提升)。

严重性:中等

类型:Kubernetes 数据平面

应启用 Kubernetes 服务中的诊断日志

说明:在 Kubernetes 服务中启用诊断日志,并保留最多一年。 这样便可以在发生安全事件时,重新创建活动线索用于调查目的。 (无相关策略)

严重性:低

类型:控制平面

应强制对容器使用不可变(只读)根文件系统

说明:Kubernetes 群集中的容器应使用只读根文件系统运行。 不可变文件系统将恶意二进制文件添加到路径,可防止容器在运行时更改。 (相关策略:Kubernetes 群集容器应使用只读根文件系统运行)。

严重性:中等

类型:Kubernetes 数据平面

应为 Kubernetes API 服务器配置受限访问权限

说明:若要确保只有来自允许的网络、计算机或子网的应用程序可以访问群集,请限制对 Kubernetes API 服务器的访问权限。 可以通过定义授权的 IP 范围或将 API 服务器设置为专用群集(如创建专用 Azure Kubernetes 服务群集中所述)来限制访问权限。 (相关策略:应在 Kubernetes 服务上定义授权的 IP 范围)。

严重性:高

类型:控制平面

Kubernetes 群集应只可通过 HTTPS 进行访问

说明:使用 HTTPS 可确保执行身份验证,并保护传输中的数据不受网络层窃听攻击威胁。 此功能目前已面向 Kubernetes 服务 (AKS) 正式发布,并面向 AKS 引擎和已启用 Azure Arc 的 Kubernetes 提供预览版。 有关详细信息,请访问https://aka.ms/kubepolicydoc(相关策略:在 Kubernetes 群集中强制实施 HTTPS 入口)。

严重性:高

类型:Kubernetes 数据平面

Kubernetes 群集应禁用自动装载 API 凭据

说明:禁用自动装载 API 凭据,以防止可能泄露的 Pod 资源对 Kubernetes 群集运行 API 命令。 有关详细信息,请参阅 https://aka.ms/kubepolicydoc。 (相关策略:Kubernetes 群集应禁用自动装载 API 凭据)。

严重性:高

类型:Kubernetes 数据平面

Kubernetes 群集不应授予 CAPSYSADMIN 安全功能

说明:为了减小容器的受攻击面,请限制 CAP_SYS_ADMIN Linux 功能。 有关详细信息,请参阅 https://aka.ms/kubepolicydoc。 (无相关策略)

严重性:高

类型:Kubernetes 数据平面

Kubernetes 群集不应使用默认命名空间

说明:防止在 Kubernetes 群集中使用默认命名空间,以防止对 ConfigMap、Pod、Secret、Service 和 ServiceAccount 资源类型进行未经授权的访问。 有关详细信息,请参阅 https://aka.ms/kubepolicydoc。 (相关策略:Kubernetes 群集不应使用默认命名空间)。

严重性:低

类型:Kubernetes 数据平面

应强制对容器使用最低权限 Linux 功能

说明:为了减少容器的攻击面,请限制 Linux 功能,并向容器授予特定特权,而不授予根用户的所有特权。 建议删除所有功能,然后添加所需的功能(相关策略:Kubernetes 群集容器应仅使用允许的功能)。

严重性:中等

类型:Kubernetes 数据平面

应启用 Microsoft Defender for Containers

说明:Microsoft Defender for Containers 为 Azure 和混合 Kubernetes 环境提供强化、漏洞评估和运行时保护。 可以使用此信息快速补救安全问题,并提高容器的安全性。

修正此建议将导致对 Kubernetes 群集的保护产生费用。 如果此订阅中没有任何 Kubernetes 群集,则不会产生任何费用。 如果将来在此订阅中创建任何 Kubernetes 群集,它将自动受到保护,届时将开始计费。 有关详细信息,请参阅 Microsoft Defender for Containers 简介。 (无相关策略)

严重性:高

类型:控制平面

应避免特权容器

说明:要防止主机访问不受限制,请尽可能避免使用特权容器。

特权容器具有主机的所有根功能。 它们可用作攻击的入口点,并将恶意代码或恶意软件传播到受攻击的应用程序、主机和网络。 (相关策略:不允许 Kubernetes 群集中有特权容器)。

严重性:中等

类型:Kubernetes 数据平面

应在 Kubernetes 服务上使用基于角色的访问控制

说明:若要对用户可以执行的操作提供粒度筛选,请使用基于角色的访问控制 (RBAC) 来管理 Kubernetes 服务群集中的权限,并配置相关授权策略。 (相关策略:应在 Kubernetes 服务上使用基于角色的访问控制 (RBAC))。

严重性:高

类型:控制平面

应避免以根用户身份运行容器

说明:不应在 Kubernetes 群集中以根用户身份运行容器。 在容器内以根用户身份运行进程会导致在主机上以根用户身份运行该进程。 如果遭到入侵,攻击者会获得容器中的根权限,任何配置错误都变得更加容易被利用。 (相关策略:Kubernetes 群集 Pod 和容器应只使用批准的用户 ID 和组 ID 运行)。

严重性:高

类型:Kubernetes 数据平面

服务应只侦听允许的端口

说明:若要减少 Kubernetes 群集的受攻击面,请限制服务对已配置端口的访问权限,以此限制对群集的访问权限。 (相关策略:确保服务只侦听 Kubernetes 群集中允许使用的端口)。

严重性:中等

类型:Kubernetes 数据平面

应限制对主机网络和端口的使用

说明:限制 Pod 在 Kubernetes 群集中对主机网络和允许的主机端口范围的访问。 在启用 hostNetwork 属性的情况下创建的 Pod 将共享该节点的网络空间。 为了避免被泄露的容器侦听网络流量,建议不要将 Pod 置于主机网络上。 如果需要在节点的网络上公开容器端口,并且使用 Kubernetes 服务节点端口不能满足你的需求,另一个可能的做法是在 Pod 规范中为容器指定 hostPort。(相关策略:Kubernetes 群集 Pod 应只使用已批准的主机网络和端口范围)。

严重性:中等

类型:Kubernetes 数据平面

应限制为只有已知列表才能使用 Pod HostPath 卷装载,以限制来自遭入侵容器的节点访问

说明:建议将 Kubernetes 群集中的 pod HostPath 卷装载限制为配置的允许主机路径。 如果遭到入侵,应限制容器对容器节点的访问。 (相关策略:Kubernetes 群集 Pod hostPath 卷应只使用允许的主机路径)。

严重性:中等

类型:Kubernetes 数据平面