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

У модуля есть требования для установки

Перед включением модуля необходимо разрешить использование экспериментальных модулей в ModuleConfig deckhouse. Для этого установите параметр allowExperimentalModules в true.

Deckhouse Platform устанавливает CRD, но не удаляет их при отключении модуля. Если вам больше не нужны созданные CRD, удалите их.

ClusterSecurityEventAlertRule

Короткие имена: csear

Область: Cluster
Версия: v1alpha1

  • spec
    объект

    Превращает закономерность в событиях безопасности в алерт Prometheus.

    Правило ищет закономерность в собранных событиях безопасности, например «один инициатор прочитал больше 20 секретов за 5 минут», и вызывает именованный алерт, как только закономерность обнаружена. Закономерность описывается запросом LogQL и вычисляется относительно Loki кластера, поэтому для работы любого правила должен быть включён destination cluster-loki.

    Правила объединяются в группы. На вычисление группа не влияет: каждое правило вычисляется само по себе, независимо от остальных правил своей группы.

    Сработавшее правило вызывает алерт D8SecurityEventAlertFiring, который доходит до оператора так же, как любой другой кластерный алерт: объектом ClusterAlert, в консоли и через штатную доставку алертов кластера. Доставку настраивать не требуется.

    Структура повторяет PrometheusRule: именованные группы, у каждой параметр interval и список правил с полями alert, expr, for, labels и annotations. Отличие в том, что expr записывается на LogQL, а не на PromQL.

    • spec.groups
      массив объектов

      Обязательный параметр

      Список групп правил.

      Группа состоит из имени и списка правил. На то, как и когда вычисляются её правила, группа не влияет и лишь держит связанные правила вместе. Та же структура, что и spec.groups у PrometheusRule.

      • spec.groups.interval
        строка

        Как часто каждое правило этой группы вычисляется по Loki.

        Цифры и s, m или h, например 30s. Значение по умолчанию — 30s.

        По умолчанию: 30s

        Шаблон: ^[0-9]+(s|m|h)$

      • spec.groups.name
        строка

        Имя группы.

        На вычисление не влияет и используется только в выводе d8 k get -o yaml и в логах, чтобы опознать группу.

        Длина: 1..253

      • spec.groups.rules
        массив объектов
        Правила алертинга в этой группе.
        • spec.groups.rules.aggregation
          объект

          Параметры подсчёта для правила.

          События группируются по groupBy, и алерт срабатывает, как только группа достигает threshold в пределах window. Окно скользящее: оно пересчитывается по сохранённым в Loki логам при каждом вычислении, а не хранится как состояние счётчика.

          Требует match, поскольку правило на основе expr выражает группировку и порог в самом запросе. Без aggregation правило на основе match срабатывает на каждое подходящее событие.

          • spec.groups.rules.aggregation.groupBy
            массив строк

            Обязательный параметр

            Поля события, определяющие группу.

            Значения этих полей становятся лейблами алерта, поэтому перечень допустимых полей ограничен атрибутами с низкой кардинальностью. Например, имя объекта в качестве ключа привело бы к отдельной группе на каждое событие, неограниченному росту потребления ресурсов и перегрузке приёмника уведомлений.

            • spec.groups.rules.aggregation.groupBy.Элемент массива
              строка

              Поле события для группировки.

              Каждое значение названо по полю, которое оно читает в LogQL:

              • EventCode читает event_code;
              • EventSeverity читает event_severity;
              • EventCategory читает event_category;
              • SourceComponent читает source_component;
              • ActorID читает actor_id;
              • ActorSourceIP читает actor_sourceIP;
              • ObjectNamespace читает object_namespace;
              • ObjectType читает object_type.

              Допустимые значения: EventCode, EventSeverity, EventCategory, SourceComponent, ActorID, ActorSourceIP, ObjectNamespace, ObjectType

          • spec.groups.rules.aggregation.threshold
            целое число

            Обязательный параметр

            Количество событий в группе, при котором срабатывает алерт.

            Чтобы алерт появлялся на каждое событие, используйте правило без блока aggregation.

            Допустимые значения: 2 <= X

          • spec.groups.rules.aggregation.window
            строка

            Обязательный параметр

            Интервал, в течение которого группа продолжает считать, прежде чем будет забыта.

            Цифры и s, m или h, например 5m. Выбирайте интервал, за который происходит описываемое поведение: минуты для перебора, часы для медленного обхода.

            Шаблон: ^[0-9]+(s|m|h)$

        • spec.groups.rules.alert
          строка

          Короткое имя того, что обнаруживает правило, например MassSecretAccess.

          Имя опознаёт правило в лейбле alert производимой метрики, в логах и в статусе самого правила. Аналог поля alert у PrometheusRule.

          Максимальная длина: 253

          Шаблон: ^[A-Za-z][A-Za-z0-9_]*$

        • spec.groups.rules.annotations
          объект

          Текст, показываемый рядом с алертом после срабатывания.

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

          Значение может цитировать данные, вызвавшие срабатывание, так же, как Prometheus шаблонизирует аннотации у PrometheusRule. Используйте {{ $labels.<ИМЯ> }} для одного из лейблов, по которым группировал expr, и {{ $value }} для числа, которое произвёл expr, например {{ $labels.actor_id }} read secrets {{ $value }} times.

          Отрендеренный текст передаётся лейблом firing-метрики, поэтому каждое новое значение становится отдельной серией в Prometheus на весь период хранения. В правиле, где счётчик меняется при каждом вычислении, {{ $value }} добавляет серию за интервал. Предпочитайте {{ $labels.<ИМЯ> }}: он остаётся стабильным, пока существует группа.

          • spec.groups.rules.annotations.description
            строка

            Подробное описание, показываемое в аннотации description алерта.

            Укажите, что и где проверить, как это делается в рантбуке.

            Максимальная длина: 4096

          • spec.groups.rules.annotations.summary
            строка

            Обязательный параметр

            Краткое однострочное описание, показываемое в аннотации summary алерта, например Один инициатор прочитал необычно много секретов.

            Максимальная длина: 512

        • spec.groups.rules.expr
          строка

          LogQL-запрос, определяющий, срабатывает ли правило.

          У каждого правила задано ровно одно из полей expr и match. Используйте expr, когда структурированные поля match не выражают нужное условие.

          Запрос должен быть запросом метрики, то есть возвращать число, а не список строк лога, и включать само сравнение. Например:

          sum by (actor_id) (
            count_over_time({source_component="kube-audit",
                             event_code="K8S_SECRET_ACCESSED",
                             actor_id!=""} [5m])
          ) > 20

          Приведённый запрос состоит из следующих частей:

          • {source_component="kube-audit", ...} выбирает потоки логов, в которых идёт поиск;
          • count_over_time(...[5m]) считает подходящие строки за последние 5 минут;
          • sum by (actor_id) ведёт отдельный счётчик для каждого инициатора, а не суммирует события всех;
          • > 20 — само условие: правило срабатывает, как только счётчик любого инициатора превышает 20.

          Дальнейшая обработка числа не требуется: достижение заданного в запросе порога и есть срабатывание.

          Каждое поле, перечисленное в sum by (...) или в аналогичной агрегации, становится лейблом результирующего алерта. Держите этот список коротким и ограниченным полями с ограниченным набором значений, как описано в разделе об особенностях написания правил на странице примеров.

          Аналог поля expr у PrometheusRule, записанный на LogQL, а не на PromQL.

          Длина: 1..8192

        • spec.groups.rules.for
          строка

          Интервал, в течение которого expr должен непрерывно оставаться истинным, прежде чем правило сработает.

          Поле отсекает разовые всплески: с for: 5m всплеск, который длится пару минут и затем прекращается, не вызывает срабатывания правила.

          Цифры и s, m или h, например 5m. Значение по умолчанию — 0s: правило срабатывает на первом же совпадении expr, без периода ожидания.

          Семантика pending и firing та же, что и у поля for у PrometheusRule.

          По умолчанию: 0s

          Шаблон: ^[0-9]+(s|m|h)$

        • spec.groups.rules.labels
          объект

          Дополнительные лейблы алерта.

          Они добавляются к rule, alert, severity_level и полям, по которым группирует expr. Лейблы идентифицируют алерт: два алерта с одинаковыми лейблами — это один и тот же алерт.

        • spec.groups.rules.match
          объект

          События безопасности, к которым применяется правило.

          Критерии объединяются по И.

          У каждого правила задано ровно одно из полей expr и match. Поля match и aggregation компилируются в тот же LogQL-запрос, который мог бы быть записан в expr, то есть являются формой для составления такого запроса, а не отдельным путём вычисления. Используйте expr напрямую, когда правилу требуется поле, которое эта форма не покрывает, или фильтр строки более специфичный, чем точное совпадение или совпадение по маске.

          • spec.groups.rules.match.actorType
            строка

            Вид субъекта, до которого сужается правило.

            ServiceAccounts оставляет только инициаторов, совпадающих с system:serviceaccount:*. NonServiceAccounts оставляет всех остальных и применяется в правилах про людей и прочих внешних клиентов. Повторяет фильтр «Тип субъекта» в консоли.

            По умолчанию: Any

            Допустимые значения: Any, ServiceAccounts, NonServiceAccounts

          • spec.groups.rules.match.actors
            массив строк

            Инициаторы, события которых учитываются.

            Значения сравниваются с actor_id так же, как в excludeActors: * — любая последовательность символов, остальное трактуется буквально.

            Используйте это поле, чтобы следить за конкретным субъектом, например за ServiceAccount, который не должен менять секреты.

          • spec.groups.rules.match.categories
            массив строк
            Категории событий, как они объявлены в spec.category ресурса SecurityEventDefinition.
            • spec.groups.rules.match.categories.Элемент массива
              строка

              Допустимые значения: Auth, Config, Network, Rbac, Runtime

          • spec.groups.rules.match.eventCodes
            массив строк
            Коды событий, как они объявлены в SecurityEventDefinition.
            • spec.groups.rules.match.eventCodes.Элемент массива
              строка
              Например, K8S_SECRET_ACCESSED.

              Шаблон: ^[A-Z][A-Z0-9_]*$

          • spec.groups.rules.match.excludeActors
            массив строк

            Инициаторы, события которых правило игнорирует.

            Значения сравниваются с actor_id: * — любая последовательность символов, остальное трактуется буквально.

            Основную рутинную активность создают компоненты платформы. На простаивающем кластере один только ServiceAccount Deckhouse даёт тысячи чтений секретов в час, поэтому правило про людей и приложения должно их исключать. Типичный список:

            excludeActors:
              - "system:serviceaccount:d8-*"
              - "system:serviceaccount:kube-system:*"
              - "system:node:*"
              - "system:apiserver"
          • spec.groups.rules.match.excludeSystemActors
            булевый

            Игнорировать ли события, порождённые самой платформой.

            При штатной работе кластер непрерывно обращается к секретам, RBAC и подам. На простаивающем кластере один ServiceAccount Deckhouse дал 2617 из 2812 чтений секретов за час, и на этом фоне правило, касающееся людей и приложений, становится статистически незначимым.

            Список поддерживает модуль, и он совпадает с фильтром «Исключить системные» в консоли, поэтому интерфейс и правило убирают из поля зрения одни и те же события. Список покрывает actor_id, совпадающие с system:serviceaccount:kube-system:*, system:serviceaccount:d8-*, system:node:*, system:kube-*, system:apiserver и kubernetes-admin.

            Из потока событий ничего не удаляется: события по-прежнему собираются и доставляются и лишь перестают учитываться. События без инициатора сохраняются, а анонимные и неаутентифицированные личности системными инициаторами не считаются никогда, поскольку именно их правило безопасности и ищет.

            По умолчанию: true

          • spec.groups.rules.match.severityMin
            строка
            Минимальная критичность события (включительно).

            Допустимые значения: Low, Medium, High, Critical

          • spec.groups.rules.match.sources
            массив строк
            Компоненты-источники, как они объявлены в spec.source ресурса SecurityEventDefinition, например kube-audit.
        • spec.groups.rules.mode
          строка

          В какой из двух форм записано правило.

          Expr — условие задано запросом LogQL, написанным вручную в expr. Match — условие собрано из структурированных полей match, при необходимости с подсчётом через aggregation.

          Поле явно указывает то, что и так следует из наличия expr или match, и обязано с ним совпадать. Оно нужно, чтобы и читатель манифеста, и веб-интерфейс платформы понимали форму правила, не разбирая, какой блок заполнен: интерфейс показывает поля только выбранного режима, а вторую форму скрывает целиком.

          Допустимые значения: Expr, Match

        • spec.groups.rules.severityLevel
          целое число

          Уровень критичности DKP, отправляемый в лейбле severity_level.

          На кластерах с включённым параметром update.blockOnAlerts в модуле deckhouse алерт с уровнем не выше настроенного порога (по умолчанию 4) блокирует применение релизов DKP.

          По умолчанию: 6

          Допустимые значения: 0 <= X <= 9

  • status
    объект
    Current status of this resource.
    • status.conditions
      массив объектов
      Represents the latest available observations of an object’s state.
      • status.conditions.lastTransitionTime
        строка
      • status.conditions.message
        строка

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целое число
      • status.conditions.reason
        строка

        Длина: 1..1024

      • status.conditions.status
        строка

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка

        Максимальная длина: 316

    • status.observedGeneration
      целое число
      The generation observed by the controller.

