Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Защита плоскости данных Kubernetes помогает применять безопасные конфигурации для рабочих нагрузок, работающих в кластере, таких как ограничение привилегированных контейнеров, применение ограничений ресурсов и ограничение сетевого доступа.
В Microsoft Defender для облака усиление плоскостей данных реализуется с помощью Политика Azure for Kubernetes для оценки и обеспечения соблюдения этих конфигураций. Политика Azure развертывается как часть Defender for Containers при включенном автоматическом предоставлении.
Если Политика Azure для Kubernetes отключена в настройках плана в Defender для контейнеров, её можно развернуть, устранив соответствующую рекомендацию. Вы также можете вручную развернуть Политика Azure, используя Azure CLI для развертывания компонентов Defender for Containers или Helm для развертывания компонентов Defender for Containers, если вы отключили автоматическую провизию во время активации или исключили определённые кластеры из автоматической настройки.
После развертывания Политика Azure для Kubernetes Defender для облака создает рекомендации по обеспечению защиты плоскости данных на основе конфигурации кластера. На этой странице показано, как просмотреть эти рекомендации, настроить параметры политики и применить их в кластерах.
Prerequisites
Чтобы начать, убедитесь, что:
Вы добавили необходимые правила FQDN и приложения для политики Azure.
(Для кластеров, отличных от AKS) Кластер Kubernetes подключен к Azure Arc.
Включение Политика Azure для Kubernetes путем исправления рекомендаций
Если Политика Azure for Kubernetes не развернута или была отключена в настройках плана Defender for Containers, вы можете установить её, исправив рекомендацию, соответствующую вашему кластеру, в Defender для облака.
Войдите на портал Azure.
Перейдите в Microsoft Defender для облака>Рекомендации.
Найдите соответствующую рекомендацию:
- Azure: Служба Azure Kubernetes кластерам должна быть установлена надстройка Политика Azure для Kubernetes.
- GCP: кластеры GKE должны иметь расширение Политика Azure
- AWS/Arc с поддержкой Kubernetes: Azure Arc кластеры Kubernetes должны иметь расширение Политика Azure
Выберите рекомендацию.
На вкладке "Действие" нажмите кнопку "Исправить".
Выберите "Исправление", чтобы устранить выбранные ресурсы.
Повторите для каждой рекомендации.
Рекомендации по обеспечению защиты плоскости данных
После развертывания Политика Azure для Kubernetes Defender для облака оценивает конфигурацию кластера и создает рекомендации по обеспечению защиты уровня данных. Этот процесс может занять до 30 минут.
Note
Компоненты компании Microsoft, такие как датчик Defender, развертываются в пространстве имен kube-system по умолчанию и не признаны несоответствующими. Сторонние компоненты, установленные в других пространствах имен, могут быть помечены. Чтобы исключить определенные пространства имен, настройте исключения политик Azure.
В следующей таблице перечислены общие рекомендации по обеспечению защиты плоскости данных:
| Имя рекомендации | Контроль безопасности | Требуется настройка |
|---|---|---|
| Для контейнеров должны соблюдаться ограничения по числу ЦП и объему оперативной памяти. | Защита приложений от атак DDoS | Yes |
| Образы контейнеров должны развертываться только из доверенных реестров | Исправление уязвимостей | Yes |
| Для контейнеров должны применяться возможности Linux с наименьшими привилегиями. | Управление доступом и разрешениями | Yes |
| Контейнеры должны использовать только разрешенные профили AppArmor | Исправление конфигураций системы безопасности | Yes |
| Службы должны работать только на разрешенных портах | Ограничить несанкционированный сетевой доступ | Yes |
| Использование сети и портов узлов должно быть ограничено | Ограничить несанкционированный сетевой доступ | Yes |
| Использование подключений томов HostPath для pod'ов должно быть ограничено списком, известным заранее. | Управление доступом и разрешениями | Yes |
| Контейнеры с повышением привилегий следует избегать | Управление доступом и разрешениями | No |
| Контейнеры, разделяющие чувствительные пространства имен хоста, следует по возможности избегать | Управление доступом и разрешениями | No |
| Для контейнеров должна применяться неизменяемая (доступная только для чтения) корневая файловая система | Управление доступом и разрешениями | No |
| Кластеры Kubernetes должны быть доступны только через HTTPS | Шифрование данных при передаче | No |
| Кластеры Kubernetes должны отключить автоматическое подключение учетных данных API. | Управление доступом и разрешениями | No |
| Кластеры Kubernetes не должны использовать пространство имен по умолчанию | Реализация рекомендаций по безопасности | No |
| Кластеры Kubernetes не должны предоставлять CAP_SYS_ADMIN возможности | Управление доступом и разрешениями | No |
| Требуется избегать привилегированных контейнеров | Управление доступом и разрешениями | No |
| Запуск контейнеров с привилегированными правами пользователя (root) следует избегать. | Управление доступом и разрешениями | No |
Просмотр рекомендаций для кластера
Чтобы просмотреть рекомендации по обеспечению защиты плоскости данных для определенного кластера, выполните указанные ниже действия.
Войдите на портал Azure.
Перейдите к Defender для облака>Inventory.
Задайте фильтр типа ресурса в службу Kubernetes и нажмите кнопку "Применить".
Выберите соответствующий кластер.
Просмотрите доступные рекомендации. Рекомендации по обеспечению защиты плоскости данных показывают количество затронутых компонентов Kubernetes.
Выберите рекомендацию для просмотра затронутых ресурсов.
Перейдите на вкладку "Действие" , чтобы просмотреть параметры исправления.
Настройка параметров политики
Некоторые рекомендации включают параметры, ограничивающие ресурсы Kubernetes, оцениваемые базовой Политика Azure. Например, политика для иммутабельной (только для чтения) корневой файловой системы должна применяться для контейнеров , включая excludedContainersпараметры , excludedImages, и excludedNamespaces . Исключения контейнеров совпадают с именами контейнеров. Исключения изображений поддерживают соответствие префиксов, когда значение заканчивается на *, например myregistry.azurecr.io/istio:*, . Используйте полностью квалифицированное имя изображения, чтобы избежать случайного исключения изображения из ненадёжного реестра.
Другие рекомендации требуют настройки параметров для эффективности. Например, образы контейнеров следует развертывать только из доверенных реестров; это требует определения списка таких реестров.
Если необходимые параметры не настроены, ресурсы отображаются как неработоспособные.
Чтобы настроить параметры политики, выполните следующие действия.
Войдите на портал Azure.
Перейдите к Microsoft Defender для облака>параметрам среды.
Выберите соответствующую подписку.
Выберите политики безопасности.
На вкладке "Стандарты" выберите соответствующий стандарт безопасности.
Выберите 3-пунктное меню соответствующего назначения политики и выберите пункт "Управление эффектом и параметрами".
Обновите необходимые значения параметров.
Нажмите Сохранить.
Принудительное применение политик защиты плоскости данных
По умолчанию политики оценивают ресурсы в режиме аудита. Чтобы применить политику, задайте для нее значение "Запретить".
Чтобы применить рекомендацию, выполните следующее:
Войдите на портал Azure.
Перейдите в Microsoft Defender для облака>Рекомендации.
Найдите и выберите соответствующую рекомендацию по обеспечению защиты плоскости данных.
На вкладке "Действие" нажмите кнопку "Запретить".
Задайте область.
Нажмите кнопку "Изменить", чтобы запретить.
Проверка применения политики
Политики защиты плоскости данных можно проверить, развернув тестовые рабочие нагрузки.
- Развертывание, соответствующее требованиям к укреплению защиты плоскости передачи данных
- Несоответствующее развертывание, которое нарушает несколько политик
Разверните в следующем примере файлы YAML, чтобы убедиться, что соответствующие рабочие нагрузки развертываются успешно, а несоответствующие рабочие нагрузки помечены или блокируются в зависимости от параметров применения политик.
Пример совместимого развертывания
Следующее развертывание использует доверенный реестр контейнеров, обеспечивает соблюдение ограничений CPU и памяти, а также ограничивающий контекст безопасности, который отключает эскалацию привилегий и запускается как некорневый пользователь.
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
Пример несоответствующего развертывания
Следующее развертывание намеренно нарушает несколько политик упрочнения плоскостей данных, включая запуск привилегированного контейнера в качестве root, включение сети и общих пространств имён, а также монтирование тома пути хоста.
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