Усиление защиты и безопасности для плоскости данных Kubernetes

На этой странице объясняется, как использовать набор рекомендаций по безопасности Microsoft Defender для облака, посвященных усилению защиты плоскости данных Kubernetes.

Совет

Список рекомендаций по безопасности, которые могут отображаться для кластеров и узлов Kubernetes, см . в разделе рекомендаций по контейнерам в справочной таблице рекомендаций.

Настройка защиты рабочих нагрузок

Microsoft Defender для облака включает пакет рекомендаций, доступных после установки Политика Azure для Kubernetes.

Необходимые компоненты

Включение усиления защиты для плоскости данных Kubernetes

Вы можете включить Политика Azure для Kubernetes одним из двух способов:

Включение Политика Azure для Kubernetes для всех текущих и будущих кластеров с помощью параметров плана или соединителя

Примечание.

Если этот параметр включен, в кластере устанавливаются модули pod Политики Azure для Kubernetes . Это позволяет выделить небольшое количество ЦП и памяти для используемых модулей pod. Это выделение может достичь максимальной емкости, но это не влияет на остальную часть ЦП и памяти ресурса.

Примечание.

Включение для AWS через соединитель не поддерживается из-за ограничения в EKS, которое требует, чтобы администратор кластера добавил разрешения для новой роли IAM в самом кластере.

Включение подписок Azure или локальной среды

При включении Microsoft Defender для контейнеров параметр "Политика Azure для Kubernetes" включен по умолчанию для Служба Azure Kubernetes и для кластеров Kubernetes с поддержкой Azure Arc в соответствующей подписке. Если параметр отключен при начальной конфигурации, его можно включить вручную.

Если вы отключили параметры "Политика Azure для Kubernetes" в плане контейнеров, выполните следующие действия, чтобы включить его во всех кластерах в подписке:

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

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

  3. Выберите соответствующую подписку.

  4. На странице планов Defender убедитесь, что для контейнеров переключатель установлен в положение Вкл.

  5. Выберите Параметры.

    Screenshot showing the settings button in the Defender plan.

  6. На странице Параметры и мониторинга переключите значение "Политика Azure для Kubernetes" в "Вкл.".

    Screenshot showing the toggles used to enable or disable the extensions.

Включение для проектов GCP

Если включить Microsoft Defender для контейнеров в соединителе GCP, параметр Политика Azure Extension for Azure Arc включен по умолчанию для модуля Google Kubernetes в соответствующем проекте. Если параметр отключен при начальной конфигурации, его можно включить вручную.

Если вы отключили параметры расширения Политика Azure для Azure Arc в соединителе GCP, выполните следующие действия, чтобы включить его в соединителе GCP.

Развертывание Политика Azure для Kubernetes в существующих кластерах

Вы можете вручную настроить Политика Azure для Kubernetes в существующих кластерах Kubernetes на странице Рекомендации. После включения рекомендации по обеспечению защиты становятся доступными (для некоторых рекомендаций требуется другая конфигурация).

Примечание.

Для AWS невозможно выполнить подключение в большом масштабе с помощью соединителя, но его можно установить на всех существующих кластерах или в конкретных кластерах, используя рекомендацию кластеров Kubernetes с поддержкой Azure Arc, у него должно быть расширение политики Azure для расширения Kubernetes.

Чтобы развернуть Политика Azure для Kubernetes, в указанные кластеры:

  1. На странице рекомендаций найдите соответствующую рекомендацию:

    • Azure-"Azure Kubernetes Service clusters should have the Azure Policy add-on for Kubernetes installed"

    • GCP - "GKE clusters should have the Azure Policy extension".

    • AWS и локальная среда - "Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed". Screenshot showing the Azure Kubernetes service clusters recommendation.

      Совет

      Рекомендация включена в различные элементы управления безопасностью, и она не имеет значения, выбранного на следующем шаге.

  2. Выберите рекомендацию в любом из элементов управления безопасностью, чтобы просмотреть ресурсы, на которые можно установить надстройку.

  3. Выберите соответствующий кластер и нажмите кнопку "Исправить".

    Screenshot that shows how to select the cluster to remediate.

Просмотр и настройка пакета рекомендаций

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

Примечание.

Если вы впервые устанавливаете Политика Azure для Kubernetes, эти рекомендации будут отображаться как новые дополнения в списке рекомендаций.

Совет

Некоторые рекомендации содержат параметры, которые необходимо настроить с помощью Политики Azure, чтобы их использование было более эффективным. Например, чтобы воспользоваться рекомендацией, Образы контейнеров должны развертываться только из доверенных реестров, потребуется определить доверенные реестры. Если вы не введете необходимые параметры для рекомендаций, требующих настройки, рабочие нагрузки будут отображаться как неработоспособные.

