Artículo 07/31/2024
2 colaboradores
Comentarios
En este artículo
适用于容器的 Microsoft Defender 是用于保护容器的云原生解决方案。
无论群集在以下哪些位置运行,适用于容器的 Defender 都能保护群集:
Azure Kubernetes 服务 (AKS):Microsoft 的托管服务,用于开发、部署和管理容器化应用程序。
非其他 Kubernetes 分发 (使用启用了 Azure Arc 的 Kubernetes)- 托管在本地或 IaaS 上的经云原生计算基础 (CNCF) 认证的 Kubernetes 群集。
有关此计划的信息,请参阅适用于容器的 Microsoft Defender 概述 。
首先,可以在以下文章中了解如何连接和保护容器:
注意
适用于容器的 Defender 对启用了 Arc 的 Kubernetes 群集的支持是一项预览版功能。 预览功能是可选择启用的自助功能。
预览功能是“按现状”和“按可用”提供的,不包括在服务级别协议和有限保证中。
启用计划
若要启用计划,请执行以下操作:
从 Defender for Cloud 的菜单打开“设置”页,并选择相关的订阅。
在“Defender 计划”页 中,选择“Defender for Containers”,然后选择“设置”。
提示
如果订阅已启用 Defender for Kubernetes 和/或适用于容器的 Defender 注册表,则会显示一条更新通知。 否则,唯一的选项为“适用于容器的 Defender”。
开启某个相关组件以将其启用。
注意
在 2023 年 8 月之前加入的 Defender for Containers 客户如果在启用该计划时未在 Defender CSPM 中启用 Kubernetes 无代理发现,则必须在 Defender for Containers 计划中手动启用 Kubernetes 无代理发现扩展。
在你关闭 Defender for Containers 后,组件设置为关闭状态,不会部署到任何其他容器,但不会从已安装它们的容器中删除。
每个功能的启用方法
默认情况下,通过 Microsoft Azure 门户启用计划时,Microsoft Defender for Containers 配置为自动启用所有功能并安装所有必需的组件以提供计划提供的保护,包括分配默认工作区。
如果不想启用计划的所有功能,则可以通过为“容器 ”计划选择“编辑配置 ”来手动选择要启用的特定功能。 然后,在“设置和监视”页中,选择要启用的功能 。
此外,在初始配置计划后,可以从 Defender 计划页 修改此配置。
有关每个功能的启用方法的详细信息,请参阅支持矩阵 。
角色和权限
详细了解用于预配 Defender for Containers 扩展的角色 。
为 Defender 传感器分配自定义工作区
可以通过 Azure Policy 分配自定义工作区 。
使用建议手动部署 Defender 传感器或 Azure 策略代理,而无需自动预配
还可以使用适当的建议在一个或多个 Kubernetes 群集上部署需要传感器安装的功能:
执行以下步骤,在特定群集上执行 Defender 传感器部署:
在 Microsoft Defender for Cloud 的建议页中,打开“启用增强的安全性 ”安全控制或直接搜索上述建议之一(或使用上述链接直接打开建议)
通过“不正常”选项卡查看所有没有传感器的群集。
选择要部署所需传感器的群集,然后选择“修复 ”。
选择“修复 X 资源”。
部署 Defender 传感器 - 所有选项
可以启用 Defender for Containers 计划,并从 Azure 门户、REST API 或资源管理器模板部署所有相关组件。 有关详细步骤,请选择相关的选项卡。
部署 Defender 传感器后,会自动分配默认工作区。 可以通过 Azure Policy 分配一个自定义工作区 来代替默认工作区。
注意
Defender 传感器部署到每个节点,以提供运行时保护并使用 eBPF 技术 从这些节点收集信号。
借助一个简化、无冲突的过程,你可以使用 Azure 门户页来启用 Defender for Cloud 计划,并设置自动预配所有必要的组件,以大规模保护 Kubernetes 群集。
专用 Defender for Cloud 建议提供:
有关哪些群集上部署了 Defender 传感器的直观信息
“修复”选项,用于在没有传感器的情况下将此扩展部署到这些群集中
在 Microsoft Defender for Cloud 的建议页中,打开“启用增强的安全性”安全控制。
使用筛选器找到名为“Azure Kubernetes 服务群集应启用 Defender 配置文件”的建议。
选择这些群集以查看正常和不正常资源的详细信息 - 有和没有该传感器的群集。
在“不正常的资源”列表中选择一个群集,然后选择“修正”打开包含修正确认的窗格。
选择“修复 X 资源”。
使用 REST API 部署 Defender 传感器
若要使用 REST API 在现有群集上安装“SecurityProfile”,请运行以下 PUT 命令:
PUT https://management.chinacloudapi.cn/subscriptions/{{Subscription Id}}/resourcegroups/{{Resource Group}}/providers/Microsoft.Kubernetes/connectedClusters/{{Cluster Name}}/providers/Microsoft.KubernetesConfiguration/extensions/microsoft.azuredefender.kubernetes?api-version=2020-07-01-preview
请求 URI:https://management.chinacloudapi.cn/subscriptions/{{SubscriptionId}}/resourcegroups/{{ResourceGroup}}/providers/Microsoft.ContainerService/managedClusters/{{ClusterName}}?api-version={{ApiVersion}}
请求查询参数:
名称
说明
必需
SubscriptionId
群集订阅 ID
是
ResourceGroup
群集资源组
是
ClusterName
群集名称
是
ApiVersion
API 版本必须 >= 2022-06-01
是
请求正文:
{
"location": "{{Location}}",
"properties": {
"securityProfile": {
"defender": {
"logAnalyticsWorkspaceResourceId": "{{LAWorkspaceResourceId}}",
"securityMonitoring": {
"enabled": true,
}
}
}
}
}
请求正文参数:
名称
说明
必需
location
群集位置
是
properties.securityProfile.defender.securityMonitoring.enabled
确定是否在群集上启用或禁用适用于容器的 Microsoft Defender
是
properties.securityProfile.defender.logAnalyticsWorkspaceResourceId
Log Analytics 工作区 Azure 资源 ID
是
使用 Azure CLI 部署 Defender 传感器
登录 Azure:
az cloud set -n AzureChinaCloud
az login
az account set --subscription <your-subscription-id>
重要
确保为 <your-subscription-id>
使用的订阅 ID 与你的 AKS 群集关联的订阅 ID 相同。
在容器上启用 Defender 传感器:
运行以下命令以创建启用了 Defender 传感器的新群集:
az aks create --enable-defender --resource-group <your-resource-group> --name <your-cluster-name>
运行以下命令以在现有群集上启用 Defender 传感器:
az aks update --enable-defender --resource-group <your-resource-group> --name <your-cluster-name>
下面提供了 Defender 传感器类型支持的所有配置设置的说明:
properties
说明
logAnalyticsWorkspaceResourceId
可选。 你自己的 Log Analytics 工作区的完整资源 ID。 如果未提供,将使用区域的默认工作区。 若要获取完整资源 ID,请运行以下命令,以默认 JSON 格式显示订阅中的工作区列表:az resource list --resource-type Microsoft.OperationalInsights/workspaces -o json
Log Analytics 工作区资源 ID 采用以下语法: /subscriptions/{your-subscription-id}/resourceGroups/{your-resource-group}/providers/Microsoft.OperationalInsights/workspaces/{your-workspace-name}. 在 Log Analytics 工作区 中了解详细信息
可将这些设置包含在 JSON 文件中,并在 az aks create
和 az aks update
命令中使用以下参数指定该 JSON 文件:--defender-config <path-to-JSON-file>
。 该 JSON 文件的格式必须为:
{"logAnalyticsWorkspaceResourceId": "<workspace-id>"}
在 az aks 中详细了解 AKS CLI 命令。
若要验证传感器是否已成功添加,请在计算机上运行以下命令,并将 kubeconfig
文件指向群集:
kubectl get pods -n kube-system
添加传感器后,你应该会看到一个名为 microsoft-defender-XXXXX
且处于“Running
”状态的 Pod。 添加 pod 可能需要几分钟时间。
使用 Azure 资源管理器部署 Defender 传感器
若要使用 Azure 资源管理器部署 Defender 传感器,你的订阅中需有一个 Log Analytics 工作区。 在 Log Analytics 工作区 中了解详细信息。
若要使用资源管理器在现有群集上安装“SecurityProfile”:
{
"type": "Microsoft.ContainerService/managedClusters",
"apiVersion": "2022-06-01",
"name": "string",
"location": "string",
"properties": {
…
"securityProfile": {
"defender": {
"logAnalyticsWorkspaceResourceId": “logAnalyticsWorkspaceResourceId",
"securityMonitoring": {
"enabled": true
}
}
}
}
}
启用计划
若要启用计划,请执行以下操作:
从 Defender for Cloud 的菜单打开“设置”页,并选择相关的订阅。
在“Defender 计划”页 中,选择“Defender for Containers”,然后选择“设置”。
提示
如果订阅已启用 Defender for Kubernetes 或适用于容器的 Defender 注册表,则会显示一条更新通知。 否则,唯一的选项为“适用于容器的 Defender”。
开启某个相关组件以将其启用。
注意
在你关闭 Defender for Containers 后,组件设置为关闭状态,不会部署到任何其他容器,但不会从已安装它们的容器中删除。
默认情况下,通过 Azure 门户启用计划时,Microsoft Defender for Containers 配置为自动安装所需组件以提供计划所提供的保护,包括分配默认工作区。
若要在加入过程中禁用自动安装组件,请选择“容器”计划对应的“编辑配置”。 “高级”选项随即显示,可禁用每个组件的自动安装。
此外,还可以从 Defender 计划页 修改此配置。
注意
如果按以上所示的方式通过门户在启用后任意时段选择“禁用计划”,则需要手动删除群集上部署的 Defender for Containers 组件。
可以通过 Azure Policy 分配自定义工作区 。
如果禁用任何组件的自动安装,可以使用相应的建议轻松地将组件部署到一个或多个群集:
详细了解用于预配 Defender for Containers 扩展的角色 。
先决条件
部署传感器之前,请确保:
部署 Defender 传感器
可以使用各种方法部署 Defender 传感器。 有关详细步骤,请选择相关的选项卡。
专用 Defender for Cloud 建议提供:
有关哪些群集上部署了 Defender 传感器的直观信息
“修复”选项,用于在没有传感器的情况下将此扩展部署到这些群集中
在 Microsoft Defender for Cloud 的建议页中,打开“启用增强的安全性”安全控制。
使用筛选器找到名为“已启用 Azure Arc 的 Kubernetes 群集应安装 Defender for Cloud 扩展”的建议。
选择该传感器以查看正常和不正常资源的详细信息 - 有和没有该传感器的群集。
在“不正常的资源”列表中选择一个群集,然后选择“修正”打开包含修正选项的窗格。
选择相关的 Log Analytics 工作区,然后选择“修正 x 资源”。
使用 Azure CLI 部署 Defender 传感器
登录 Azure:
az cloud set -n AzureChinaCloud
az login
az account set --subscription <your-subscription-id>
重要
确保为 <your-subscription-id>
使用的订阅 ID 与将群集连接到 Azure Arc 时所用的 ID 相同。
运行以下命令,在已启用 Azure Arc 的 Kubernetes 群集上部署该传感器:
az k8s-extension create --name microsoft.azuredefender.kubernetes --cluster-type connectedClusters --cluster-name <cluster-name> --resource-group <resource-group> --extension-type microsoft.azuredefender.kubernetes
下面提供了 Defender 传感器类型支持的所有配置设置的说明:
properties
说明
logAnalyticsWorkspaceResourceID
可选。 你自己的 Log Analytics 工作区的完整资源 ID。 如果未提供,将使用区域的默认工作区。 若要获取完整资源 ID,请运行以下命令,以默认 JSON 格式显示订阅中的工作区列表:az resource list --resource-type Microsoft.OperationalInsights/workspaces -o json
Log Analytics 工作区资源 ID 采用以下语法: /subscriptions/{your-subscription-id}/resourceGroups/{your-resource-group}/providers/Microsoft.OperationalInsights/workspaces/{your-workspace-name}. 在 Log Analytics 工作区 中了解详细信息
auditLogPath
可选。 审核日志文件的完整路径。 如果未提供,将使用默认路径 /var/log/kube-apiserver/audit.log
。 对于 AKS 引擎,标准路径为 /var/log/kubeaudit/audit.log
以下命令显示所有可选字段的示例用法:
az k8s-extension create --name microsoft.azuredefender.kubernetes --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-rg> --extension-type microsoft.azuredefender.kubernetes --configuration-settings logAnalyticsWorkspaceResourceID=<log-analytics-workspace-resource-id> auditLogPath=<your-auditlog-path>
使用 Azure 资源管理器部署 Defender 传感器
若要使用 Azure 资源管理器部署 Defender 传感器,你的订阅中需有一个 Log Analytics 工作区。 在 Log Analytics 工作区 中了解详细信息。
可以使用 Defender for Cloud 安装示例 中的 azure-defender-extension-arm-template.json 资源管理器模板。
使用 REST API 部署 Defender 传感器
若要使用 REST API 部署 Defender 传感器,你的订阅中需有一个 Log Analytics 工作区。 在 Log Analytics 工作区 中了解详细信息。
若要使用 REST API 手动部署传感器,请运行以下 PUT 命令:
PUT https://management.chinacloudapi.cn/subscriptions/{{Subscription Id}}/resourcegroups/{{Resource Group}}/providers/Microsoft.Kubernetes/connectedClusters/{{Cluster Name}}/providers/Microsoft.KubernetesConfiguration/extensions/microsoft.azuredefender.kubernetes?api-version=2020-07-01-preview
其中:
名称
在
必需
类型
说明
订阅 ID
路径
正确
字符串
已启用 Azure Arc 的 Kubernetes 资源的订阅 ID
资源组
路径
正确
字符串
包含已启用 Azure Arc 的 Kubernetes 资源的资源组的名称
群集名称
路径
正确
字符串
已启用 Azure Arc 的 Kubernetes 资源的名称
对于 Authentication,头中必须包含一个持有者令牌(与使用其他 Azure API 时一样)。 若要获取持有者令牌,请运行以下命令:
az account get-access-token --subscription <your-subscription-id>
对消息正文使用以下结构:
{
"properties": {
"extensionType": "microsoft.azuredefender.kubernetes",
"con figurationSettings": {
"logAnalytics.workspaceId":"YOUR-WORKSPACE-ID"
// , "auditLogPath":"PATH/TO/AUDITLOG"
},
"configurationProtectedSettings": {
"logAnalytics.key":"YOUR-WORKSPACE-KEY"
}
}
}
下面提供了属性说明:
属性
说明
logAnalytics.workspaceId
Log Analytics 资源的工作区 ID
logAnalytics.key
Log Analytics 资源的密钥
auditLogPath
可选。 审核日志文件的完整路径。 默认值为 /var/log/kube-apiserver/audit.log
验证部署
若要验证群集上是否已安装 Defender 传感器,请执行下列其中一个选项卡中的步骤:
使用 Defender for Cloud 建议来验证传感器的状态
在 Microsoft Defender for Cloud 的建议页中,打开“启用 Microsoft Defender for Cloud”安全控制。
选择名为“已启用 Azure Arc 的 Kubernetes 群集应安装 Microsoft Defender for Cloud 扩展”的建议。
检查在其上部署了该传感器的群集是否以“正常”状态列出 。
使用 Azure Arc 页验证传感器的状态
在 Azure 门户中打开“Azure Arc”。
在基础结构列表中选择“Kubernetes 群集”,然后选择特定的群集。
打开“扩展”页。 其中列出了群集上的扩展。 若要确认 Defender 传感器是否已安装正确,请检查“安装状态” 列。
如需更多详细信息,请选择扩展。
使用 Azure CLI 验证是否已部署传感器
在 Azure CLI 中运行以下命令:
az k8s-extension show --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-rg> --name microsoft.azuredefender.kubernetes
在响应中,查看 "extensionType": "microsoft.azuredefender.kubernetes" 和 "installState": "Installed"。
注意
在前几分钟,响应中可能会显示 "installState": "Pending"。
如果状态显示“已安装 ”,请在计算机上运行以下命令,将 kubeconfig
文件指向你的群集,检查 mdc 命名空间下的所有 Pod 是否都处于“正在运行”状态:
kubectl get pods -n mdc
使用 REST API 验证是否已部署传感器
若要确认部署是否成功或随时验证传感器的状态,请执行以下操作:
运行以下 GET 命令:
GET https://management.chinacloudapi.cn/subscriptions/{{Subscription Id}}/resourcegroups/{{Resource Group}}/providers/Microsoft.Kubernetes/connectedClusters/{{Cluster Name}}/providers/Microsoft.KubernetesConfiguration/extensions/microsoft.azuredefender.kubernetes?api-version=2020-07-01-preview
在响应中的 "extensionType": "microsoft.azuredefender.kubernetes" 内查看 "installState": "Installed"。
提示
在前几分钟,响应中可能会显示 "installState": "Pending"。
如果状态显示“已安装 ”,请在计算机上运行以下命令,将 kubeconfig
文件指向你的群集,检查 mdc 命名空间下的所有 Pod 是否都处于“正在运行”状态:
kubectl get pods -n mdc
模拟来自适用于容器的 Microsoft Defender 的安全警报
Microsoft Defender for Cloud 所有安全警报参考表 中提供了受支持警报的完整列表。
若要模拟安全警报,请从群集运行以下命令:
kubectl get pods --namespace=asc-alerttest-662jfi039n
预期的响应为 No resource found
。
在 30 分钟内,Defender for Cloud 检测到此活动并触发安全警报。
注意
若要模拟 Defender for Containers 的无代理警报,Azure Arc 不是必备项。
在 Azure 门户中,打开 Microsoft Defender for Cloud 的“安全警报”页并查看针对相关资源的警报:
移除 Defender 传感器
若要删除此或任何 Defender for Cloud 扩展,它还不足以关闭自动预配:
启用自动预配可能会影响现有和将来的计算机。
禁用扩展的自动预配只会影响将来的计算机,禁用自动预配不会卸载任何项。
注意
若要完全禁用 Defender for Containers 计划,请转到“环境设置” 并禁用“Microsoft Defender for Containers” 计划。
不过,若要确保现在不再自动将 Defender for Containers 组件预配到资源,请禁用扩展的自动预配,如为 Microsoft Defender for Cloud 中的代理和扩展配置自动预配 中所述。
可以按照以下选项卡中所述,使用 Azure 门户、Azure CLI 或 REST API 删除该扩展。
使用 Azure 门户删除扩展
在 Azure 门户中打开“Azure Arc”。
在基础结构列表中选择“Kubernetes 群集”,然后选择特定的群集。
打开“扩展”页。 其中列出了群集上的扩展。
选择群集,然后选择“卸载”。
使用 Azure CLI 移除 Defender 传感器
使用以下命令删除 Microsoft Defender for Kubernetes Arc 扩展:
az cloud set -n AzureChinaCloud
az login
az account set --subscription <subscription-id>
az k8s-extension delete --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-rg> --name microsoft.azuredefender.kubernetes --yes
删除扩展可能需要几分钟时间。 建议先等待一段时间,然后再尝试验证删除操作是否成功。
若要验证是否已成功删除扩展,请运行以下命令:
az k8s-extension show --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-rg> --name microsoft.azuredefender.kubernetes
之后,运行以下命令,将 kubeconfig
文件指向你的群集,验证群集上 mdc 命名空间下是否没有 Pod:
kubectl get pods -n mdc
删除 Pod 可能需要几分钟时间。
使用 REST API 移除 Defender 传感器
若要使用 REST API 删除扩展,请运行以下 DELETE 命令:
DELETE https://management.chinacloudapi.cn/subscriptions/{{Subscription Id}}/resourcegroups/{{Resource Group}}/providers/Microsoft.Kubernetes/connectedClusters/{{Cluster Name}}/providers/Microsoft.KubernetesConfiguration/extensions/microsoft.azuredefender.kubernetes?api-version=2020-07-01-preview
名称
在
必需
类型
说明
订阅 ID
路径
正确
字符串
已启用 Azure Arc 的 Kubernetes 群集的订阅 ID
资源组
路径
正确
字符串
已启用 Azure Arc 的 Kubernetes 群集的资源组
群集名称
路径
正确
字符串
已启用 Azure Arc 的 Kubernetes 群集的名称
对于 Authentication,头中必须包含一个持有者令牌(与使用其他 Azure API 时一样)。 若要获取持有者令牌,请运行以下命令:
az account get-access-token --subscription <your-subscription-id>
可能需要几分钟时间才能完成该请求。
移除 Defender 传感器
若要删除此或任何 Defender for Cloud 扩展,它还不足以关闭自动预配:
启用自动预配可能会影响现有和将来的计算机。
禁用扩展的自动预配只会影响将来的计算机,禁用自动预配不会卸载任何项。
注意
若要完全禁用 Defender for Containers 计划,请转到“环境设置” 并禁用“Microsoft Defender for Containers” 计划。
不过,若要确保现在不再自动将 Defender for Containers 组件预配到资源,请禁用扩展的自动预配,如为 Microsoft Defender for Cloud 中的代理和扩展配置自动预配 中所述。
可以使用 REST API 或资源管理器模板移除扩展,如以下选项卡中所述。
使用 REST API 从 AKS 移除 Defender 传感器
要使用 REST API 移除扩展,请运行以下 PUT 命令:
https://management.chinacloudapi.cn/subscriptions/{{SubscriptionId}}/resourcegroups/{{ResourceGroup}}/providers/Microsoft.ContainerService/managedClusters/{{ClusterName}}?api-version={{ApiVersion}}
名称
说明
必需
SubscriptionId
群集订阅 ID
是
ResourceGroup
群集资源组
是
ClusterName
群集名称
是
ApiVersion
API 版本必须 >= 2022-06-01
是
请求正文:
{
"location": "{{Location}}",
"properties": {
"securityProfile": {
"defender": {
"securityMonitoring": {
"enabled": false
}
}
}
}
}
请求正文参数:
名称
说明
必需
location
群集位置
是
properties.securityProfile.defender.securityMonitoring.enabled
确定是否在群集上启用或禁用适用于容器的 Microsoft Defender
是
使用 Azure CLI 移除 Defender 传感器
使用以下命令删除 Microsoft Defender:
az cloud set -n AzureChinaCloud
az login
az account set --subscription <subscription-id>
az aks update --disable-defender --resource-group <your-resource-group> --name <your-cluster-name>
删除扩展可能需要几分钟时间。
要验证是否已成功移除扩展,请运行以下命令:
kubectl get pods -n kube-system | grep microsoft-defender
移除扩展后,你会发现 get pods
命令中未返回任何 pod。 删除 Pod 可能需要几分钟时间。
使用 Azure 资源管理器从 AKS 移除 Defender 传感器
若要使用 Azure 资源管理器移除 Defender 传感器,你的订阅中需有一个 Log Analytics 工作区。 在 Log Analytics 工作区 中了解详细信息。
用于从 AKS 中移除 Defender 传感器的相关模板和参数为:
{
"type": "Microsoft.ContainerService/managedClusters",
"apiVersion": "2022-06-01",
"name": "string",
"location": "string",
"properties": {
…
"securityProfile": {
"defender": {
"securityMonitoring": {
"enabled": false
}
}
}
}
}
后续步骤
启用 Defender for Containers 后,可以:
查看有关 Defender for Containers 的常见问题 。