Установка датчика Defender для контейнеров с помощью Helm

Чтобы управлять сроками развертывания и обновления во всех кластерах Azure Kubernetes Service (AKS), Amazon Elastic Kubernetes Service (EKS) и Google Kubernetes Engine (GKE), установите и настройте датчик Microsoft Defender для контейнеров с помощью Helm.

Defender для контейнеров поддерживает несколько моделей развертывания датчиков, включая автоматическую подготовку и установку на основе Helm. Развертывание с использованием Helm дает вам больше контроля над версионированием и сроками обновления, но часть операционных задач ложится на вас. При развертывании с использованием Helm обратите внимание на следующее:

  • Обновления датчиков: при развертывании на основе Helm вы управляете обновлениями датчиков и временем. Автоматическая подготовка следует расписаниям развертывания, управляемым Корпорацией Майкрософт.

  • Автоматические процессы установки: При развертывании датчика с помощью Helm пропустите автоматические подсказки и рекомендации на портале Azure, чтобы избежать конфликтов с существующим развертыванием.

Prerequisites

Перед установкой датчика с помощью Helm выполните следующие предварительные требования:

  • Убедитесь, что helm и curl установлены и доступны в вашей среде командной строки.

    Чтобы проверить доступность средств, выполните следующую команду:

    helm version
    curl --version
    
    
  • Реализуйте все необходимые требования для датчика Defender для контейнеров, как описано в требованиях к сети датчиков Defender.

  • Включите Defender для контейнеров в целевой подписке или соединителе безопасности:

  • Включите следующие компоненты плана Defender для контейнеров:

    • Датчик Defender
    • Доступ к API Kubernetes
  • Для сред Amazon Web Services (AWS) и Google Cloud Platform (GCP): отключите переключатель Автоматическое развертывание датчика Defender для Azure Arc.

    Если вы хотите оставить включенным автоматическое предоставление для других кластеров с включенной поддержкой Arc в учетной записи AWS или проекте GCP, примените тег ms_defender_e2e_discovery_exclude=true к кластерам, где вы планируете развернуть датчик с помощью Helm.

  • Убедитесь, что в вашей среде нет конфликтующих назначений политик, способных развернуть общедоступную версию датчика.

    Просмотрите назначения политик, использующие следующий идентификатор определения политики, и удалите все конфликтующие назначения:

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

    Чтобы просмотреть определения политик, перейдите к определениям Policy на портале Azure и найдите идентификатор определения политики.

Установка чарта Helm

Чарты Defender для контейнеров 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>

Чтобы проверить настраиваемые значения диаграммы, например флаги компонентов или ограничения ресурсов pod, вытащите диаграмму и просмотрите values.yaml файл:

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

Чтобы установить датчик для вашей среды, выполните следующие действия.

Для стандартных кластеров AKS используйте mdc пространство имен.

Для автоматических кластеров AKS используйте пространство имен kube-system.

Если кластер AKS уже имеет существующий Defender для развертывания контейнеров, отключите существующее развертывание, как описано в Configure 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.

Настройка правил безопасности для шлюзового развертывания

Note

Развертывание шлюза Kubernetes поддерживается в автоматических кластерах AKS, только если датчик установлен с помощью Helm в kube-system пространстве имен. Развертывание надстройки не поддерживается для этого сценария.

Это важно

При создании правил выбранная подписка может отображаться как not supported for Gated deployment. Это состояние возникает, так как вы установили компоненты Defender для контейнеров с помощью Helm, а не с помощью автоматической установки панели мониторинга.

Определите правила безопасности для управления развертыванием в кластерах Kubernetes. Эти правила могут блокировать или проверять образы контейнеров, которые не соответствуют вашим критериям безопасности.

  1. Войдите на портал Azure.

  2. Перейдите в раздел Defender для облака>Настройки среды.

  3. Выберите правила безопасности.

  4. Выберитеоценку уязвимостей>.

  5. Выберите правило, чтобы изменить его, или нажмите кнопку +Добавить правило , чтобы создать новую.

Обработка существующих рекомендаций

Это важно

Не используйте существующие рекомендации Defender для облака для установки профиля Defender или расширения Arc в том же кластере, если вы устанавливаете датчик с помощью Helm. Устранение этих рекомендаций может создать конфликтующее развертывание.

В зависимости от типа развертывания следующие рекомендации могут по-прежнему отображаться в Defender для облака. Проверьте их, чтобы убедиться, что они относятся к процессам автоматического развертывания, а затем игнорируйте их для кластеров, в которых развертывание выполнялось с помощью Helm.

Обновление существующего развертывания, выполненного с использованием Helm

При развертывании на основе Helm вы управляете обновлениями датчиков. Защитник для облака не применяет их автоматически.

Выполните следующую команду, чтобы обновить существующее развертывание на основе 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