本文說明如何利用 Helm 在 AKS、EKS 及 GKE 叢集上安裝並配置 Microsoft Defender for Containers 感測器。
Defender for Containers 支援多種感測器部署模式,包括自動配置與 Helm 基礎安裝。 基於 Helm 的部署能提供對感測器版本設定與升級時程的更大控制,但部分營運責任會轉移給你。 使用基於 Helm 的部署時,請考慮:
感測器升級:透過 Helm 部署,您可以管理感測器升級與升級時機。 自動配置依照 Microsoft 管理的部署時程進行。
自動安裝流程:使用 Helm 部署感測器時,請跳過 Azure 入口網站中的自動安裝提示與建議,以避免與現有部署發生衝突。
先決條件
在使用 Helm 安裝感測器前,請確保:
請依照 Defender 感應器網路需求中所述,實作適用於容器的 Defender 感應器的所有先決條件需求。
已在目標訂用帳戶或安全性連接器中啟用適用於容器的 Defender:
- Azure 訂閱:通過入口網站在 AKS 上啟用容器防護者
- 亞馬遜網路服務(AWS): 透過入口網站啟用 AWS 上的 Defender for Containers(EKS)
- Google Cloud 專案(GCP): 透過入口網站啟用 GCP 上的 Defender for Containers (GKE)
- 已啟用 Arc 的 Kubernetes:透過入口網站在已啟用 Arc 的 Kubernetes 上啟用適用於容器的 Defender
Defender for Containers 計畫的以下組件已啟用:
- Defender 感應器
- Kubernetes API 存取
對於 AWS 和 GCP 環境: 請確保 適用於 Azure Arc 的 Defender 感測器自動配置功能開關 被禁用。
如果你想在 AWS 帳號或 GCP 專案中,讓其他啟用 Arc 的叢集保持自動配置,請使用 Helm 將標籤套用
ms_defender_e2e_discovery_exclude=true到你打算部署感測器的叢集上。您的環境中沒有與部署正式可用 (GA) 版本感測器衝突的原則指派。
檢視使用以下政策定義 ID 的政策指派,並移除任何衝突的指派:
64def556-fbad-4622-930e-72d1d5589bf5若要查看政策定義,請前往Azure入口網站Policy definitions,並搜尋政策定義 ID。
安裝 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叢集的內容。 這些規則幫助你根據安全標準封鎖或審核容器映像,例如漏洞過多的影像。
登入 Azure 入口網站。
請前往 適用於雲端的 Defender>環境設定。
選擇 安全規則。
選擇 門控部署>漏洞評估。
選擇規則來編輯,或選擇 + 新增規則 來建立新的規則。
處理現有建議
這很重要
如果您使用 Helm 安裝感測器,請勿使用現有的適用於容器的 Defender 建議,為同一個叢集安裝 Defender 設定檔或 Arc 擴充功能。 對這些建議進行補救措施可能會引發部署衝突。
根據你的部署類型,以下建議仍可能出現在 適用於雲端的 Defender 中:
Azure:Azure Kubernetes Service 叢集應啟用 Defender 設定檔 - Microsoft Azure
Arc 啟用的 Kubernetes 叢集:支援 Azure Arc 的 Kubernetes 叢集應安裝 Defender 擴充套件 - Microsoft Azure
升級現有的 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