你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Helm 安装 Defender for Containers 传感器

若要控制 Azure Kubernetes 服务 (AKS)、Amazon Elastic Kubernetes Service (EKS) 和 Google Kubernetes Engine (GKE) 群集中部署和升级的时机,请使用 Helm 安装并配置适用于容器的 Microsoft Defender 传感器。

适用于容器的 Defender 支持多种传感器部署模型,包括自动预配和基于 Helm 的安装。 采用基于 Helm 的部署方式可以让你更好地控制版本管理和升级时机,但同时也需要由你来承担一部分运维工作。 使用基于 Helm 的部署时,请注意以下事项:

  • 传感器升级:使用基于 Helm 的部署,可以管理传感器升级和计时。 自动预配遵循由 Microsoft 管理的推出时间表。

  • 自动安装流程:使用 Helm 部署传感器时,请跳过 Azure 门户中的自动提示和建议,以避免与现有部署发生冲突。

先决条件

在使用 Helm 安装传感器之前,请完成以下先决条件:

  • 确保 helmcurl 已安装,并且可在您的命令行环境中使用。

    若要检查工具是否可用,请运行:

    helm version
    curl --version
    
    
  • Defender 传感器网络要求中所述,实现 Defender for Containers 传感器的所有先决条件要求。

  • 在目标订阅或安全连接器中启用 Defender for Containers:

  • 启用 Defender for Containers 计划的以下组件:

    • Defender传感器
    • Kubernetes API 访问
  • 对于 Amazon Web Services (AWS) 和 Google Cloud Platform (GCP) 环境:禁用自动预配 Azure Arc 的 Defender 传感器切换开关。

    如果要为 AWS 帐户或 GCP 项目中其他已启用 Arc 的群集保持自动预配,请将 ms_defender_e2e_discovery_exclude=true 标记应用于想要使用 Helm 部署传感器的群集。

  • 确保你的环境中没有可能部署正式发布版传感器的冲突策略分配。

    查看使用以下策略定义 ID 的策略分配,并删除任何冲突的分配:

    64def556-fbad-4622-930e-72d1d5589bf5

    若要查看策略定义,请转到 Azure 门户中的 Policy 定义,然后搜索策略定义 ID。

安装 Helm 图表

已将 Defender for Containers Helm 图表发布到 mcr.microsoft.com/azuredefender/microsoft-defender-for-containers

图表需要在global.cloudIdentifiers下的集群标识符值。 可以直接内嵌在 --set中提供这些值,如以下示例所示,或者使用值文件。

若要安装最新的图表版本,请使用 Base Helm install 命令。 如环境特定示例所示,使用值文件或使用 global.cloudIdentifiers 以内联方式提供所需的 --set 值:

helm install defender-k8s oci://mcr.microsoft.com/azuredefender/microsoft-defender-for-containers

可以通过运行以下命令列出已发布的版本:

curl https://mcr.microsoft.com/v2/azuredefender/microsoft-defender-for-containers/tags/list

若要安装特定版本,请包括版本标记:

helm install defender-k8s oci://mcr.microsoft.com/azuredefender/microsoft-defender-for-containers:<tag>

若要检查可配置的图表值(如功能标志或 Pod 资源限制),请拉取图表并查看 values.yaml 文件:

helm pull oci://mcr.microsoft.com/azuredefender/microsoft-defender-for-containers

若要为环境安装传感器,请执行以下操作:

对于标准 AKS 群集,请使用 mdc 命名空间。

对于 AKS 自动群集,请使用 kube-system 命名空间。

如果您的 AKS 群集已经部署了现有的容器防护程序,请按照 配置 Azure 的容器 Defender 中的说明禁用现有部署,并通过运行以下命令删除任何剩余资源:

kubectl delete crd/policies.defender.microsoft.com || true
kubectl delete crd/policytemplates.defender.microsoft.com || true
kubectl delete crd/runtimepolicies.defender.microsoft.com || true
kubectl delete crd/securityartifactpolicies.defender.microsoft.com || true
kubectl delete ClusterRole defender-admission-controller-cluster-role || true
kubectl delete ClusterRole defender-admission-controller-resource-cluster-role || true
kubectl delete ClusterRoleBinding defender-admission-controller-cluster-role-binding || true
kubectl delete ClusterRoleBinding defender-admission-controller-cluster-resource-role-binding || true

安装传感器:

helm install defender-k8s oci://mcr.microsoft.com/azuredefender/microsoft-defender-for-containers \
    --create-namespace --namespace <namespace> \
    --set global.cloudIdentifiers.Azure.subscriptionId="<cluster-subscription-id>" \
    --set global.cloudIdentifiers.Azure.resourceGroupName="<cluster-resource-group>" \
    --set global.cloudIdentifiers.Azure.clusterName="<cluster-name>" \
    --set global.cloudIdentifiers.Azure.region="<cluster-region>"

替换为 <namespace>

  • mdc 用于标准 AKS 群集。
  • kube-system 用于 AKS 自动群集。

验证安装

使用用于安装图表的同一命名空间验证安装。

helm list --namespace mdc

如果 STATUS 字段显示 deployed,则安装成功。

为封闭部署配置安全规则

注释

仅当使用 Helm 在 kube-system 命名空间中安装传感器时,AKS 自动群集上才支持 Kubernetes 受控部署。 此应用场景不支持附加产品部署。

重要

创建规则时,所选订阅可能显示为 not supported for Gated deployment。 出现此状态是因为你通过 Helm 而非仪表板的自动安装安装了 Defender for Containers 组件。

定义安全规则以控制可在 Kubernetes 群集中部署的内容。 这些规则可以阻止或审核不符合安全条件的容器映像。

  1. 登录到 Azure 门户

  2. 转到 Defender for Cloud>环境设置

  3. 选择 “安全规则”。

  4. 选择 “封闭部署>漏洞评估”。

  5. 选择要编辑的规则,或选择“ + 添加规则 ”以创建新规则。

处理现有建议

重要

如果使用 Helm 安装传感器,请不要使用现有的 Defender for Cloud 建议在同一集群上安装 Defender 配置文件或 Arc 扩展。 修改这些建议可能会导致部署冲突。

根据部署类型,以下建议可能仍显示在Defender for Cloud中。 检查它们,确认它们指的是自动部署流程,然后在使用 Helm 部署的集群中忽略它们。

升级基于 Helm 的现有部署

对于基于 Helm 的部署,传感器升级由你管理。 Defender for Cloud 不会自动应用它们。

运行以下命令以更新基于 Helm 的现有部署。 使用安装期间使用的命名空间。

helm upgrade defender-k8s \
    oci://mcr.microsoft.com/azuredefender/microsoft-defender-for-containers \
    --namespace <namespace> \
    --reuse-values

<namespace> 替换为您在安装期间使用的命名空间。

--reuse-values 参数在升级期间保留现有自定义值。

对于 <namespace>,请使用:

  • mdc 用于标准 AKS、EKS 和 GKE 群集。
  • kube-system 用于 AKS 自动群集。

如果由于资源冲突而升级失败,请将以下选项添加到升级命令:

--server-side=true --resolve-conflicts