Поделиться через


Усиление защиты и безопасности для плоскости данных 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. Выберите Параметры.

    Снимок экрана: кнопка

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

    Снимок экрана: переключатели, используемые для включения или отключения расширений.

Включение для проектов 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 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". Снимок экрана: рекомендация по кластерам служб Azure Kubernetes.

      Совет

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

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

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

    Снимок экрана: выбор кластера для исправления.

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

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

Примечание.

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

Совет

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

Примечание.

Компоненты Майкрософт, такие как датчик Defender и агент Azure Monitor (AMA), развертываются в пространстве имен kube-system по умолчанию. Эта настройка гарантирует, что они не помечены как несоответствующие рекомендациям плоскости данных. Однако сторонние средства поставщика, установленные в другом пространстве имен, могут быть помечены как несовместимые. Чтобы исключить сторонних поставщиков из этих рекомендаций, можно добавить пространство имен в список исключений.

Имя рекомендации Мера безопасности Требуется настройка
Для контейнеров должны соблюдаться ограничения по числу ЦП и объему оперативной памяти. Защита приложений от атак 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. Откройте вкладку Параметры и при необходимости измените значения.

    Снимок экрана: изменение параметров для одной из рекомендаций в пакете защиты уровня данных Kubernetes.

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

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

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

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

    Снимок экрана: параметр

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

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

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

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

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

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

Снимок экрана: место просмотра затронутых модулей pod для рекомендации Kubernetes.

Чтобы протестировать принудительное применение, используйте два развертывания 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.

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