ClusterSecurityEventConfig

Короткие имена: csec

Область: Cluster
Версия: v1alpha1

  • spec
    объект
    Определяет, какие источники включены и в какие назначения они отправляются.
    • spec.cef
      объект

      Метаданные CEF (Common Event Format) по умолчанию для назначений с кодированием CEF.

      Эти значения используются, когда у ClusterSecurityEventDestination параметр encoding.codec равен CEF, но не заданы собственные cef.deviceVendor, cef.deviceProduct и cef.deviceVersion.

      • spec.cef.deviceProduct
        строка
        Поле device product по умолчанию для заголовка CEF.

        По умолчанию: security-events-manager

      • spec.cef.deviceVendor
        строка
        Поле device vendor по умолчанию для заголовка CEF.

        По умолчанию: Deckhouse

      • spec.cef.deviceVersion
        строка
        Поле device version по умолчанию для заголовка CEF.

        По умолчанию: 1

    • spec.defaultSeverityThreshold
      строка

      Обязательный параметр

      Минимальная критичность для отправки (включительно).

      Допустимые значения: Low, Medium, High, Critical

    • spec.destinations
      массив строк

      Обязательный параметр

      Список имён ClusterSecurityEventDestination.
    • spec.enabledSources
      массив строк

      Включённые источники.

      Если параметр не задан, включены все источники. Каждый элемент записывается в одном из следующих форматов:

      • clusterSecurityEventShipper/<ИМЯ ШИППЕРА>/<ИСТОЧНИК>;
      • podSecurityEventShipper/<НЕЙМСПЕЙС>/<ИМЯ ШИППЕРА>/<ИСТОЧНИК>.
      • spec.enabledSources.Элемент массива
        строка

        Шаблон: ^(clusterSecurityEventShipper/[^/]+/[^/]+|podSecurityEventShipper/[^/]+/[^/]+/[^/]+)$

    • spec.enabledSourcesMasks
      массив строк

      Glob-маски включённых источников.

      Если параметр не задан, включены все источники. Символ * в маске соответствует любой подстроке, включая /. Параметры enabledSources и enabledSourcesMasks взаимно исключают друг друга.

      Каждая маска записывается в одном из следующих форматов:

      • clusterSecurityEventShipper/<ИМЯ ШИППЕРА>/<ИСТОЧНИК>;
      • podSecurityEventShipper/<НЕЙМСПЕЙС>/<ИМЯ ШИППЕРА>/<ИСТОЧНИК>.

      Например:

      enabledSourcesMasks:
        - podSecurityEventShipper/*
        - clusterSecurityEventShipper/kube-audit/*
      • spec.enabledSourcesMasks.Элемент массива
        строка

        Шаблон: ^(clusterSecurityEventShipper/.+|podSecurityEventShipper/.+)$

  • status
    объект
    Current status of this resource.
    • status.conditions
      массив объектов
      Represents the latest available observations of an object’s state.
      • status.conditions.lastTransitionTime
        строка
      • status.conditions.message
        строка

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целое число
      • status.conditions.reason
        строка

        Длина: 1..1024

      • status.conditions.status
        строка

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка

        Максимальная длина: 316

    • status.observedGeneration
      целое число
      The generation observed by the controller.

ClusterSecurityEventDestination

Короткие имена: csed

Область: Cluster
Версия: v1alpha1

  • spec
    объект

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

    Поля спроектированы так, чтобы транслироваться в deckhouse.io/log-shipper ClusterLogDestination.

    • spec.buffer
      объект

      Буфер для конкретного назначения gateway Vector sink.

      Переопределяет глобальные настройки gateway.buffer из значений модуля. Если не задано, используются глобальные настройки по умолчанию.

      • spec.buffer.maxEvents
        целое число

        Максимальное количество событий в буфере.

        Используется как вторичное ограничение для типа Memory. Игнорируется при type=Disk (дисковый буфер использует только maxSize).

        По умолчанию: 500

        Допустимые значения: 100 <= X

      • spec.buffer.maxSize
        строка

        Максимальный размер буфера в формате Kubernetes quantity с обязательным суффиксом единицы измерения например 512Mi, 1Gi или 256Mi.

        Числа без суффикса единицы измерения НЕ принимаются. Для Disk: максимальное дисковое пространство на томе. Для Memory: приблизительное ограничение памяти для кольцевого буфера.

        По умолчанию: 512Mi

        Шаблон: ^[0-9]+(\.[0-9]+)?(Ki|Mi|Gi|Ti|Pi|Ei|k|M|G|T|P|E)$

      • spec.buffer.type
        строка

        Тип буфера.

        Возможные значения:

        • Disk — дисковый буфер на LevelDB. Переживает перезапуск процесса Vector в поде. Используется по умолчанию и гарантирует отсутствие потерь событий при временной недоступности назначения.
        • Memory — буфер в оперативной памяти. Быстрее, но события из буфера теряются при рестарте процесса Vector. Используйте только для тестовых/dev-окружений.

        По умолчанию: Disk

        Допустимые значения: Memory, Disk

      • spec.buffer.whenFull
        строка

        Поведение при переполнении буфера.

        Возможные значения:

        • Block — применять обратное давление к источнику. Пайплайн замедляется, но события не теряются. По умолчанию рекомендуется для событий безопасности.
        • DropNewest — отбрасывать входящие события. Происходит потеря данных, но без обратного давления. Используйте только когда потеря данных допустима (тестовые окружения).

        По умолчанию: Block

        Допустимые значения: Block, DropNewest

    • spec.console
      объект
      • spec.console.encoding
        объект

        Формат кодирования событий, выводимых в консоль.

        По умолчанию JSON. Установите codec в CEF для вывода событий в формате Common Event Format.

        • spec.console.encoding.cef
          объект

          Поля конфигурации CEF.

          Применимо только при codec=CEF. Если не задано, используются значения по умолчанию: deviceVendor=Deckhouse, deviceProduct=security-events-manager, version=1.

          • spec.console.encoding.cef.deviceProduct
            строка
            Поле device product в заголовке CEF.

            По умолчанию: security-events-manager

          • spec.console.encoding.cef.deviceVendor
            строка
            Поле device vendor в заголовке CEF.

            По умолчанию: Deckhouse

          • spec.console.encoding.cef.deviceVersion
            строка
            Поле device version в заголовке CEF.

            По умолчанию: 1

        • spec.console.encoding.codec
          строка

          Кодек для назначения.

          Возможные значения:

          • JSON — структурированный JSON, используется по умолчанию и подходит для Loki, Elasticsearch и Kafka;
          • CEF — Common Event Format, подходит для интеграции с SIEM через Kafka, Vector, File и Console.

          По умолчанию: JSON

          Допустимые значения: JSON, CEF

        • spec.console.encoding.syslogWrapper
          строка

          Обёртка вывода CEF в syslog-заголовок.

          Применимо только при codec=CEF.

          Возможные значения:

          • None — отправлять CEF-строку без заголовка, используется по умолчанию;
          • RFC3164 — добавлять заголовок RFC 3164 (BSD syslog);
          • RFC5424 — добавлять заголовок RFC 5424 (IETF syslog).

          По умолчанию: None

          Допустимые значения: None, RFC3164, RFC5424

      • spec.console.target
        строка

        По умолчанию: Stdout

        Допустимые значения: Stdout, Stderr

    • spec.elasticsearch
      объект
      • spec.elasticsearch.auth
        объект
        • spec.elasticsearch.auth.password
          строка

          Пароль для Basic-аутентификации.

          Рекомендуется использовать passwordSecretRef вместо хранения секрета в спецификации CR.

        • spec.elasticsearch.auth.passwordSecretRef
          объект
          • spec.elasticsearch.auth.passwordSecretRef.name
            строка

            Обязательный параметр

            Имя секрета в неймспейсе d8-security-events-manager, содержащего учётные данные.

            Секрет должен содержать ключ value в поле data.

        • spec.elasticsearch.auth.strategy
          строка

          По умолчанию: None

          Допустимые значения: None, Bearer, Basic

        • spec.elasticsearch.auth.token
          строка

          Bearer-токен для аутентификации.

          Рекомендуется использовать tokenSecretRef вместо хранения секрета в спецификации CR.

        • spec.elasticsearch.auth.tokenSecretRef
          объект
          • spec.elasticsearch.auth.tokenSecretRef.name
            строка

            Обязательный параметр

            Имя секрета в неймспейсе d8-security-events-manager, содержащего учётные данные.

            Секрет должен содержать ключ value в поле data.

        • spec.elasticsearch.auth.username
          строка
      • spec.elasticsearch.endpoint
        строка

        Обязательный параметр

      • spec.elasticsearch.index
        строка
      • spec.elasticsearch.tls
        объект
        • spec.elasticsearch.tls.ca
          строка
          Base64-строка PEM (цепочка CA) для проверки сертификата сервера назначения.
        • spec.elasticsearch.tls.verifyCertificate
          булевый

          По умолчанию: true

        • spec.elasticsearch.tls.verifyHostname
          булевый

          По умолчанию: true

    • spec.file
      объект
      • spec.file.encoding
        объект

        Формат кодирования событий, записываемых в этот файл.

        По умолчанию JSON. Установите codec в CEF для записи событий в формате Common Event Format.

        • spec.file.encoding.cef
          объект

          Поля конфигурации CEF.

          Применимо только при codec=CEF. Если не задано, используются значения по умолчанию: deviceVendor=Deckhouse, deviceProduct=security-events-manager, version=1.

          • spec.file.encoding.cef.deviceProduct
            строка
            Поле device product в заголовке CEF.

            По умолчанию: security-events-manager

          • spec.file.encoding.cef.deviceVendor
            строка
            Поле device vendor в заголовке CEF.

            По умолчанию: Deckhouse

          • spec.file.encoding.cef.deviceVersion
            строка
            Поле device version в заголовке CEF.

            По умолчанию: 1

        • spec.file.encoding.codec
          строка

          Кодек для назначения.

          Возможные значения:

          • JSON — структурированный JSON, используется по умолчанию и подходит для Loki, Elasticsearch и Kafka;
          • CEF — Common Event Format, подходит для интеграции с SIEM через Kafka, Vector, File и Console.

          По умолчанию: JSON

          Допустимые значения: JSON, CEF

        • spec.file.encoding.syslogWrapper
          строка

          Обёртка вывода CEF в syslog-заголовок.

          Применимо только при codec=CEF.

          Возможные значения:

          • None — отправлять CEF-строку без заголовка, используется по умолчанию;
          • RFC3164 — добавлять заголовок RFC 3164 (BSD syslog);
          • RFC5424 — добавлять заголовок RFC 5424 (IETF syslog).

          По умолчанию: None

          Допустимые значения: None, RFC3164, RFC5424

      • spec.file.path
        строка

        Обязательный параметр

    • spec.http
      объект
      • spec.http.auth
        объект
        • spec.http.auth.password
          строка

          Пароль для Basic-аутентификации.

          Рекомендуется использовать passwordSecretRef вместо хранения секрета в спецификации CR.

        • spec.http.auth.passwordSecretRef
          объект
          • spec.http.auth.passwordSecretRef.name
            строка

            Обязательный параметр

            Имя секрета в неймспейсе d8-security-events-manager, содержащего учётные данные.

            Секрет должен содержать ключ value в поле data.

        • spec.http.auth.strategy
          строка

          По умолчанию: None

          Допустимые значения: None, Bearer, Basic

        • spec.http.auth.token
          строка

          Bearer-токен для аутентификации.

          Рекомендуется использовать tokenSecretRef вместо хранения секрета в спецификации CR.

        • spec.http.auth.tokenSecretRef
          объект
          • spec.http.auth.tokenSecretRef.name
            строка

            Обязательный параметр

            Имя секрета в неймспейсе d8-security-events-manager, содержащего учётные данные.

            Секрет должен содержать ключ value в поле data.

        • spec.http.auth.username
          строка
      • spec.http.endpoint
        строка

        Обязательный параметр

        Полный URL для отправки событий, включая путь, например https://collector.example.com/api/ingest.

        События всегда отправляются методом POST.

      • spec.http.framing
        строка

        Способ размещения набора событий в теле запроса.

        JSONArray оборачивает набор в один JSON-массив — так читают приёмники, ожидающие один документ на запрос. NewlineDelimited отправляет по одному JSON-объекту на строку (NDJSON), что подходит коллекторам, читающим поток записей.

        По умолчанию: JSONArray

        Допустимые значения: JSONArray, NewlineDelimited

      • spec.http.headers
        объект

        Дополнительные заголовки запроса.

        Заголовок Authorization задаётся через auth и здесь указываться не должен.

      • spec.http.tls
        объект
        • spec.http.tls.ca
          строка
          Base64-строка PEM (цепочка CA) для проверки сертификата сервера назначения.
        • spec.http.tls.verifyCertificate
          булевый

          По умолчанию: true

        • spec.http.tls.verifyHostname
          булевый

          По умолчанию: true

    • spec.kafka
      объект
      • spec.kafka.brokers
        массив строк

        Обязательный параметр

      • spec.kafka.encoding
        объект

        Формат кодирования событий, отправляемых в это назначение Kafka.

        По умолчанию JSON. Установите codec в CEF для отправки событий в формате Common Event Format (требуется CEF-совместимый SIEM на принимающей стороне).

        • spec.kafka.encoding.cef
          объект

          Поля конфигурации CEF.

          Применимо только при codec=CEF. Если не задано, используются значения по умолчанию: deviceVendor=Deckhouse, deviceProduct=security-events-manager, version=1.

          • spec.kafka.encoding.cef.deviceProduct
            строка
            Поле device product в заголовке CEF.

            По умолчанию: security-events-manager

          • spec.kafka.encoding.cef.deviceVendor
            строка
            Поле device vendor в заголовке CEF.

            По умолчанию: Deckhouse

          • spec.kafka.encoding.cef.deviceVersion
            строка
            Поле device version в заголовке CEF.

            По умолчанию: 1

        • spec.kafka.encoding.codec
          строка

          Кодек для назначения.

          Возможные значения:

          • JSON — структурированный JSON, используется по умолчанию и подходит для Loki, Elasticsearch и Kafka;
          • CEF — Common Event Format, подходит для интеграции с SIEM через Kafka, Vector, File и Console.

          По умолчанию: JSON

          Допустимые значения: JSON, CEF

        • spec.kafka.encoding.syslogWrapper
          строка

          Обёртка вывода CEF в syslog-заголовок.

          Применимо только при codec=CEF.

          Возможные значения:

          • None — отправлять CEF-строку без заголовка, используется по умолчанию;
          • RFC3164 — добавлять заголовок RFC 3164 (BSD syslog);
          • RFC5424 — добавлять заголовок RFC 5424 (IETF syslog).

          По умолчанию: None

          Допустимые значения: None, RFC3164, RFC5424

      • spec.kafka.sasl
        объект
        • spec.kafka.sasl.mechanism
          строка

          Допустимые значения: Plain, SCRAM-SHA-256, SCRAM-SHA-512

        • spec.kafka.sasl.password
          строка

          Пароль SASL.

          Рекомендуется использовать passwordSecretRef вместо хранения секрета в спецификации CR.

        • spec.kafka.sasl.passwordSecretRef
          объект
          • spec.kafka.sasl.passwordSecretRef.name
            строка

            Обязательный параметр

            Имя секрета в неймспейсе d8-security-events-manager, содержащего учётные данные.

            Секрет должен содержать ключ value в поле data.

        • spec.kafka.sasl.username
          строка
      • spec.kafka.tls
        объект
        • spec.kafka.tls.ca
          строка
          Base64-строка PEM (цепочка CA) для проверки сертификата сервера назначения.
        • spec.kafka.tls.verifyCertificate
          булевый

          По умолчанию: true

        • spec.kafka.tls.verifyHostname
          булевый

          По умолчанию: true

      • spec.kafka.topic
        строка

        Обязательный параметр

    • spec.loki
      объект
      • spec.loki.auth
        объект
        • spec.loki.auth.password
          строка

          Пароль для Basic-аутентификации.

          Рекомендуется использовать passwordSecretRef вместо хранения секрета в спецификации CR.

        • spec.loki.auth.passwordSecretRef
          объект
          • spec.loki.auth.passwordSecretRef.name
            строка

            Обязательный параметр

            Имя секрета в неймспейсе d8-security-events-manager, содержащего учётные данные.

            Секрет должен содержать ключ value в поле data.

        • spec.loki.auth.strategy
          строка

          По умолчанию: None

          Допустимые значения: None, Bearer, Basic

        • spec.loki.auth.token
          строка

          Bearer-токен для аутентификации.

          Рекомендуется использовать tokenSecretRef вместо хранения секрета в спецификации CR.

        • spec.loki.auth.tokenSecretRef
          объект
          • spec.loki.auth.tokenSecretRef.name
            строка

            Обязательный параметр

            Имя секрета в неймспейсе d8-security-events-manager, содержащего учётные данные.

            Секрет должен содержать ключ value в поле data.

        • spec.loki.auth.username
          строка
      • spec.loki.endpoint
        строка

        Обязательный параметр

      • spec.loki.tls
        объект
        • spec.loki.tls.ca
          строка
          Base64-строка PEM (цепочка CA) для проверки сертификата сервера назначения.
        • spec.loki.tls.verifyCertificate
          булевый

          По умолчанию: true

        • spec.loki.tls.verifyHostname
          булевый

          По умолчанию: true

    • spec.socket
      объект
      • spec.socket.address
        строка

        Обязательный параметр

        Адрес для подключения.

        Формат зависит от режима:

        • TCP — host:port, например siem.example.com:514;
        • UDP — host:port, например siem.example.com:514;
        • Unix — /path/to/socket, например /var/run/siem.sock.
      • spec.socket.encoding
        объект

        Формат кодирования событий, отправляемых в этот сокет.

        По умолчанию JSON. Установите codec в CEF для Common Event Format (основной use-case для syslog-интеграций с SIEM).

        • spec.socket.encoding.cef
          объект

          Поля конфигурации CEF.

          Применимо только при codec=CEF. Если не задано, используются значения по умолчанию: deviceVendor=Deckhouse, deviceProduct=security-events-manager, version=1.

          • spec.socket.encoding.cef.deviceProduct
            строка
            Поле device product в заголовке CEF.

            По умолчанию: security-events-manager

          • spec.socket.encoding.cef.deviceVendor
            строка
            Поле device vendor в заголовке CEF.

            По умолчанию: Deckhouse

          • spec.socket.encoding.cef.deviceVersion
            строка
            Поле device version в заголовке CEF.

            По умолчанию: 1

        • spec.socket.encoding.codec
          строка

          Кодек для назначения.

          Возможные значения:

          • JSON — структурированный JSON, используется по умолчанию и подходит для Loki, Elasticsearch и Kafka;
          • CEF — Common Event Format, подходит для интеграции с SIEM через Kafka, Vector, File и Console.

          По умолчанию: JSON

          Допустимые значения: JSON, CEF

        • spec.socket.encoding.syslogWrapper
          строка

          Обёртка вывода CEF в syslog-заголовок.

          Применимо только при codec=CEF.

          Возможные значения:

          • None — отправлять CEF-строку без заголовка, используется по умолчанию;
          • RFC3164 — добавлять заголовок RFC 3164 (BSD syslog);
          • RFC5424 — добавлять заголовок RFC 5424 (IETF syslog).

          По умолчанию: None

          Допустимые значения: None, RFC3164, RFC5424

      • spec.socket.mode
        строка

        Обязательный параметр

        Режим транспорта сокета.

        Возможные значения:

        • TCP — потоковый и надёжный, поддерживает TLS. Рекомендуется для промышленного syslog;
        • UDP — датаграммный, без гарантии доставки. Размер сообщения ограничен MTU;
        • Unix — локальный Unix-сокет в потоковом режиме. Предназначен для SIEM-агентов в сайдкаре.

        Допустимые значения: TCP, UDP, Unix

      • spec.socket.tls
        объект

        Настройки TLS.

        Применимо только для режима TCP. Игнорируется для UDP и Unix.

        • spec.socket.tls.ca
          строка
          Base64-строка PEM (цепочка CA) для проверки сертификата сервера назначения.
        • spec.socket.tls.verifyCertificate
          булевый

          По умолчанию: true

        • spec.socket.tls.verifyHostname
          булевый

          По умолчанию: true

    • spec.splunkHEC
      объект
      • spec.splunkHEC.endpoint
        строка

        Обязательный параметр

      • spec.splunkHEC.tls
        объект
        • spec.splunkHEC.tls.ca
          строка
          Base64-строка PEM (цепочка CA) для проверки сертификата сервера назначения.
        • spec.splunkHEC.tls.verifyCertificate
          булевый

          По умолчанию: true

        • spec.splunkHEC.tls.verifyHostname
          булевый

          По умолчанию: true

      • spec.splunkHEC.token
        строка

        Токен Splunk HEC.

        Рекомендуется использовать tokenSecretRef вместо хранения секрета в спецификации CR.

      • spec.splunkHEC.tokenSecretRef
        объект
        • spec.splunkHEC.tokenSecretRef.name
          строка

          Обязательный параметр

          Имя секрета в неймспейсе d8-security-events-manager, содержащего учётные данные.

          Секрет должен содержать ключ value в поле data.

    • spec.type
      строка

      Обязательный параметр

      Допустимые значения: Loki, Elasticsearch, Kafka, SplunkHEC, File, Console, Vector, Socket, Http

    • spec.vector
      объект
      • spec.vector.encoding
        объект

        Формат кодирования событий, отправляемых в это назначение Vector.

        По умолчанию JSON. Установите codec в CEF для отправки событий в формате Common Event Format.

        • spec.vector.encoding.cef
          объект

          Поля конфигурации CEF.

          Применимо только при codec=CEF. Если не задано, используются значения по умолчанию: deviceVendor=Deckhouse, deviceProduct=security-events-manager, version=1.

          • spec.vector.encoding.cef.deviceProduct
            строка
            Поле device product в заголовке CEF.

            По умолчанию: security-events-manager

          • spec.vector.encoding.cef.deviceVendor
            строка
            Поле device vendor в заголовке CEF.

            По умолчанию: Deckhouse

          • spec.vector.encoding.cef.deviceVersion
            строка
            Поле device version в заголовке CEF.

            По умолчанию: 1

        • spec.vector.encoding.codec
          строка

          Кодек для назначения.

          Возможные значения:

          • JSON — структурированный JSON, используется по умолчанию и подходит для Loki, Elasticsearch и Kafka;
          • CEF — Common Event Format, подходит для интеграции с SIEM через Kafka, Vector, File и Console.

          По умолчанию: JSON

          Допустимые значения: JSON, CEF

        • spec.vector.encoding.syslogWrapper
          строка

          Обёртка вывода CEF в syslog-заголовок.

          Применимо только при codec=CEF.

          Возможные значения:

          • None — отправлять CEF-строку без заголовка, используется по умолчанию;
          • RFC3164 — добавлять заголовок RFC 3164 (BSD syslog);
          • RFC5424 — добавлять заголовок RFC 5424 (IETF syslog).

          По умолчанию: None

          Допустимые значения: None, RFC3164, RFC5424

      • spec.vector.endpoint
        строка

        Обязательный параметр

      • spec.vector.tls
        объект
        • spec.vector.tls.ca
          строка
          Base64-строка PEM (цепочка CA) для проверки сертификата сервера назначения.
        • spec.vector.tls.verifyCertificate
          булевый

          По умолчанию: true

        • spec.vector.tls.verifyHostname
          булевый

          По умолчанию: true

ClusterSecurityEventEnrichmentPlugin

Короткие имена: csep

Область: Cluster
Версия: v1alpha1

  • spec
    объект

    Описывает плагин обогащения — HTTP-эндпоинт, который разрешает дополнительные поля для исходящих SecurityEvents во время выполнения.

    • Internal-плагины обслуживаются встроенным сайдкаром enrichment-cache в поде шлюза. Модуль поставляет три Internal-плагина: k8s-pod-info, k8s-container-info, k8s-nodeuser-info. Ресурсы типа Internal управляются Deckhouse, их нельзя создать или изменить.

    • External-плагины обслуживаются пользовательскими подами в любом неймспейсе. В ресурсе указываются URL эндпоинта, схема аргументов, схема возвращаемых полей и, при необходимости, настройки TLS и аутентификации.

    • spec.args
      массив объектов

      Обязательный параметр

      Входные аргументы, передаваемые как query-параметры, которые принимает плагин.

      У каждого аргумента есть имя, признак обязательности и описание.

      Когда ShipperEnrichRule ссылается на этот плагин, значения его args разрешаются из полей события (dot-paths) и отправляются как query-параметры на эндпоинт плагина.

      Контроллер проверяет, что все required: true аргументы присутствуют в ссылающемся ShipperEnrichRule.

      • spec.args.description
        строка
        Человекочитаемое описание аргумента.
      • spec.args.name
        строка
        Имя аргумента, используемое как ключ query-параметра.

        Минимальная длина: 1

      • spec.args.required
        булевый
        Признак обязательности аргумента в ShipperEnrichRule.

        По умолчанию: true

    • spec.description
      строка
      Человекочитаемое описание плагина.
    • spec.endpoint
      объект

      Конфигурация HTTP-эндпоинта.

      Обязательна для External-плагинов. Для Internal-плагинов параметр игнорируется, так как URL сайдкара используется автоматически.

      • spec.endpoint.headers
        массив объектов
        Статические HTTP-заголовки, отправляемые с каждым запросом.
        • spec.endpoint.headers.name
          строка

          Минимальная длина: 1

        • spec.endpoint.headers.value
          строка
      • spec.endpoint.tls
        объект
        TLS-конфигурация для HTTPS-эндпоинта.
        • spec.endpoint.tls.caSecret
          строка
          Имя Secret в namespace модуля (d8-security-events-manager), содержащего CA-сертификат (ключ ca.crt). Используется для проверки TLS-сертификата эндпоинта плагина.
        • spec.endpoint.tls.clientCertSecret
          строка
          Имя Secret в namespace модуля, содержащего клиентский сертификат и ключ для mTLS (ключи tls.crt, tls.key).
      • spec.endpoint.url
        строка

        Обязательный параметр

        Полный HTTP(S)-URL эндпоинта обогащения.

        Контроллер формирует запрос вида GET <URL>?<АРГУМЕНТЫ КАК QUERY-ПАРАМЕТРЫ>. URL должен начинаться с http:// или https://. Для защиты от SSRF он не должен ссылаться на облачные metadata-эндпоинты, такие как 169.254.x.x, и на link-local адреса.

        Минимальная длина: 1

    • spec.readiness
      объект

      Проверка готовности плагина.

      Контроллер может опрашивать этот эндпоинт перед включением плагина в конфигурацию шлюза. Если эндпоинт недоступен, контроллер устанавливает статус-условие NotReady.

      • spec.readiness.expectedStatus
        целое число
        Ожидаемый HTTP-код для готового плагина.

        По умолчанию: 200

      • spec.readiness.path
        строка
        HTTP-путь для проверки, добавляемый к endpoint.url.

        По умолчанию: /healthz

    • spec.returns
      объект

      Обязательный параметр

      Поля, которые плагин возвращает в JSON-ответе.

      Список используется для валидации: параметр value в ссылающемся ShipperEnrichRule должен совпадать с одним из перечисленных здесь значений fields[].name.

      • spec.returns.fields
        массив объектов

        Обязательный параметр

        • spec.returns.fields.description
          строка
          Человекочитаемое описание поля.
        • spec.returns.fields.name
          строка
          Имя поля в ответе.

          Минимальная длина: 1

        • spec.returns.fields.type
          строка
          Тип поля.

          Допустимые значения: String, Int, Bool

    • spec.type
      строка

      Обязательный параметр

      Тип плагина.

      • Internal — обслуживается встроенным сайдкаром enrichment-cache, эндпоинт не требуется;
      • External — обслуживается пользовательским подом, требуется endpoint.url.

      Допустимые значения: Internal, External

  • status
    объект
    Current status of this resource.
    • status.conditions
      массив объектов
      Represents the latest available observations of an object’s state.
      • status.conditions.lastTransitionTime
        строка
      • status.conditions.message
        строка

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целое число
      • status.conditions.reason
        строка

        Длина: 1..1024

      • status.conditions.status
        строка

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка

        Максимальная длина: 316

    • status.observedGeneration
      целое число
      The generation observed by the controller.

ClusterSecurityEventLoggingTransformationRules

Короткие имена: cseltr

Область: Cluster
Версия: v1alpha1

  • spec
    объект

    Кластерные правила для преобразования сырых строк логов в структурированные объекты (Vector events) перед дальнейшей обработкой.

    Namespaced SecurityEventLoggingTransformationRules (SELTR) имеют приоритет над этими правилами, если оба ресурса подходят для одного и того же пода/контейнера.

    • spec.file
      объект

      Выбор файлов + общая трансформация для логов из файлов. Обязательно, когда type = File.

      Матчинг файла выполняется по полю Vector-события .file.

      • spec.file.paths
        массив строк

        Обязательный параметр

        Точные пути к файлам для матчинга.
        • spec.file.paths.Элемент массива
          строка

          Минимальная длина: 1

      • spec.file.transform
        объект

        Обязательный параметр

        Общая трансформация, применяемая ко всем строкам лога из совпавших файлов.
        • spec.file.transform.drop_raw
          булевый

          По умолчанию: false

        • spec.file.transform.fields
          массив объектов
          • spec.file.transform.fields.name
            строка
            Имя поля в распарсенном объекте.

            Минимальная длина: 1

          • spec.file.transform.fields.type
            строка
            Целевой тип поля.

            Допустимые значения: String, Int, Float, Bool

        • spec.file.transform.parser
          объект

          Обязательный параметр

          Конфигурация парсера, определяющая, как распаковать исходную строку лога.

          Разбор выполняется по следующим правилам:

          • разбор выполняется по возможности, поэтому ошибки и несовпадения не приводят к отбрасыванию событий;
          • для типов Regex и Grok используется первый успешно совпавший шаблон;
          • именованные группы записываются в .parsed_data.
          • spec.file.transform.parser.grok
            объект
            Конфигурация grok-парсера. Именованные поля сохраняются в .parsed_data.
            • spec.file.transform.parser.grok.customPatterns
              массив объектов
              Пользовательские определения grok-паттернов (имя -> regex). Добавляются к встроенным grok-паттернам.
              • spec.file.transform.parser.grok.customPatterns.key
                строка
              • spec.file.transform.parser.grok.customPatterns.value
                строка
            • spec.file.transform.parser.grok.patterns
              массив строк

              Обязательный параметр

              Список grok-шаблонов, применяемых по порядку. Используется первый успешно совпавший шаблон.
              • spec.file.transform.parser.grok.patterns.Элемент массива
                строка

                Минимальная длина: 1

          • spec.file.transform.parser.regex
            объект
            Конфигурация regex-парсера. В .parsed_data сохраняются только именованные группы.
            • spec.file.transform.parser.regex.patterns
              массив строк

              Обязательный параметр

              Список regex-шаблонов, применяемых по порядку. Используется первый успешно совпавший шаблон.
              • spec.file.transform.parser.regex.patterns.Элемент массива
                строка

                Минимальная длина: 1

          • spec.file.transform.parser.type
            строка

            Обязательный параметр

            Тип парсера.

            • JSON — разобрать исходную строку лога как JSON с помощью parse_json();
            • Regex — применить регулярные выражения и извлечь именованные группы;
            • Grok — применить grok-шаблоны и извлечь именованные поля.

            Допустимые значения: JSON, Regex, Grok

    • spec.kubernetesPods
      объект
      Выбор подов + трансформации по контейнерам для логов KubernetesPods. Обязательно, когда type = KubernetesPods.
      • spec.kubernetesPods.containers
        массив объектов

        Обязательный параметр

        Правила трансформации по контейнерам.
        • spec.kubernetesPods.containers.drop_raw
          булевый
          Если true — удаляет исходное «сырое» поле сообщения после парсинга.

          По умолчанию: false

        • spec.kubernetesPods.containers.fields
          массив объектов
          Необязательные преобразования типов полей после парсинга. Полезно для обеспечения стабильных типов для sinks (Elasticsearch/ClickHouse/и т.п.).
          • spec.kubernetesPods.containers.fields.name
            строка
            Имя поля в распарсенном объекте.

            Минимальная длина: 1

          • spec.kubernetesPods.containers.fields.type
            строка
            Целевой тип поля.

            Допустимые значения: String, Int, Float, Bool

        • spec.kubernetesPods.containers.name
          строка
          Имя контейнера, к которому применяется эта трансформация.

          Минимальная длина: 1

        • spec.kubernetesPods.containers.parser
          объект

          Конфигурация парсера, определяющая, как распаковать исходную строку лога.

          Разбор выполняется по следующим правилам:

          • разбор выполняется по возможности, поэтому ошибки и несовпадения не приводят к отбрасыванию событий;
          • для типов Regex и Grok используется первый успешно совпавший шаблон;
          • именованные группы записываются в .parsed_data.
          • spec.kubernetesPods.containers.parser.grok
            объект
            Конфигурация grok-парсера. Именованные поля сохраняются в .parsed_data.
            • spec.kubernetesPods.containers.parser.grok.customPatterns
              массив объектов
              Пользовательские определения grok-паттернов (имя -> regex). Добавляются к встроенным grok-паттернам.
              • spec.kubernetesPods.containers.parser.grok.customPatterns.key
                строка
              • spec.kubernetesPods.containers.parser.grok.customPatterns.value
                строка
            • spec.kubernetesPods.containers.parser.grok.patterns
              массив строк

              Обязательный параметр

              Список grok-шаблонов, применяемых по порядку. Используется первый успешно совпавший шаблон.
              • spec.kubernetesPods.containers.parser.grok.patterns.Элемент массива
                строка

                Минимальная длина: 1

          • spec.kubernetesPods.containers.parser.regex
            объект
            Конфигурация regex-парсера. В .parsed_data сохраняются только именованные группы.
            • spec.kubernetesPods.containers.parser.regex.patterns
              массив строк

              Обязательный параметр

              Список regex-шаблонов, применяемых по порядку. Используется первый успешно совпавший шаблон.
              • spec.kubernetesPods.containers.parser.regex.patterns.Элемент массива
                строка

                Минимальная длина: 1

          • spec.kubernetesPods.containers.parser.type
            строка

            Обязательный параметр

            Тип парсера.

            • JSON — разобрать исходную строку лога как JSON с помощью parse_json();
            • Regex — применить регулярные выражения и извлечь именованные группы;
            • Grok — применить grok-шаблоны и извлечь именованные поля.

            Допустимые значения: JSON, Regex, Grok

      • spec.kubernetesPods.labelSelector
        объект

        Обязательный параметр

        Label selector подов.
        • spec.kubernetesPods.labelSelector.matchExpressions
          массив объектов
          Список требований label selector.
          • spec.kubernetesPods.labelSelector.matchExpressions.key
            строка
          • spec.kubernetesPods.labelSelector.matchExpressions.operator
            строка

            Допустимые значения: In, NotIn, Exists, DoesNotExist

          • spec.kubernetesPods.labelSelector.matchExpressions.values
            массив строк
        • spec.kubernetesPods.labelSelector.matchLabels
          объект
          Карта «ключ метки → значение».
      • spec.kubernetesPods.namespaceSelector
        объект
        Выбор неймспейсов (подмножество ClusterLoggingConfig). Поддерживаются только matchNames/excludeNames.
        • spec.kubernetesPods.namespaceSelector.excludeNames
          массив строк
        • spec.kubernetesPods.namespaceSelector.matchNames
          массив строк
    • spec.type
      строка

      Обязательный параметр

      Тип входного источника, к которому применяются правила. KubernetesPods — для логов подов/контейнеров. File — для логов из файлов на нодах.

      Допустимые значения: KubernetesPods, File

  • status
    объект
    Current status of this resource.
    • status.conditions
      массив объектов
      Represents the latest available observations of an object’s state.
      • status.conditions.lastTransitionTime
        строка
      • status.conditions.message
        строка

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целое число
      • status.conditions.reason
        строка

        Длина: 1..1024

      • status.conditions.status
        строка

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка

        Максимальная длина: 316

    • status.observedGeneration
      целое число
      The generation observed by the controller.

ClusterSecurityEventShipper

Короткие имена: cses

Область: Cluster
Версия: v1alpha1

  • spec
    массив объектов
    Кластерные пайплайны для извлечения событий безопасности из файлов нод или логов подов. Каждый элемент пайплайна описывает источник и одно или несколько определений событий (produces).
    • spec.input
      объект
      • spec.input.files
        массив строк
        Пути к файлам на нодах (обязательно для типа File).
      • spec.input.kubernetesPods
        объект
        Выбор подов для кластерного сбора.
        • spec.input.kubernetesPods.labelSelector
          объект

          Обязательный параметр

          Селектор меток в стиле Kubernetes.
          • spec.input.kubernetesPods.labelSelector.matchExpressions
            массив объектов
            Список требований label selector.
            • spec.input.kubernetesPods.labelSelector.matchExpressions.key
              строка
            • spec.input.kubernetesPods.labelSelector.matchExpressions.operator
              строка

              Допустимые значения: In, NotIn, Exists, DoesNotExist

            • spec.input.kubernetesPods.labelSelector.matchExpressions.values
              массив строк
          • spec.input.kubernetesPods.labelSelector.matchLabels
            объект
            Карта «ключ метки → значение».
        • spec.input.kubernetesPods.namespace
          строка
          Неймспейс, из которого собирать логи подов.

          Минимальная длина: 1

        • spec.input.kubernetesPods.namespaceSelector
          объект

          Селектор неймспейсов для кластерного сбора логов подов.

          • Если задан matchNames, включаются только эти неймспейсы.
          • Если задан excludeNames, эти неймспейсы исключаются.
          • Если оба поля пустые, совпадают все неймспейсы.
          • spec.input.kubernetesPods.namespaceSelector.excludeNames
            массив строк
            Явно исключаемые имена неймспейсов.
          • spec.input.kubernetesPods.namespaceSelector.matchNames
            массив строк
            Явно включаемые имена неймспейсов.
      • spec.input.type
        строка

        Обязательный параметр

        File — чтение из файлов на нодах. KubernetesPods — чтение из логов подов (кластерный сбор; labelSelector обязателен; namespace или namespaceSelector опциональны).

        Допустимые значения: File, KubernetesPods

    • spec.parser
      массив объектов

      Правила парсинга для best-effort преобразования сырой строки лога .message в .parsed_data.

      • Для input.type: KubernetesPods: повторяет SecurityEventLoggingTransformationRules.spec.containers[]. Матчинг выполняется по .namespace + .container + .pod_labels.
      • Для input.type: File: используйте name: file, и правило будет применяться при совпадении .file с одним из путей в input.files.

      Выбор контейнера происходит на стороне log-shipper через labelFilter.

      • spec.parser.drop_raw
        булевый
        Если true — удаляет исходное «сырое» поле сообщения после парсинга.

        По умолчанию: false

      • spec.parser.fields
        массив объектов
        Необязательные преобразования типов полей после парсинга.
        • spec.parser.fields.name
          строка
          Имя поля в распарсенном объекте.

          Минимальная длина: 1

        • spec.parser.fields.type
          строка
          Целевой тип поля.

          Допустимые значения: String, Int, Float, Bool

      • spec.parser.name
        строка
        Имя контейнера (или file для file input).

        Минимальная длина: 1

      • spec.parser.parser
        объект
        Конфигурация парсера.
        • spec.parser.parser.grok
          объект
          • spec.parser.parser.grok.customPatterns
            массив объектов
            • spec.parser.parser.grok.customPatterns.key
              строка
            • spec.parser.parser.grok.customPatterns.value
              строка
          • spec.parser.parser.grok.patterns
            массив строк

            Обязательный параметр

            • spec.parser.parser.grok.patterns.Элемент массива
              строка

              Минимальная длина: 1

        • spec.parser.parser.regex
          объект
          • spec.parser.parser.regex.patterns
            массив строк

            Обязательный параметр

            • spec.parser.parser.regex.patterns.Элемент массива
              строка

              Минимальная длина: 1

        • spec.parser.parser.type
          строка

          Обязательный параметр

          Тип парсера.

          Допустимые значения: JSON, Regex, Grok

    • spec.parserRef
      строка

      Имя ресурса ClusterSecurityEventLoggingTransformationRules (CSELTR), из которого нужно взять правила парсинга.

      Используется только если parser не задан.

      Минимальная длина: 1

    • spec.produces
      массив объектов
      Список событий безопасности, производимых этим источником.
      • spec.produces.enrich
        массив объектов

        Правила enrichment для добавления дополнительных полей в исходящий SecurityEvent.

        Каждое правило пишет в целевой путь (target). Источники:

        • Static: записывает строковый литерал из value.
        • Plugin: разрешает поле во время выполнения через HTTP-запрос к сайдкару enrichment-cache (кэш подов/NodeUser в памяти, без обращения к API-серверу на каждое событие). Плагины:
          • k8s-pod-info, k8s-container-info: разрешение полей пода. Поддерживает два режима поиска:
            • По имени пода: args pod_name + namespace.
            • По container ID: arg container_id (разрешает namespace, name или serviceAccountName по container runtime ID).
          • k8s-nodeuser-info: разрешение имени статического пользователя (nodeusers.deckhouse.io) по uid. Arg uid (разрешает metadata.name объекта NodeUser, совпадающего по spec.uid).

        Enrich применяется после transform, поэтому перезаписывает transform при конфликте целевого поля.

        • spec.produces.enrich.args
          массив объектов

          Аргументы плагина как пары ключ/значение. Ключ (key) должен совпадать с именем аргумента, объявленным в соответствующем CR ClusterSecurityEventEnrichmentPlugin (spec.args[].name). Значение (value) — точечный путь в событии, разрешаемый по той же логике, что и правила transform: префикс @root. читает из корня события, иначе — из .parsed_data.

          Во время выполнения каждый аргумент становится query-параметром, отправляемым на эндпоинт плагина: GET <endpoint>?<arg1>=<val1>&<arg2>=<val2>.

          Для встроенных плагинов:

          • k8s-pod-info: pod_name + namespace (оба обязательны).
          • k8s-container-info: container_id (обязателен; префиксы рантайма вроде containerd:// удаляются автоматически).
          • k8s-nodeuser-info: uid (обязателен; системный UID из события).
          • spec.produces.enrich.args.key
            строка
          • spec.produces.enrich.args.value
            строка
        • spec.produces.enrich.plugin
          строка

          Имя плагина (обязательно для source=Plugin). Ссылается на существующий кастомный ресурс ClusterSecurityEventEnrichmentPlugin по его metadata.name.

          Встроенные Internal-плагины, поставляемые с модулем:

          • k8s-pod-info — разрешение полей пода по имени пода + namespace.
          • k8s-container-info — разрешение полей пода по container runtime ID.
          • k8s-nodeuser-info — разрешение имени статического пользователя (nodeusers.deckhouse.io) по uid.

          Чтобы зарегистрировать собственные эндпоинты обогащения, создайте кастомные ресурсы ClusterSecurityEventEnrichmentPlugin типа External.

        • spec.produces.enrich.source
          строка
          Тип источника enrichment.

          Допустимые значения: Static, Plugin

        • spec.produces.enrich.target
          строка
          Целевой путь поля в исходящем SecurityEvent (через точку).

          Минимальная длина: 1

        • spec.produces.enrich.value
          строка

          Для источника Static: строковый литерал, который будет записан в target.

          Для источника Plugin: имя поля в JSON-ответе плагина, значение которого будет записано в target. Должно совпадать с одним из returns.fields[].name, объявленных в соответствующем кастомном ресурсе ClusterSecurityEventEnrichmentPlugin. Например: serviceAccountName, name, namespace (k8s-pod-info / k8s-container-info), username (k8s-nodeuser-info).

      • spec.produces.eventCode
        строка
        Код события (ссылка на SecurityEventDefinition.spec.code).

        Минимальная длина: 1

      • spec.produces.extract
        объект

        Правило детекции для этого produced event.

        Эта структура маппится 1:1 в элемент log-shipper ClusterLoggingConfig.spec.labelFilter.

        Примечания:

        • values обязательно для In, NotIn, Regex, NotRegex.
        • values должно отсутствовать/быть пустым для Exists, DoesNotExist.

        Допустимые значения field — это message и метаданные (labels) log-shipper. Kubernetes: pod, namespace, pod_labels, pod_ip, image, container, node, pod_owner, node_group. File: host, host_ip, file.

        • spec.produces.extract.field
          строка

          Обязательный параметр

          Имя поля для фильтрации (как в ClusterLoggingConfig labelFilter.field). Типичные значения: message, file, namespace.

          Минимальная длина: 1

        • spec.produces.extract.operator
          строка

          Обязательный параметр

          Оператор сравнения поля (как в ClusterLoggingConfig labelFilter.operator).

          Допустимые значения: In, NotIn, Regex, NotRegex, Exists, DoesNotExist

        • spec.produces.extract.values
          массив строк
          Массив значений или регулярных выражений для соответствующих операций (как в ClusterLoggingConfig labelFilter.values).
      • spec.produces.transform
        массив объектов

        Маппинг полей для преобразования распарсенных сырых логов в исходящий SecurityEvent.

        Ключи — целевые пути полей в исходящем событии (через точку). Значения — пути полей во входном распарсенном объекте (через точку, относительно .parsed_data). Чтобы сослаться на исходные поля корневого события, используйте префикс @root. (например: metadata.extra.host_ip: @root.host_ip).

        Пример: pod.name: pod_name скопирует .parsed_data.pod_name в .pod.name.

        • spec.produces.transform.key
          строка
        • spec.produces.transform.value
          строка
    • spec.producesDefaults
      объект

      Преобразования по умолчанию, применяемые ко всем элементам produces[] в рамках этого пайплайна.

      Приоритет:

      • transform: мердж по ключам; сначала defaults, затем produces[].transform перезаписывает.
      • enrich: используется только если produces[].enrich не задан.
      • spec.producesDefaults.enrich
        массив объектов
        Правила обогащения по умолчанию. Аналогичны параметру produces[].enrich.
        • spec.producesDefaults.enrich.args
          массив объектов

          Аргументы плагина как пары ключ/значение. Ключ (key) должен совпадать с именем аргумента, объявленным в соответствующем CR ClusterSecurityEventEnrichmentPlugin (spec.args[].name). Значение (value) — точечный путь в событии, разрешаемый по той же логике, что и правила transform: префикс @root. читает из корня события, иначе — из .parsed_data.

          Во время выполнения каждый аргумент становится query-параметром, отправляемым на эндпоинт плагина: GET <endpoint>?<arg1>=<val1>&<arg2>=<val2>.

          Для встроенных плагинов:

          • k8s-pod-info: pod_name + namespace (оба обязательны).
          • k8s-container-info: container_id (обязателен; префиксы рантайма вроде containerd:// удаляются автоматически).
          • k8s-nodeuser-info: uid (обязателен; системный UID из события).
          • spec.producesDefaults.enrich.args.key
            строка
          • spec.producesDefaults.enrich.args.value
            строка
        • spec.producesDefaults.enrich.plugin
          строка

          Имя плагина (обязательно для source=Plugin). Ссылается на существующий кастомный ресурс ClusterSecurityEventEnrichmentPlugin по его metadata.name.

          Встроенные Internal-плагины, поставляемые с модулем:

          • k8s-pod-info — разрешение полей пода по имени пода + namespace.
          • k8s-container-info — разрешение полей пода по container runtime ID.
          • k8s-nodeuser-info — разрешение имени статического пользователя (nodeusers.deckhouse.io) по uid.

          Чтобы зарегистрировать собственные эндпоинты обогащения, создайте кастомные ресурсы ClusterSecurityEventEnrichmentPlugin типа External.

        • spec.producesDefaults.enrich.source
          строка
          Тип источника enrichment.

          Допустимые значения: Static, Plugin

        • spec.producesDefaults.enrich.target
          строка
          Целевой путь поля в исходящем SecurityEvent (через точку).

          Минимальная длина: 1

        • spec.producesDefaults.enrich.value
          строка

          Для источника Static: строковый литерал, который будет записан в target.

          Для источника Plugin: имя поля в JSON-ответе плагина, значение которого будет записано в target. Должно совпадать с одним из returns.fields[].name, объявленных в соответствующем кастомном ресурсе ClusterSecurityEventEnrichmentPlugin. Например: serviceAccountName, name, namespace (k8s-pod-info / k8s-container-info), username (k8s-nodeuser-info).

      • spec.producesDefaults.transform
        массив объектов
        Маппинг полей по умолчанию. Аналогичен параметру produces[].transform.
        • spec.producesDefaults.transform.key
          строка
        • spec.producesDefaults.transform.value
          строка
    • spec.source
      строка
      Идентификатор источника (используется для включения/выключения через ClusterSecurityEventConfig).

      Минимальная длина: 1

  • status
    объект
    Current status of this resource.
    • status.conditions
      массив объектов
      Represents the latest available observations of an object’s state.
      • status.conditions.lastTransitionTime
        строка
      • status.conditions.message
        строка

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целое число
      • status.conditions.reason
        строка

        Длина: 1..1024

      • status.conditions.status
        строка

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка

        Максимальная длина: 316

    • status.observedGeneration
      целое число
      The generation observed by the controller.

PodSecurityEventShipper

Короткие имена: pses

Область: Namespaced
Версия: v1alpha1

  • spec
    массив объектов
    Namespaced пайплайны для извлечения событий безопасности из логов подов этого неймспейса. Неймспейс подразумевается и равен неймспейсу ресурса PodSecurityEventShipper.
    • spec.input
      объект
      • spec.input.kubernetesPods
        объект

        Обязательный параметр

        • spec.input.kubernetesPods.labelSelector
          объект

          Обязательный параметр

          Селектор меток в стиле Kubernetes.
          • spec.input.kubernetesPods.labelSelector.matchExpressions
            массив объектов
            Список требований label selector.
            • spec.input.kubernetesPods.labelSelector.matchExpressions.key
              строка
            • spec.input.kubernetesPods.labelSelector.matchExpressions.operator
              строка

              Допустимые значения: In, NotIn, Exists, DoesNotExist

            • spec.input.kubernetesPods.labelSelector.matchExpressions.values
              массив строк
          • spec.input.kubernetesPods.labelSelector.matchLabels
            объект
            Карта «ключ метки → значение».
      • spec.input.type
        строка

        Обязательный параметр

        Допустимые значения: KubernetesPods

    • spec.parser
      массив объектов

      Описание правил парсинга логов (в стиле SecurityEventLoggingTransformationRules.spec.containers[]).

      Используется шлюзом для best-effort парсинга сырых логов .message в .parsed_data перед применением transform-маппингов.

      Примечание: контейнер выбирается на стороне log-shipper через labelFilter. Здесь name — имя контейнера, к которому применяются правила парсинга.

      • spec.parser.drop_raw
        булевый
        Если true — удаляет исходное «сырое» поле сообщения после парсинга.

        По умолчанию: false

      • spec.parser.fields
        массив объектов
        Необязательные преобразования типов полей после парсинга.
        • spec.parser.fields.name
          строка
          Имя поля в распарсенном объекте.

          Минимальная длина: 1

        • spec.parser.fields.type
          строка
          Целевой тип поля.

          Допустимые значения: String, Int, Float, Bool

      • spec.parser.name
        строка
        Имя контейнера.

        Минимальная длина: 1

      • spec.parser.parser
        объект
        Конфигурация парсера.
        • spec.parser.parser.grok
          объект
          Конфигурация grok-парсера.
          • spec.parser.parser.grok.customPatterns
            массив объектов
            Пользовательские определения grok-паттернов (имя -> regex).
            • spec.parser.parser.grok.customPatterns.key
              строка
            • spec.parser.parser.grok.customPatterns.value
              строка
          • spec.parser.parser.grok.patterns
            массив строк

            Обязательный параметр

            Список grok-шаблонов, применяемых по порядку.
            • spec.parser.parser.grok.patterns.Элемент массива
              строка

              Минимальная длина: 1

        • spec.parser.parser.regex
          объект
          Конфигурация regex-парсера.
          • spec.parser.parser.regex.patterns
            массив строк

            Обязательный параметр

            Список regex-шаблонов, применяемых по порядку.
            • spec.parser.parser.regex.patterns.Элемент массива
              строка

              Минимальная длина: 1

        • spec.parser.parser.type
          строка

          Обязательный параметр

          Тип парсера.

          • JSON — разобрать исходную строку лога как JSON;
          • Regex — применить регулярные выражения и извлечь именованные группы;
          • Grok — применить grok-шаблоны и извлечь именованные поля.

          Допустимые значения: JSON, Regex, Grok

    • spec.parserRef
      строка

      Имя ресурса SecurityEventLoggingTransformationRules (SELTR) в том же неймспейсе, из которого нужно взять правила парсинга.

      Используется только если parser не задан.

      Минимальная длина: 1

    • spec.produces
      массив объектов
      Список событий безопасности, производимых этим источником.
      • spec.produces.enrich
        массив объектов

        Правила enrichment для добавления дополнительных полей в исходящий SecurityEvent.

        Каждое правило пишет в целевой путь (target). Источники:

        • Static: записывает строковый литерал из value.
        • Plugin: разрешает поле во время выполнения через HTTP-запрос к сайдкару enrichment-cache (кэш подов/NodeUser в памяти, без обращения к API-серверу на каждое событие). Плагины:
          • k8s-pod-info, k8s-container-info: разрешение полей пода. Поддерживает два режима поиска:
            • По имени пода: args pod_name + namespace.
            • По container ID: arg container_id (разрешает namespace, name или serviceAccountName по container runtime ID).
          • k8s-nodeuser-info: разрешение имени статического пользователя (nodeusers.deckhouse.io) по uid. Arg uid (разрешает metadata.name объекта NodeUser, совпадающего по spec.uid).

        Enrich применяется после transform, поэтому перезаписывает transform при конфликте целевого поля.

        • spec.produces.enrich.args
          массив объектов

          Аргументы плагина как пары ключ/значение. Ключ (key) должен совпадать с именем аргумента, объявленным в соответствующем CR ClusterSecurityEventEnrichmentPlugin (spec.args[].name). Значение (value) — точечный путь в событии, разрешаемый по той же логике, что и правила transform: префикс @root. читает из корня события, иначе — из .parsed_data.

          Во время выполнения каждый аргумент становится query-параметром, отправляемым на эндпоинт плагина: GET <endpoint>?<arg1>=<val1>&<arg2>=<val2>.

          Для встроенных плагинов:

          • k8s-pod-info: pod_name + namespace (оба обязательны).
          • k8s-container-info: container_id (обязателен; префиксы рантайма вроде containerd:// удаляются автоматически).
          • k8s-nodeuser-info: uid (обязателен; системный UID из события).
          • spec.produces.enrich.args.key
            строка
          • spec.produces.enrich.args.value
            строка
        • spec.produces.enrich.plugin
          строка

          Имя плагина (обязательно для source=Plugin). Ссылается на существующий кастомный ресурс ClusterSecurityEventEnrichmentPlugin по его metadata.name.

          Встроенные Internal-плагины, поставляемые с модулем:

          • k8s-pod-info — разрешение полей пода по имени пода + namespace.
          • k8s-container-info — разрешение полей пода по container runtime ID.
          • k8s-nodeuser-info — разрешение имени статического пользователя (nodeusers.deckhouse.io) по uid.

          Чтобы зарегистрировать собственные эндпоинты обогащения, создайте кастомные ресурсы ClusterSecurityEventEnrichmentPlugin типа External.

        • spec.produces.enrich.source
          строка
          Тип источника enrichment.

          Допустимые значения: Static, Plugin

        • spec.produces.enrich.target
          строка
          Целевой путь поля в исходящем SecurityEvent (через точку).

          Минимальная длина: 1

        • spec.produces.enrich.value
          строка

          Для источника Static: строковый литерал, который будет записан в target.

          Для источника Plugin: имя поля в JSON-ответе плагина, значение которого будет записано в target. Должно совпадать с одним из returns.fields[].name, объявленных в соответствующем кастомном ресурсе ClusterSecurityEventEnrichmentPlugin. Например: serviceAccountName, name, namespace (k8s-pod-info / k8s-container-info), username (k8s-nodeuser-info).

      • spec.produces.eventCode
        строка
        Код события (ссылка на SecurityEventDefinition.spec.code).

        Минимальная длина: 1

      • spec.produces.extract
        объект

        Правило детекции для этого produced event.

        Эта структура маппится 1:1 в элемент log-shipper PodLoggingConfig.spec.labelFilter.

        Примечания:

        • values обязательно для In, NotIn, Regex, NotRegex.
        • values должно отсутствовать/быть пустым для Exists, DoesNotExist.

        Допустимые значения field — это message и метаданные (labels) log-shipper. Kubernetes: pod, namespace, pod_labels, pod_ip, image, container, node, pod_owner, node_group. File: host, host_ip, file.

        • spec.produces.extract.field
          строка

          Обязательный параметр

          Имя поля для фильтрации (как в PodLoggingConfig labelFilter.field). Типичные значения: message, container, namespace.

          Минимальная длина: 1

        • spec.produces.extract.operator
          строка

          Обязательный параметр

          Оператор сравнения поля (как в PodLoggingConfig labelFilter.operator).

          Допустимые значения: In, NotIn, Regex, NotRegex, Exists, DoesNotExist

        • spec.produces.extract.values
          массив строк
          Массив значений или регулярных выражений для соответствующих операций (как в PodLoggingConfig labelFilter.values).
      • spec.produces.transform
        массив объектов

        Маппинг полей для преобразования распарсенных сырых логов в исходящий SecurityEvent.

        Ключи — целевые пути полей в исходящем событии (через точку). Значения — пути полей во входном распарсенном объекте (через точку, относительно .parsed_data). Чтобы сослаться на исходные поля корневого события, используйте префикс @root. (например: metadata.extra.host_ip: @root.host_ip).

        Пример: pod.name: pod_name скопирует .parsed_data.pod_name в .pod.name.

        • spec.produces.transform.key
          строка
        • spec.produces.transform.value
          строка
    • spec.producesDefaults
      объект

      Преобразования по умолчанию, применяемые ко всем элементам produces[] в рамках этого пайплайна.

      Приоритет:

      • transform: мердж по ключам; сначала defaults, затем produces[].transform перезаписывает.
      • enrich: используется только если produces[].enrich не задан.
      • spec.producesDefaults.enrich
        массив объектов
        Правила обогащения по умолчанию. Аналогичны параметру produces[].enrich.
        • spec.producesDefaults.enrich.args
          массив объектов

          Аргументы плагина как пары ключ/значение. Ключ (key) должен совпадать с именем аргумента, объявленным в соответствующем CR ClusterSecurityEventEnrichmentPlugin (spec.args[].name). Значение (value) — точечный путь в событии, разрешаемый по той же логике, что и правила transform: префикс @root. читает из корня события, иначе — из .parsed_data.

          Во время выполнения каждый аргумент становится query-параметром, отправляемым на эндпоинт плагина: GET <endpoint>?<arg1>=<val1>&<arg2>=<val2>.

          Для встроенных плагинов:

          • k8s-pod-info: pod_name + namespace (оба обязательны).
          • k8s-container-info: container_id (обязателен; префиксы рантайма вроде containerd:// удаляются автоматически).
          • k8s-nodeuser-info: uid (обязателен; системный UID из события).
          • spec.producesDefaults.enrich.args.key
            строка
          • spec.producesDefaults.enrich.args.value
            строка
        • spec.producesDefaults.enrich.plugin
          строка

          Имя плагина (обязательно для source=Plugin). Ссылается на существующий кастомный ресурс ClusterSecurityEventEnrichmentPlugin по его metadata.name.

          Встроенные Internal-плагины, поставляемые с модулем:

          • k8s-pod-info — разрешение полей пода по имени пода + namespace.
          • k8s-container-info — разрешение полей пода по container runtime ID.
          • k8s-nodeuser-info — разрешение имени статического пользователя (nodeusers.deckhouse.io) по uid.

          Чтобы зарегистрировать собственные эндпоинты обогащения, создайте кастомные ресурсы ClusterSecurityEventEnrichmentPlugin типа External.

        • spec.producesDefaults.enrich.source
          строка
          Тип источника enrichment.

          Допустимые значения: Static, Plugin

        • spec.producesDefaults.enrich.target
          строка
          Целевой путь поля в исходящем SecurityEvent (через точку).

          Минимальная длина: 1

        • spec.producesDefaults.enrich.value
          строка

          Для источника Static: строковый литерал, который будет записан в target.

          Для источника Plugin: имя поля в JSON-ответе плагина, значение которого будет записано в target. Должно совпадать с одним из returns.fields[].name, объявленных в соответствующем кастомном ресурсе ClusterSecurityEventEnrichmentPlugin. Например: serviceAccountName, name, namespace (k8s-pod-info / k8s-container-info), username (k8s-nodeuser-info).

      • spec.producesDefaults.transform
        массив объектов
        Маппинг полей по умолчанию. Аналогичен параметру produces[].transform.
        • spec.producesDefaults.transform.key
          строка
        • spec.producesDefaults.transform.value
          строка
    • spec.source
      строка
      Идентификатор источника (используется для включения/выключения через ClusterSecurityEventConfig).

      Минимальная длина: 1

  • status
    объект
    Current status of this resource.
    • status.conditions
      массив объектов
      Represents the latest available observations of an object’s state.
      • status.conditions.lastTransitionTime
        строка
      • status.conditions.message
        строка

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целое число
      • status.conditions.reason
        строка

        Длина: 1..1024

      • status.conditions.status
        строка

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка

        Максимальная длина: 316

    • status.observedGeneration
      целое число
      The generation observed by the controller.

SecurityEvent

Область: Cluster
Версия: v1

  • actor
    объект
    Субъект (actor), совершивший действие.
    • actor.id
      строка
      Идентификатор субъекта.
    • actor.type
      строка
      Тип субъекта.

      Допустимые значения: User, ServiceAccount, System

  • event
    объект
    Классификация и детали события.
    • event.category
      строка

      Обязательный параметр

      Категория события.

      Допустимые значения: Auth, Rbac, Runtime, Network, Config

    • event.code
      строка

      Обязательный параметр

      Код события.
    • event.description
      строка
      Человекочитаемое описание события.
    • event.outcome
      строка

      Обязательный параметр

      Результат события.

      Допустимые значения: Success, Failure, Denied

    • event.severity
      строка

      Обязательный параметр

      Уровень критичности события.

      Допустимые значения: Low, Medium, High, Critical

  • eventMetadata
    объект
    Дополнительные метаданные.
    • eventMetadata.cluster
      строка

      Обязательный параметр

      Идентификатор кластера.
    • eventMetadata.extra
      массив объектов
      Дополнительные метаданные в виде ключ-значение.
      • eventMetadata.extra.key
        строка
      • eventMetadata.extra.value
        строка
    • eventMetadata.node
      строка
      Имя ноды.
  • id
    строка
    Уникальный идентификатор события.
  • object
    объект
    Объект, к которому относится событие.
    • object.name
      строка
      Имя объекта.
    • object.namespace
      строка
      Namespace объекта.
    • object.type
      строка
      Тип объекта.
  • source
    объект
    Идентификация источника события.
    • source.component
      строка

      Обязательный параметр

      Имя компонента, например kube-apiserver.
    • source.instance
      строка
      Необязательный идентификатор инстанса.
  • timestamp
    строка
    Время события.

SecurityEventDefinition

Короткие имена: sed

Область: Cluster
Версия: v1alpha1

  • spec
    объект
    Описывает возможное событие безопасности.
    • spec.category
      строка

      Обязательный параметр

      Категория события.

      Допустимые значения: Auth, Rbac, Runtime, Network, Config

    • spec.code
      строка

      Обязательный параметр

      Код события.

      Минимальная длина: 1

    • spec.description
      строка

      Обязательный параметр

      Человекочитаемое описание.

      Минимальная длина: 1

    • spec.descriptionRu
      строка
      Человекочитаемое описание на русском языке.
    • spec.fields
      массив объектов
      Список полей, которые может содержать событие.
      • spec.fields.name
        строка
        Имя поля.

        Минимальная длина: 1

      • spec.fields.required
        булевый
        Признак обязательности поля.

        По умолчанию: true

    • spec.metadata
      объект
      Metadata related to the rule
    • spec.severity
      строка

      Обязательный параметр

      Критичность события.

      Допустимые значения: Low, Medium, High, Critical

    • spec.source
      строка

      Обязательный параметр

      Идентификатор источника.

      Минимальная длина: 1

  • status
    объект
    Current status of this resource.
    • status.conditions
      массив объектов
      Represents the latest available observations of an object’s state.
      • status.conditions.lastTransitionTime
        строка
      • status.conditions.message
        строка

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целое число
      • status.conditions.reason
        строка

        Длина: 1..1024

      • status.conditions.status
        строка

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка

        Максимальная длина: 316

    • status.observedGeneration
      целое число
      The generation observed by the controller.

SecurityEventLoggingTransformationRules

Короткие имена: seltr

Область: Namespaced
Версия: v1alpha1

  • spec
    объект
    Namespaced-правила для преобразования сырых строк логов в структурированные объекты (Vector events) перед дальнейшей обработкой.
    • spec.containers
      массив объектов

      Обязательный параметр

      Правила трансформации по контейнерам.
      • spec.containers.drop_raw
        булевый
        Если true — удаляет исходное «сырое» поле сообщения после парсинга.

        По умолчанию: false

      • spec.containers.fields
        массив объектов
        Необязательные преобразования типов полей после парсинга. Полезно для обеспечения стабильных типов для sinks (Elasticsearch/ClickHouse/и т.п.).
        • spec.containers.fields.name
          строка
          Имя поля в распарсенном объекте.

          Минимальная длина: 1

        • spec.containers.fields.type
          строка
          Целевой тип поля.

          Допустимые значения: String, Int, Float, Bool

      • spec.containers.name
        строка
        Имя контейнера, к которому применяется эта трансформация.

        Минимальная длина: 1

      • spec.containers.parser
        объект

        Конфигурация парсера, определяющая, как распаковать исходную строку лога.

        Разбор выполняется по следующим правилам:

        • разбор выполняется по возможности, поэтому ошибки и несовпадения не приводят к отбрасыванию событий;
        • для типов Regex и Grok используется первый успешно совпавший шаблон;
        • именованные группы записываются в .parsed_data.
        • spec.containers.parser.grok
          объект
          Конфигурация grok-парсера. Именованные поля сохраняются в .parsed_data.
          • spec.containers.parser.grok.customPatterns
            массив объектов
            Пользовательские определения grok-паттернов (имя -> regex). Добавляются к встроенным grok-паттернам.
            • spec.containers.parser.grok.customPatterns.key
              строка
            • spec.containers.parser.grok.customPatterns.value
              строка
          • spec.containers.parser.grok.patterns
            массив строк

            Обязательный параметр

            Список grok-шаблонов, применяемых по порядку. Используется первый успешно совпавший шаблон.
            • spec.containers.parser.grok.patterns.Элемент массива
              строка

              Минимальная длина: 1

        • spec.containers.parser.regex
          объект
          Конфигурация regex-парсера. В .parsed_data сохраняются только именованные группы.
          • spec.containers.parser.regex.patterns
            массив строк

            Обязательный параметр

            Список regex-шаблонов, применяемых по порядку. Используется первый успешно совпавший шаблон.
            • spec.containers.parser.regex.patterns.Элемент массива
              строка

              Минимальная длина: 1

        • spec.containers.parser.type
          строка

          Обязательный параметр

          Тип парсера.

          • JSON — разобрать исходную строку лога как JSON с помощью parse_json();
          • Regex — применить регулярные выражения и извлечь именованные группы;
          • Grok — применить grok-шаблоны и извлечь именованные поля.

          Допустимые значения: JSON, Regex, Grok

    • spec.selector
      объект

      Обязательный параметр

      Label selector подов.
      • spec.selector.matchExpressions
        массив объектов
        Список требований label selector.
        • spec.selector.matchExpressions.key
          строка
        • spec.selector.matchExpressions.operator
          строка

          Допустимые значения: In, NotIn, Exists, DoesNotExist

        • spec.selector.matchExpressions.values
          массив строк
      • spec.selector.matchLabels
        объект
        Карта «ключ метки → значение».
  • status
    объект
    Current status of this resource.
    • status.conditions
      массив объектов
      Represents the latest available observations of an object’s state.
      • status.conditions.lastTransitionTime
        строка
      • status.conditions.message
        строка

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целое число
      • status.conditions.reason
        строка

        Длина: 1..1024

      • status.conditions.status
        строка

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка

        Максимальная длина: 316

    • status.observedGeneration
      целое число
      The generation observed by the controller.