Стадия жизненного цикла модуля: Experimental
У модуля есть требования для установки

v1.0.4

Дата релиза: 2026-08-18

Исправлен дедлок обновления: контроллер не мог опубликовать конфиг gateway, а Deployment gateway не мог раскатиться.

Ключевые изменения

Изменения в этом релизе:

  • Контроллер снова может публиковать конфиг Vector для gateway — его собственная валидация никогда не могла завершиться на реальных кластерах.
  • Deployment gateway теперь раскатывается на кластерах, где системных узлов столько же, сколько реплик, а не застревает на поде в Pending.
  • Назначение с нерезолвящимся credential больше не роняет весь конфиг gateway.
  • Метрики reloader’а переименованы, чтобы не пересекаться с метриками log-shipper.

Улучшения

В этом релизе улучшено:

  • Новый параметр controller.vectorValidateTimeout (по умолчанию 60s) — таймаут запуска vector validate, который контроллер выполняет перед публикацией конфига gateway.
  • Новые алерты: D8SecurityEventsManagerControllerConfigNotPublished, D8SecurityEventsManagerDestinationCredentialMissing и D8SecurityEventsManagerControllerValidateUnavailable. Раньше контроллер мог сколь угодно долго не публиковать конфиг, и ни один алерт при этом не срабатывал.

Исправления

В этом релизе исправлено:

  • Контроллер больше не замораживает опубликованный конфиг gateway. Его шаг vector validate выполнялся с таймаутом 10s в контейнере с лимитом 64Mi и погибал либо по дедлайну, либо от OOM, а сбой трактовался как вердикт «конфиг невалиден» — из-за чего Secret навсегда оставался на прежней ревизии. Теперь валидация запускается с --no-environment (около 2 секунд вместо 5 на конфиге в 256 КБ, без построения топологии и походов по сети), пол по памяти контейнера — 192Mi, таймаут по умолчанию — 60s, а невозможность выполнить проверку больше не блокирует публикацию: конфиг в любом случае валидирует reloader в gateway.
  • Deployment gateway использует maxSurge: 0 / maxUnavailable: 1. При стандартном surge обновление gateway с двумя репликами запрашивало третий под, а обязательная anti-affinity по узлу оставляла его в Pending навсегда на кластере с двумя системными узлами: модуль рапортовал Deployed, продолжая работать на предыдущем образе.
  • ClusterSecurityEventDestination, объявивший credential, который контроллер не смог зарезолвить, теперь блокирует публикацию и сообщает конкретное назначение и поле, вместо того чтобы отдать блок auth без токена. Vector такой блок не принимает, из-за чего весь конфиг gateway переставал загружаться и доставка прекращалась во все назначения сразу, а не только в проблемное. Покрыты Loki, Elasticsearch, Splunk HEC и Kafka SASL.
  • auth.strategy: None (значение по умолчанию в CRD) больше не попадает в сгенерированный конфиг как {"strategy": "none"}, которое Vector не принимает.
  • У Deployment контроллера появился nodeSelector на system-узлы; раньше его не было вовсе, и контроллер мог уехать на worker-узел.
  • CI-тест валидации Vector проверяет тот defaults.json, который реально едет в образе gateway, а не написанный вручную аналог.

Несовместимые изменения

Изменения, влияющие на обратную совместимость:

  • Метрики reloader’а переименованы с префиксом security_events_manager_gateway_: vector_config_validation_error, vector_config_apply_failures_total, vector_config_periodic_retry_attempts_total, vector_config_reloads_success_total, vector_config_last_reload_success_timestamp_seconds, reloader_validate_duration_seconds, reloader_validate_timeout_seconds, reloader_apply_duration_seconds, reloader_vector_restarts_total, reloader_fsnotify_events_total. Старые имена совпадали с метриками vector-reloader из log-shipper, чьи правила не фильтруют по namespace, поэтому проблемы этого модуля поднимали алерт D8LogShipperConfigInvalid. Правила, дашборды и документация модуля обновлены; собственные recording-правила, алерты и панели на старых именах нужно поправить.
  • Переменная окружения CONTROLLER_VECTOR_VALIDATE_SKIP_ABOVE_BYTES удалена. Её порог в 256 КиБ находился чуть выше реального размера конфига, из-за чего валидация могла пропускаться случайно, а не намеренно; случай, ради которого она вводилась, теперь покрыт поведением fail-open.
  • В версии v1.0.3 значение minimalSeverity по умолчанию сменилось с Medium на Low без записи в release notes. Кластеры, обновляющиеся с v1.0.0 и ранее, отправляют заметно больше событий, что накладывается на дисковые буферы по умолчанию, появившиеся в той же версии. Если нужен прежний объём, задайте значение явно.

Рекомендации по обновлению

