Helm を使用して Defender for Containers センサーをインストールする

Azure Kubernetes Service (AKS)、Amazon Elastic Kubernetes Service (EKS)、および Google Kubernetes Engine (GKE) クラスター全体のデプロイとアップグレードのタイミングを制御するには、Helm を使用してコンテナー センサーのMicrosoft Defenderをインストールして構成します。

Defender for Containers では、自動プロビジョニングや 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 対応クラスターに対して自動プロビジョニングを有効のままにする場合は、Helm を使用してセンサーをデプロイするクラスターに ms_defender_e2e_discovery_exclude=true タグを適用します。

  • 一般公開されているセンサー バージョンをデプロイできるポリシー割り当てが競合していないことを確認します。

    次のポリシー定義 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を使用するか、値ファイルを使用してインラインで指定できます。

最新のグラフ バージョンをインストールするには、基本の Helm インストール コマンドを使用します。 環境固有の例に示すように、値ファイルを使用するか、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>

機能フラグやポッド リソースの制限など、構成可能なグラフ値を調べるには、グラフをプルし、 values.yaml ファイルを確認します。

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

環境に合わせてセンサーをインストールするには:

標準の AKS クラスターの場合は、 mdc 名前空間を使用します。

AKS 自動クラスターの場合は、 kube-system 名前空間を使用します。

AKS クラスターにコンテナーデプロイ用の既存のDefenderが既にある場合は、「Configure for Containers for Defender Azure」の説明に従って既存のデプロイを無効にし、次のコマンドを実行して残っているリソースを削除します。

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が表示された場合、インストールは成功しました。

ゲートデプロイのセキュリティ規則を構成する

Kubernetes のゲートデプロイは、 kube-system 名前空間で Helm を使用してセンサーがインストールされている場合にのみ、AKS 自動クラスターでサポートされます。 このシナリオでは、アドオンの展開はサポートされていません。

Important

ルールを作成すると、選択したサブスクリプションが not supported for Gated deploymentとして表示されることがあります。 この状態は、ダッシュボードの自動インストールではなく、Helm を使用して Defender for Containers コンポーネントをインストールしたために発生します。

Kubernetes クラスターにデプロイできる内容を制御するセキュリティ規則を定義します。 これらの規則では、セキュリティ条件を満たしていないコンテナー イメージをブロックまたは監査できます。

  1. Azure portal にサインインする

  2. [Defender for Cloud]>[環境設定] に移動します。

  3. [セキュリティ規則] を選択します

  4. [Gated deployment]>[Vulnerability assessment] を選択します。

  5. 編集するルールを選択するか、[ + ルールの追加] を選択して新しいルールを作成します。

既存の推奨事項を処理する

Important

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 自動クラスターの場合。

リソースの競合が原因でアップグレードが失敗した場合は、upgrade コマンドに次のオプションを追加します。

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