Gatekeeper#
Gatekeeper - это инструмент для управления политиками в Kubernetes, основанный на движке Open Policy Agent (OPA). Он позволяет централизованно управлять и применять политики безопасности и конфигурации на уровне всего кластера.
Основные задачи и возможности
Проверка запросов к API Kubernetes:
Gatekeeper выступает в роли validating admission webhook, перехватывая запросы на создание или обновление ресурсов и проверяя их на соответствие заданным политикам.
Управление политиками через ограничения (Constraints):
Политики определяются с помощью Constraints — это правила, которые описывают, какие действия разрешены или запрещены при развертывании ресурсов в кластере.
Интеграция с Open Policy Agent (OPA):
Gatekeeper использует OPA как движок для оценки политик, что позволяет писать гибкие и высокоэффективные правила на языке Rego.
Контроль соответствия (Compliance):
Позволяет не только блокировать нежелательные изменения, но и отслеживать состояние кластера в целом, выявляя отклонения от заданных политик.
Поддержка Kubernetes-нативного подхода:
Gatekeeper является проектом, активно поддерживаемым сообществом Kubernetes, и предназначен для простой интеграции в экосистему Kubernetes.
Гибкость и расширяемость:
Поддерживает как стандартные политики, так и пользовательские, что делает его универсальным решением для обеспечения безопасности и соблюдения стандартов в кластере.
Примечание
Gatekeeper в стандартной версии DropApp является единственным инструментом в компоненте Security и устанавливается по умолчанию с установкой компонента. Также, по умолчанию DropApp предоставляет несколько встроенных, реализованных constraints, которые изначально выключены, но могу быть включены через инструмент Gatekeeper → spec.values
Встроенные Constraints в DropApp#
constraints:
# Список разрешенных реестров образов
K8sAllowedRepos:
enabled: false
repos:
- '{{ .Values.global.image.registry }}'
# Образы контейнеров должны быть указаны с sha256
K8sImageDigests:
enabled: false
excludedNamespaces:
- "kube-system"
- "dapp-logging"
- "dapp-system"
- "dapp-auth"
- "dapp-ui"
- "dapp-monitoring"
- "dapp-lb"
- "dapp-security"
- "dapp-alerting"
- "dapp-certs"
- "dapp-ingress"
- "dapp-storage"
- "dapp-gitops"
- "dapp-devops"
# Ограничение типов монтируемых томов
K8sPSPVolumeTypes:
enabled: false
excludedNamespaces:
- "kube-system"
- "dapp-logging"
- "dapp-system"
- "dapp-auth"
- "dapp-ui"
- "dapp-monitoring"
- "dapp-lb"
- "dapp-security"
- "dapp-alerting"
- "dapp-gitops"
- "dapp-devops"
- "dapp-certs"
- "dapp-ingress"
- "dapp-storage"
- "dapp-gitops"
- "dapp-devops"
volumes:
- configMap
- emptyDir
- projected
- secret
- downwardAPI
- persistentVolumeClaim
- flexVolume #required for allowedFlexVolumes
K8sContainerLimits:
enabled: false
excludedNamespaces:
- "kube-system"
- "dapp-logging"
- "dapp-system"
- "dapp-auth"
- "dapp-ui"
- "dapp-monitoring"
- "dapp-lb"
- "dapp-security"
- "dapp-alerting"
- "dapp-certs"
- "dapp-ingress"
- "dapp-storage"
- "dapp-gitops"
- "dapp-devops"
parameters:
cpu: "8"
memory: "16Gi"
ReadOnlyRootFileSystem:
enabled: false
namespaces:
- default
- applications
Конфигурация values#
Значения можно переопределить через редактирование инструмента с именем gatekeeper и указанием нужных values в spec.values. Общее описание конфигурации values для инструментов описано в разделе «Конфигурации инструментов дополнительных компонентов».
global - глобальные настройки для всех компонентов Gatekeeper#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включить логирование статистики аудита |
|
|
Включить логирование статистики admission webhook |
|
|
Количество реплик для основных компонентов |
|
|
Лимит истории ревизий развертывания |
|
|
Интервал между аудитами в секундах |
|
|
Бэкенды для метрик |
|
|
Аудитировать только соответствующие типы ресурсов |
|
|
Максимальное количество нарушений для логирования |
|
|
Выполнять аудит из кеша |
|
|
Отключить функцию аудита |
|
|
Отключить мутирующие webhook |
|
|
Отключить валидирующий webhook |
|
|
Имя конфигурации валидирующего webhook |
|
|
Время ожидания валидирующего webhook |
|
|
Политика обработки сбоев валидирующего webhook |
|
|
Аннотации для валидирующего webhook |
|
|
Метки для исключения namespaces |
|
|
Селектор объектов для валидирующего webhook |
|
|
Условия соответствия для валидирующего webhook |
|
|
Политика игнорирования сбоев проверок |
|
|
Пользовательские правила для валидирующего webhook |
|
|
URL для валидирующего webhook |
|
|
Включить операции удаления |
|
|
Включить операции подключения |
|
|
Включить поддержку внешних данных |
|
|
Включить расширение ресурсов генератора |
|
|
Включить TLS-проверки здоровья |
|
|
Максимальное количество потоков обслуживания |
|
|
Имя конфигурации мутирующего webhook |
|
|
Политика обработки сбоев мутирующего webhook |
|
|
Политика повторного вызова мутирующего webhook |
|
|
Аннотации для мутирующего webhook |
|
|
Метки для исключения namespaces |
|
|
Селектор объектов для мутирующего webhook |
|
|
Условия соответствия для мутирующего webhook |
|
|
Время ожидания мутирующего webhook |
|
|
Пользовательские правила для мутирующего webhook |
|
|
URL для мутирующего webhook |
|
|
Включить аннотации мутаций |
|
|
Размер chunk для аудита |
|
|
Уровень логирования |
|
|
Логировать отклоненные запросы |
|
|
Логировать мутации |
|
|
События admission в соответствующем namespace |
|
|
События аудита в соответствующем namespace |
|
|
Включить поддержку квот ресурсов |
|
|
TTL кеша ответов провайдера внешних данных |
|
|
Включить нативную валидацию Kubernetes |
|
image - настройки образов контейнеров#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Репозиторий основного образа Gatekeeper |
|
|
Репозиторий образа CRD |
|
|
Версия релиза Gatekeeper |
|
|
Политика загрузки образа |
|
|
Секреты для загрузки образов |
|
preInstall - настройки pre-install хуков#
Параметр |
Описание и возможные значения |
Значение по умолчанию |
|---|---|---|
|
Репозиторий образа для CRD |
|
|
Тег образа для CRD |
|
postUpgrade - настройки post-upgrade хуков#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Имя сервисного аккаунта для обновления меток |
|
|
Создать сервисный аккаунт |
|
|
Включить обновление меток namespaces |
|
|
Репозиторий образа |
|
|
Тег образа |
|
|
Политика загрузки образа |
|
|
Секреты для загрузки образов |
|
|
Дополнительные namespaces |
|
|
Настройки безопасности под |
|
|
Дополнительные аннотации |
|
|
Класс приоритета pod |
|
|
Настройки |
|
|
Tolerations для размещения pod |
|
|
Селектор узлов |
|
|
Ресурсные требования |
|
|
Разрешить эскалацию привилегий |
|
|
Сбрасываемые capabilities |
|
|
Файловая система только для чтения |
|
|
ID группы для запуска |
|
|
Запуск от имени не-root пользователя |
|
|
ID пользователя для запуска |
|
postInstall - настройки post-install хуков#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Имя сервисного аккаунта |
|
|
Создать сервисный аккаунт |
|
|
Включить обновление меток namespaces |
|
|
Дополнительные RBAC-правила |
|
|
Репозиторий образа |
|
|
Тег образа |
|
|
Политика загрузки образа |
|
|
Секреты для загрузки образов |
|
|
Дополнительные namespaces |
|
|
Настройки безопасности pod |
|
|
Дополнительные аннотации |
|
|
Класс приоритета pod |
|
probeWebhook - настройки проверки webhook#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включить проверку webhook |
|
|
Реестр образа для проверки |
|
|
Репозиторий образа curl |
|
|
Тег образа curl |
|
|
Политика загрузки образа |
|
|
Секреты для загрузки образов |
|
|
Время ожидания ожидания в секундах |
|
|
HTTP-тайм-аут в секундах |
|
|
Разрешить небезопасные HTTPS соединения |
|
|
Класс приоритета pod |
|
|
Настройки affinity |
|
|
Tolerations для размещения pod |
|
|
Селектор узлов |
|
|
Разрешить эскалацию привилегий |
|
|
Сбрасываемые capabilities |
|
|
Файловая система только для чтения |
|
|
ID группы для запуска |
|
|
Запуск от имени не-root пользователя |
|
|
ID пользователя для запуска |
|
preUninstall - настройки pre-uninstall хуков#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Имя сервисного аккаунта |
|
|
Создать сервисный аккаунт |
|
|
Дополнительные RBAC-правила |
|
|
Включить удаление конфигураций webhook |
|
|
Репозиторий образа |
|
|
Тег образа |
|
|
Политика загрузки образа |
|
|
Секреты для загрузки образов |
|
|
Класс приоритета pod |
|
|
Настройки affinity |
|
|
Tolerations для размещения pod |
|
|
Селектор узлов |
|
|
Ресурсные требования |
|
|
Разрешить эскалацию привилегий |
|
|
Сбрасываемые capabilities |
|
|
Файловая система только для чтения |
|
|
ID группы для запуска |
|
|
Запуск от имени не-root пользователя |
|
|
ID пользователя для запуска |
|
podAnnotations - аннотации для pod#
Параметр |
Описание и возможные значения |
Значение по умолчанию |
|---|---|---|
|
Аннотации для всех pod Gatekeeper |
|
auditPodAnnotations - аннотации для pod аудита#
Параметр |
Описание и возможные значения |
Значение по умолчанию |
|---|---|---|
|
Аннотации для pod аудита |
|
podLabels - метки для pod#
Параметр |
Описание и возможные значения |
Значение по умолчанию |
|---|---|---|
|
Метки для всех pod Gatekeeper |
|
podCountLimit - лимит количества pod#
Параметр |
Описание и возможные значения |
Значение по умолчанию |
|---|---|---|
|
Максимальное количество pod |
|
secretAnnotations - аннотации для секретов#
Параметр |
Описание и возможные значения |
Значение по умолчанию |
|---|---|---|
|
Аннотации для секретов Gatekeeper |
|
enableRuntimeDefaultSeccompProfile - профиль seccomp по умолчанию#
Параметр |
Описание и возможные значения |
Значение по умолчанию |
|---|---|---|
|
Включить профиль |
|
controllerManager - настройки менеджера контроллера#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Имя сервисного аккаунта менеджера контроллера |
|
|
Исключенные namespaces |
|
|
Исключенные префиксы namespaces |
|
|
Использовать сеть хоста |
|
|
Политика DNS |
|
|
Порт webhook сервера |
|
c |
Порт для метрик |
|
|
Включить метрики |
|
|
Порт для проверок здоровья |
|
|
Время ожидания readiness проверок |
|
|
Время ожидания liveness проверок |
|
|
Класс приоритета pod |
|
|
Отключить ротацию сертификатов |
|
|
Минимальная версия TLS |
|
|
Имя клиентского сертификата |
|
|
Тип стратегии развертывания |
|
|
Настройки rolling update |
|
|
Метки для pod менеджера контроллера |
|
|
Ключ для anti-affinity |
|
|
Оператор для anti-affinity |
|
|
Значения для anti-affinity |
|
|
Ключ топологии для anti-affinity |
|
|
Вес для anti-affinity |
|
|
Ограничения распределения топологии |
|
|
Tolerations для размещения pod |
|
|
Селектор узлов |
|
|
Лимит CPU |
|
|
Лимит памяти |
|
|
Запрос CPU |
|
|
Запрос памяти |
|
|
Разрешить эскалацию привилегий |
|
|
Сбрасываемые capabilities |
|
|
Файловая система только для чтения |
|
|
ID группы для запуска |
|
|
Запуск от имени не-root пользователя |
|
|
ID пользователя для запуска |
|
|
Группа файловой системы |
|
|
Дополнительные группы |
|
|
Дополнительные RBAC-правила |
|
|
Включить сетевые политики |
|
|
Правила входящего трафика |
|
audit - настройки компонента аудита#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Имя сервисного аккаунта аудита |
|
|
Использовать сеть хоста |
|
|
Политика DNS |
|
|
Порт для метрик |
|
|
Включить метрики аудита |
|
|
Порт для проверок здоровья |
|
|
Время ожидания readiness проверок |
|
|
Время ожидания liveness проверок |
|
|
Класс приоритета pod |
|
|
Отключить ротацию сертификатов |
|
|
Метки для pod аудита |
|
|
Настройки affinity |
|
|
Tolerations для размещения pod |
|
|
Селектор узлов |
|
|
Лимит CPU |
|
|
Лимит памяти |
|
|
Запрос CPU |
|
|
Запрос памяти |
|
|
Разрешить эскалацию привилегий |
|
|
Сбрасываемые capabilities |
|
|
Файловая система только для чтения |
|
|
ID группы для запуска |
|
|
Запуск от имени не-root пользователя |
|
|
ID пользователя для запуска |
|
|
Группа файловой системы |
|
|
Дополнительные группы |
|
|
Записывать данные на RAM-диск |
|
|
Дополнительные RBAC-правила |
|
crds - настройки Custom Resource Definitions#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Настройки affinity |
|
|
Tolerations для размещения pod |
|
|
Селектор узлов |
|
|
Ресурсные требования |
|
|
Разрешить эскалацию привилегий |
|
|
Сбрасываемые capabilities |
|
|
Файловая система только для чтения |
|
|
ID группы для запуска |
|
|
Запуск от имени не-root пользователя |
|
|
ID пользователя для запуска |
|
pdb - настройки Pod Disruption Budget#
Параметр |
Описание и возможные значения |
Значение по умолчанию |
|---|---|---|
|
Минимальное количество доступных pod менеджера контроллера |
|
service - настройки сервисов#
Параметр |
Описание и возможные значения |
Значение по умолчанию |
|---|---|---|
|
Настройки сервисов Kubernetes |
|
disabledBuiltins - отключенные встроенные функции OPA#
Параметр |
Описание и возможные значения |
Значение по умолчанию |
|---|---|---|
|
Список отключенных встроенных функций OPA |
|
psp - настройки Pod Security Policies#
Параметр |
Описание и возможные значения |
Значение по умолчанию |
|---|---|---|
|
Включить Pod Security Policies |
|
upgradeCRDs - настройки обновления CRD#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Создать сервисный аккаунт для обновления CRD |
|
|
Имя сервисного аккаунта для обновления CRD |
|
|
Включить обновление CRD |
|
|
Дополнительные RBAC-правила |
|
|
Класс приоритета pod |
|
rbac - настройки RBAC#
Параметр |
Описание и возможные значения |
Значение по умолчанию |
|---|---|---|
|
Создать RBAC ресурсы |
|
externalCertInjection - внешнее внедрение сертификатов#
Параметр |
Описание и возможные значения |
Значение по умолчанию |
|---|---|---|
|
Включить внешнее внедрение сертификатов |
|
|
Имя секрета с сертификатом |
|
serviceAccount - настройки сервисных аккаунтов#
Параметр |
Описание и возможные значения |
Значение по умолчанию |
|---|---|---|
|
Создать сервисный аккаунт администратора Gatekeeper |
|
constraints - предустановленные политики безопасности#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Namespaces для применения политики |
|
|
Включить требование read-only корневой файловой системы |
|
|
Разрешенные типы томов |
|
|
Исключенные namespaces |
|
|
Включить ограничение типов монтируемых томов |
|
|
Исключенные namespaces |
|
|
Включить требование SHA256 для образов контейнеров |
|
|
Максимальный лимит памяти |
|
|
Максимальный лимит CPU |
|
|
Исключенные namespaces |
|
|
Включить лимиты ресурсов контейнеров |
|
|
Список разрешенных реестров образов |
|
|
Включить политику разрешенных реестров образов |
|