使用 Helm 安裝適用於容器的 Defender 感應器

要控制 Azure Kubernetes Service (AKS)、Amazon Elastic Kubernetes Service(EKS)及 Google Kubernetes Engine (GKE)叢集的部署與升級時序,請使用 Helm 安裝並設定 Microsoft Defender for Containers 感測器。

Defender for Containers 支援多種感測器部署模式,包括自動配置與基於 Helm 的安裝。 基於 Helm 的部署讓你能更好地控制版本管理和升級時機,但部分營運工作則由你管理。 使用以 Helm 為基礎的部署方式時,請考量以下事項:

  • 感測器升級:透過以 Helm 為基礎的部署,您可以管理感測器升級與時序。 自動配置依照 Microsoft 管理的部署時程進行。

  • 自動安裝流程:使用 Helm 部署感測器時,請跳過 Azure 入口網站的自動提示與建議,以避免與現有部署發生衝突。

Prerequisites

在使用 Helm 安裝感測器前,請先完成以下先決條件:

安裝 Helm 圖表

適用於容器的 Defender 的 Helm 圖表已發佈至mcr.microsoft.com/azuredefender/microsoft-defender-for-containers

該圖表需要在 global.cloudIdentifiers 下的叢集識別碼值。 你可以使用 --set 內嵌提供這些值,如以下範例所示,或者使用一個值文件。

要安裝最新圖表版本,請使用基本的 Helm 安裝指令。 透過 values 檔案提供所需的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 Automatic 叢集,請使用命名空間 kube-system

如果您的 AKS 叢集已有『適用於容器』的 Defender 部署,請依照 配置 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 Automatic 叢集才支援 Kubernetes 閘控部署。 此情境不支援擴充部署。

這很重要

當你建立規則時,所選訂閱可能會顯示為 not supported for Gated deployment。 此狀態是因為您使用 Helm 安裝了 Defender for Containers 的元件,而不是通過儀表板自動安裝。

定義安全規則,控制你可以部署到Kubernetes叢集的內容。 這些規則可以封鎖或審核不符合安全標準的容器映像檔。

  1. 登入 Azure 入口網站

  2. 請前往 適用於雲端的 Defender>環境設定

  3. 選擇 安全規則

  4. 選擇 門控部署>漏洞評估

  5. 選擇規則來編輯,或選擇 + 新增規則 來建立新的規則。

處理現有建議

這很重要

如果您使用 Helm 安裝感測器,請勿使用現有的適用於容器的 Defender 建議,為同一個叢集安裝 Defender 設定檔或 Arc 擴充功能。 對這些建議進行補救措施可能會引發部署衝突。

根據你的部署類型,以下建議可能仍會出現在 適用於雲端的 Defender 中。 檢視這些項目,確認它們是否屬於自動部署流程,然後在你使用 Helm 部署的叢集中忽略它們。

升級現有的 Helm 型部署

使用基於 Helm 的部署,你可以管理感測器的升級。 適用於雲端的 Defender 不會自動套用這些設定。

執行以下命令以更新現有的基於 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