Перед обновлением учтите следующее:

  • Пол по памяти контейнера контроллера поднимается с 64Mi до 192Mi (потолок VPA — с 256Mi до 512Mi). Столько нужно vector validate, чтобы отработать вообще; ниже контейнер убивает OOM прямо посреди валидации.

v1.0.3

Дата релиза: 2026-08-17

Настройка буферов gateway, плагины обогащения, SecretRef для назначений, CEF/Socket sink и усиление безопасности API Vector и RBAC контроллера.

Ключевые изменения

Изменения в этом релизе:

  • Настраиваемые Disk-буферы для слоёв gateway и log-shipper, с переопределением на назначение.
  • Плагины обогащения (k8s-pod-info, k8s-container-info, k8s-nodeuser-info) через ClusterSecurityEventEnrichmentPlugin.
  • Учётные данные назначений можно брать из Secret вместо открытого текста в CR.
  • Кодирование CEF и назначения Socket для интеграции с SIEM.
  • API gateway на loopback; ужесточены RBAC для Secret и проверка SSRF для enrichment endpoint.

Новый функционал

В этом релизе добавлено:

  • Параметры буфера gateway.buffer и gateway.logShipperBuffer в значениях модуля; переопределение через spec.buffer в ClusterSecurityEventDestination; по умолчанию Disk + Block; maxSize — Kubernetes quantity с суффиксом единицы (например 512Mi).
  • Событие K8S_ADMISSION_POLICY_DENIED для отказов admission-policy-engine в audit-логе Kubernetes.
  • CRD ClusterSecurityEventEnrichmentPlugin для встроенных Internal enrichment-плагинов сайдкара enrichment-cache (External в схеме есть, в контроллере пока нет).
  • Плагины обогащения k8s-pod-info, k8s-container-info и k8s-nodeuser-info.
  • Поля tokenSecretRef и passwordSecretRef в ClusterSecurityEventDestination для Loki, Elasticsearch, Kafka SASL и Splunk HEC; встроенный cluster-loki хранит токен в Secret.
  • Кодирование CEF для Kafka, Vector, File и Console (encoding.codec: CEF), опциональная syslog-обёртка и метаданные CEF через spec.cef / значения модуля.
  • Тип назначения Socket (TCP/UDP/Unix) для CEF-over-syslog в SIEM.

Исправления

В этом релизе исправлено:

  • Исправлен алерт D8SecurityEventsManagerControllerReconcileErrorsHigh.
  • Параметр gateway.reloaderValidateTimeout задаёт таймаут vector validate (по умолчанию 120s).
  • TLS Secret в d8-log-shipper удаляются вместе с SecurityEventDefinition.
  • Ошибки разрешения credential Secret пишутся в warning с путём поля.
  • Watcher credential Secret фильтрует по лейблу security-events-manager.deckhouse.io/credential-secret: true.
  • Reloader SaveTo() пишет конфиг Vector с правами 0600.
  • resolveDestinationSecretRefs() возвращает глубокую копию объекта CSED.
  • Lua extractJSON возвращает nil и пишет ошибку, если cjson недоступен.
  • В комментарии enrichment-cache исправлен порт (9260 → 9261).
  • E2E-триггеры для K8S_CLUSTERROLEBINDING_DELETED и K8S_CONFIGMAP_MODIFIED создают тестовый namespace и учитывают 404 при удалении CRB.
  • Ресурсы контроллера получают лейбл heritage: deckhouse.

Обновления безопасности

Обновления безопасности в этом релизе:

  • Устранены CVE в образах модуля.
  • API gateway Vector слушает только 127.0.0.1:8686; порт 8686 убран из Service.
  • Приватный ключ mTLS-клиента хранится в Secret в d8-log-shipper, а не в ClusterLogDestination.
  • RBAC Secret ограничен неймспейсами d8-security-events-manager и d8-log-shipper.
  • CEL блокирует SSRF для spec.endpoint.url в ClusterSecurityEventEnrichmentPlugin.
  • Secret gateway-vector-config помечен security.deckhouse.io/contains-credentials: true.

Несовместимые изменения

Изменения, влияющие на обратную совместимость:

  • Форма enrich в shipper: plugin — свободная строка; args — упорядоченный массив {key,value}; имена плагинов с дефисами (k8s-pod-info). Старые CR с прежней формой не парсятся; Plugin-обогащение раньше не работало.
  • spec.splunkHEC.token необязателен при заданном tokenSecretRef.
  • CEL запрещает одновременное использование inline token/password и соответствующих *SecretRef в ClusterSecurityEventDestination.

v1.0.0

Дата релиза: 2026-06-26

Первичный релиз модуля security-events-manager.

Ключевые изменения

Изменения в этом релизе:

  • Первый публичный релиз модуля.