Усиление защиты и безопасности для плоскости данных Kubernetes
На этой странице объясняется, как использовать набор рекомендаций по безопасности Microsoft Defender для облака, посвященных усилению защиты плоскости данных Kubernetes.
Совет
Список рекомендаций по безопасности, которые могут отображаться для кластеров и узлов Kubernetes, просмотритерекомендации по контейнерам.
Настройка защиты рабочих нагрузок
Microsoft Defender для облака включает пакет рекомендаций, доступных после установки Политика Azure для Kubernetes.
Необходимые компоненты
- Добавьте правила требования полного доменного имени или приложений для политики Azure.
- Для кластеров, не связанных с AKS: подключите существующий кластер Kubernetes к Azure Arc.
Включение усиления защиты для плоскости данных Kubernetes
Вы можете включить Политика Azure для Kubernetes одним из двух способов:
- Включение для всех текущих и будущих кластеров с помощью параметров плана или соединителя
- Развертывание Политика Azure для Kubernetes в существующих кластерах
Включение Политика Azure для Kubernetes для всех текущих и будущих кластеров с помощью параметров плана или соединителя
Примечание.
Если этот параметр включен, в кластере устанавливаются модули pod Политики Azure для Kubernetes . Это позволяет выделить небольшое количество ЦП и памяти для используемых модулей pod. Это выделение может достичь максимальной емкости, но это не влияет на остальную часть ЦП и памяти ресурса.
Примечание.
Включение для AWS через соединитель не поддерживается из-за ограничения в EKS, которое требует, чтобы администратор кластера добавил разрешения для новой роли IAM в самом кластере.
Включение подписок Azure или локальной среды
При включении Microsoft Defender для контейнеров параметр "Политика Azure для Kubernetes" включен по умолчанию для Служба Azure Kubernetes и для кластеров Kubernetes с поддержкой Azure Arc в соответствующей подписке. Если параметр отключен при начальной конфигурации, его можно включить вручную.
Если вы отключили параметры "Политика Azure для Kubernetes" в плане контейнеров, выполните следующие действия, чтобы включить его во всех кластерах в подписке:
Войдите на портал Azure.
Перейдите к разделу Microsoft Defender для облака>Параметры среды.
Выберите соответствующую подписку.
На странице планов Defender убедитесь, что для контейнеров переключатель установлен в положение Вкл.
Выберите Параметры.
На странице "Параметры и мониторинг" переключите значение "Политика 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 в указанных кластерах:
На странице рекомендаций найдите соответствующую рекомендацию:
Лазурный-
"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"
.Совет
Рекомендация включена в различные элементы управления безопасностью, и она не имеет значения, выбранного на следующем шаге.
Выберите рекомендацию в любом из элементов управления безопасностью, чтобы просмотреть ресурсы, на которые можно установить надстройку.
Выберите соответствующий кластер и нажмите кнопку "Исправить".
Просмотр и настройка пакета рекомендаций
Примерно через 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 |
Для рекомендаций с параметрами, которые необходимо настроить, необходимо задать параметры:
Чтобы задать параметры:
Войдите на портал Azure.
Перейдите к разделу Microsoft Defender для облака>Параметры среды.
Выберите соответствующую подписку.
В меню Defender для облака выберите Политика безопасности.
Выберите соответствующее назначение. Назначение по умолчанию —
ASC default
.Откройте вкладку Параметры и при необходимости измените значения.
Выберите "Рецензирование и сохранение".
Выберите Сохранить.
Чтобы принудительно какую-либо рекомендацию:
Откройте страницу сведений о рекомендации и выберите Отклонить:
Откроется панель, чтобы задать область.
Задайте область и выберите "Изменить", чтобы запретить.
Чтобы узнать, какие рекомендации применяются к вашим кластерам::
Откройте страницу инвентаризации активов Defender для облака и задайте фильтр типа ресурса службам Kubernetes.
Выберите кластер для изучения и просмотрите доступные для него рекомендации.
При просмотре рекомендации из набора защиты рабочей нагрузки количество затронутых модулей pod ("компоненты Kubernetes") отображается вместе с кластером. Чтобы получить список конкретных модулей pod, выберите кластер, а затем нажмите Выполнить действие.
Чтобы протестировать принудительное применение, используйте два развертывания 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.
Материалы, относящиеся к теме, см. в следующих статьях.