使用 Helm 安裝 Defender for Containers 感測器

本文說明如何利用 Helm 在 AKS、EKS 及 GKE 叢集上安裝並配置 Microsoft Defender for Containers 感測器。

Defender for Containers 支援多種感測器部署模式,包括自動配置與 Helm 基礎安裝。 基於 Helm 的部署能提供對感測器版本設定與升級時程的更大控制,但部分營運責任會轉移給你。 使用基於 Helm 的部署時,請考慮:

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

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

先決條件

在使用 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/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 的部署,你可以管理感測器的升級。 適用於雲端的 Defender 不會自動套用這些設定。

執行以下命令以更新現有的基於 Helm 的部署。 使用你安裝時使用的命名空間。

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

對於 <namespace>,使用:

  • mdc 適用於標準 AKS、EKS 及 GKE 叢集。
  • kube-system 用於 AKS 自動化叢集。

若因資源衝突導致升級失敗,請在升級指令中新增以下選項:

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