Имя рекомендации Мера безопасности Требуется настройка
Для контейнеров должны соблюдаться ограничения по числу ЦП и объему оперативной памяти. Защита приложений от атак DDoS Да
Образы контейнеров должны развертываться только из доверенных реестров. Исправление уязвимостей Да
Для контейнеров должны применяться возможности Linux с минимальными правами Управление доступом и разрешениями Да
Контейнеры должны использовать только разрешенные профили AppArmor Исправление конфигураций системы безопасности Да
Службы должны ожидать передачи данных только на разрешенных портах Ограничить несанкционированный сетевой доступ Да
Использование сети и портов узлов должно быть ограничено Ограничить несанкционированный сетевой доступ Да
Использование подключений тома с типом HostPath для pod должно быть ограничено известным списком Управление доступом и разрешениями Да
Контейнеры с повышением привилегий должны по возможности исключаться Управление доступом и разрешениями No
Контейнеры с общим доступом к важным пространствам имен узлов должны по возможности исключаться Управление доступом и разрешениями No
Для контейнеров должна применяться неизменяемая (доступная только для чтения) корневая файловая система Управление доступом и разрешениями No
Кластеры Kubernetes должны быть доступны только через HTTPS Шифрование передаваемых данных No
Кластеры Kubernetes должны отключить учетные данные API автоподключения Управление доступом и разрешениями No
Кластеры Kubernetes не должны использовать пространство имен по умолчанию Реализация рекомендаций по безопасности No
Кластеры Kubernetes не должны предоставлять функции безопасности CAPSYSADMIN Управление доступом и разрешениями No
Требуется избегать привилегированных контейнеров Управление доступом и разрешениями No
Работа контейнеров от имени привилегированного пользователя должна по возможности исключаться Управление доступом и разрешениями No

Для рекомендаций с параметрами, которые необходимо настроить, необходимо задать параметры:

Чтобы задать параметры:

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

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

  3. Выберите соответствующую подписку.

  4. В меню Defender для облака выберите Политика безопасности.

  5. Выберите соответствующее назначение. Назначение по умолчанию — ASC default.

  6. Откройте вкладку Параметры и при необходимости измените значения.

    Screenshot showing where to modify the parameters for one of the recommendations in the Kubernetes data plane hardening protection bundle.

  7. Выберите "Рецензирование и сохранение".

  8. Выберите Сохранить.

Чтобы принудительно какую-либо рекомендацию:

  1. Откройте страницу сведений о рекомендации и выберите Отклонить:

    Screenshot showing the Deny option for Azure Policy parameter.

    Откроется панель, чтобы задать область.

  2. Задайте область и нажмите кнопку "Изменить", чтобы запретить.

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

  1. Откройте страницу инвентаризации активов Defender для облака и задайте фильтр типа ресурса службам Kubernetes.

  2. Выберите кластер для изучения и просмотрите доступные для него рекомендации.

При просмотре рекомендации из набора защиты рабочей нагрузки количество затронутых модулей pod ("компоненты Kubernetes") отображается вместе с кластером. Чтобы получить список конкретных модулей pod, выберите кластер, а затем нажмите Выполнить действие.

Screenshot showing where to view the affected pods for a Kubernetes recommendation.

Чтобы протестировать принудительное применение, используйте два развертывания Kubernetes, описанные ниже.

  • Одно предназначено для работоспособного развертывания в соответствии с пакетом рекомендаций по защите рабочих нагрузок.

  • Другой — для неработоспособного развертывания, не соответствующего любым из рекомендаций.

Разверните пример yaml-файлов как есть или используйте их в качестве ссылки для исправления собственной рабочей нагрузки.

Пример работоспособного развертывания YAML-файла

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-healthy-deployment
  labels:
    app: redis
spec:
  replicas: 3
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
      annotations:
        container.apparmor.security.beta.kubernetes.io/redis: runtime/default
    spec:
      containers:
      - name: redis
        image: <customer-registry>.azurecr.io/redis:latest
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: 100m
            memory: 250Mi
        securityContext:
          privileged: false
          readOnlyRootFilesystem: true
          allowPrivilegeEscalation: false
          runAsNonRoot: true
          runAsUser: 1000
---
apiVersion: v1
kind: Service
metadata:
  name: redis-healthy-service
spec:
  type: LoadBalancer
  selector:
    app: redis
  ports:
  - port: 80
    targetPort: 80

Пример неработоспособного развертывания YAML-файла

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-unhealthy-deployment
  labels:
    app: redis
spec:
  replicas: 3
  selector:
    matchLabels:
      app: redis
  template:
    metadata:      
      labels:
        app: redis
    spec:
      hostNetwork: true
      hostPID: true 
      hostIPC: true
      containers:
      - name: redis
        image: redis:latest
        ports:
        - containerPort: 9001
          hostPort: 9001
        securityContext:
          privileged: true
          readOnlyRootFilesystem: false
          allowPrivilegeEscalation: true
          runAsUser: 0
          capabilities:
            add:
              - NET_ADMIN
        volumeMounts:
        - mountPath: /test-pd
          name: test-volume
          readOnly: true
      volumes:
      - name: test-volume
        hostPath:
          # directory location on host
          path: /tmp
---
apiVersion: v1
kind: Service
metadata:
  name: redis-unhealthy-service
spec:
  type: LoadBalancer
  selector:
    app: redis
  ports:
  - port: 6001
    targetPort: 9001

Следующие шаги

Из этой статьи вы узнали, как настроить усиление защиты плоскости данных Kubernetes.

Материалы, относящиеся к теме, см. в следующих статьях.