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

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

ClusterSecurityEventConfig

Short names: csec

Scope: Cluster
Version: v1alpha1

  • spec
    объект
    Определяет, какие источники включены и в какие назначения их нужно отправлять.
    • spec.cef
      объект
      Метаданные CEF (Common Event Format) по умолчанию для назначений с кодированием CEF. Эти значения используются, когда ClusterSecurityEventDestination имеет encoding.codec=CEF, но не указывает собственные cef.deviceVendor/deviceProduct/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//<source>
      • podSecurityEventShipper/<namespace>//<source>
      • spec.enabledSources.Элемент массива
        строка

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

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

      Если задано — включены только источники, подходящие под маски (glob). Если не задано — включены все источники. Маски используют ‘*’ для сопоставления любой подстроки (включая ‘/’). Нельзя одновременно задавать enabledSources и enabledSourcesMasks. Ожидаемый формат:

      • clusterSecurityEventShipper//<source>
      • podSecurityEventShipper/<namespace>//<source> Примеры:
      • 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

Short names: csed

Scope: Cluster
Version: v1alpha1

  • spec
    объект
    Описывает, куда отправлять события безопасности. Поля спроектированы так, чтобы транслироваться в deckhouse.io/log-shipper ClusterLogDestination.
    • spec.buffer
      объект
      Буфер для конкретного назначения gateway Vector sink. Переопределяет глобальные настройки gateway.buffer из значений модуля. Если не задано, используются глобальные настройки по умолчанию.
      • spec.buffer.maxEvents
        целочисленный
        Максимальное количество событий в буфере. Используется как вторичное ограничение для типа Memory. Игнорируется при type=Disk (дисковый буфер использует только maxSize).

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

      • 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. Если не задано, используются значения по умолчанию: vendor=Deckhouse, product=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, ES, Kafka и т. д.).
          • CEF — Common Event Format (подходит для интеграции с SIEM через Kafka, Vector, File, Console).

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

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

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

          Опциональная обёртка syslog-заголовком для вывода CEF. Применимо только при 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
            строка

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

            Имя Secret в namespace d8-security-events-manager, содержащего учётные данные. Secret должен содержать ключ 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
            строка

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

            Имя Secret в namespace d8-security-events-manager, содержащего учётные данные. Secret должен содержать ключ 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. Если не задано, используются значения по умолчанию: vendor=Deckhouse, product=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, ES, Kafka и т. д.).
          • CEF — Common Event Format (подходит для интеграции с SIEM через Kafka, Vector, File, Console).

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

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

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

          Опциональная обёртка syslog-заголовком для вывода CEF. Применимо только при codec=CEF.

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

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

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

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

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

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

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

      • spec.kafka.encoding
        объект
        Формат кодирования событий, отправляемых в это назначение Kafka. По умолчанию JSON. Установите codec в CEF для отправки событий в формате Common Event Format (требуется CEF-совместимый SIEM на принимающей стороне).
        • spec.kafka.encoding.cef
          объект
          Поля конфигурации CEF. Применимо только при codec=CEF. Если не задано, используются значения по умолчанию: vendor=Deckhouse, product=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, ES, Kafka и т. д.).
          • CEF — Common Event Format (подходит для интеграции с SIEM через Kafka, Vector, File, Console).

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

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

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

          Опциональная обёртка syslog-заголовком для вывода CEF. Применимо только при 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
            строка

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

            Имя Secret в namespace d8-security-events-manager, содержащего учётные данные. Secret должен содержать ключ 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
            строка

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

            Имя Secret в namespace d8-security-events-manager, содержащего учётные данные. Secret должен содержать ключ 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
            строка

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

            Имя Secret в namespace d8-security-events-manager, содержащего учётные данные. Secret должен содержать ключ 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. Если не задано, используются значения по умолчанию: vendor=Deckhouse, product=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, ES, Kafka и т. д.).
          • CEF — Common Event Format (подходит для интеграции с SIEM через Kafka, Vector, File, Console).

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

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

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

          Опциональная обёртка syslog-заголовком для вывода CEF. Применимо только при codec=CEF.

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

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

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

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

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

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

        • TCP: потоковый, надёжный, поддерживает TLS. Рекомендуется для production 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
          строка

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

          Имя Secret в namespace d8-security-events-manager, содержащего учётные данные. Secret должен содержать ключ value в поле data.
    • spec.type
      строка

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

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

    • spec.vector
      объект
      • spec.vector.encoding
        объект
        Формат кодирования событий, отправляемых в это назначение Vector. По умолчанию JSON. Установите codec в CEF для отправки событий в формате Common Event Format.
        • spec.vector.encoding.cef
          объект
          Поля конфигурации CEF. Применимо только при codec=CEF. Если не задано, используются значения по умолчанию: vendor=Deckhouse, product=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, ES, Kafka и т. д.).
          • CEF — Common Event Format (подходит для интеграции с SIEM через Kafka, Vector, File, Console).

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

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

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

          Опциональная обёртка syslog-заголовком для вывода CEF. Применимо только при 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

Short names: csep

Scope: Cluster
Version: v1alpha1

  • spec
    объект

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

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

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

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

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

      Описывает входные аргументы (query-параметры), которые принимает плагин. Каждый аргумент имеет имя, признак обязательности и описание.

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

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

      • spec.args.description
        строка
        Человекочитаемое описание аргумента.
      • spec.args.name
        строка
        Имя аргумента (используется как ключ query-параметра).
      • spec.args.required
        булевый
        Признак обязательности аргумента в ShipperEnrichRule.

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

    • spec.description
      строка
      Человекочитаемое описание плагина.
    • spec.endpoint
      объект
      Конфигурация HTTP-эндпоинта. Обязательно для External-плагинов. Игнорируется для Internal-плагинов (URL сайдкара используется автоматически).
      • spec.endpoint.headers
        массив объектов
        Опциональные статические HTTP-заголовки, отправляемые с каждым запросом.
        • spec.endpoint.headers.name
          строка
        • 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 enrichment-эндпоинта. Контроллер генерирует: GET <url>?<args как query-параметры>. Должен начинаться с http:// или https://. Не должен ссылаться на облачные metadata-эндпоинты (например, 169.254.x.x) или link-local адреса для защиты от SSRF.
    • 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
          строка
          Имя поля в ответе.
        • spec.returns.fields.type
          строка
          Тип поля.

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

    • spec.type
      строка

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

      Тип плагина.

      • Internal — обслуживается встроенным сайдкаром enrichment-cache (endpoint не нужен).
      • 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

Short names: cseltr

Scope: Cluster
Version: v1alpha1

  • spec
    объект

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

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

    • spec.file
      объект

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

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

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

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

        Точные пути к файлам для матчинга.
      • spec.file.transform
        объект

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

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

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

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

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

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

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

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

          Семантика:

          • best-effort (ошибки/несовпадения не приводят к drop событий)
          • для Regex/Grok используется первый успешно совпавший шаблон
          • именованные captures записываются в .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.regex
            объект
            Конфигурация regex-парсера. В .parsed_data сохраняются только именованные группы.
            • spec.file.transform.parser.regex.patterns
              массив строк

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

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

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

            Тип парсера.

            • JSON: распарсить строку как JSON (parse_json()).
            • Regex: применить 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
            строка
            Имя поля в распарсенном объекте.
          • spec.kubernetesPods.containers.fields.type
            строка
            Целевой тип поля.

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

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

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

          Семантика:

          • best-effort (ошибки/несовпадения не приводят к drop событий)
          • для Regex/Grok используется первый успешно совпавший шаблон
          • именованные captures записываются в .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.regex
            объект
            Конфигурация regex-парсера. В .parsed_data сохраняются только именованные группы.
            • spec.kubernetesPods.containers.parser.regex.patterns
              массив строк

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

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

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

            Тип парсера.

            • JSON: распарсить строку как JSON (parse_json()).
            • Regex: применить 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

Short names: cses

Scope: Cluster
Version: 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
          строка
          Неймспейс, из которого собирать логи подов.
        • 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
          строка
          Имя поля в распарсенном объекте.
        • spec.parser.fields.type
          строка
          Целевой тип поля.

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

      • spec.parser.name
        строка
        Имя контейнера (или file для file input).
      • 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.regex
          объект
          • spec.parser.parser.regex.patterns
            массив строк

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

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

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

          Тип парсера.

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

    • spec.parserRef
      строка

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

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

    • 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). Ссылается на существующий CR ClusterSecurityEventEnrichmentPlugin по его metadata.name.

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

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

          Пользователи могут создавать External CR ClusterSecurityEventEnrichmentPlugin для регистрации собственных enrichment-эндпоинтов.

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

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

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

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

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

      • spec.produces.eventCode
        строка
        Код события (ссылка на SecurityEventDefinition.spec.code).
      • 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.
        • 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
        массив объектов
        Дефолтные 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). Ссылается на существующий CR ClusterSecurityEventEnrichmentPlugin по его metadata.name.

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

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

          Пользователи могут создавать External CR ClusterSecurityEventEnrichmentPlugin для регистрации собственных enrichment-эндпоинтов.

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

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

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

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

          Для источника Plugin: имя поля в JSON-ответе плагина, значение которого будет записано в target. Должно совпадать с одним из returns.fields[].name, объявленных в соответствующем CR 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).
  • 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

Short names: pses

Scope: Namespaced
Version: 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
          строка
          Имя поля в распарсенном объекте.
        • spec.parser.fields.type
          строка
          Целевой тип поля.

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

      • spec.parser.name
        строка
        Имя контейнера.
      • 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.regex
          объект
          Конфигурация regex-парсера.
          • spec.parser.parser.regex.patterns
            массив строк

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

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

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

          Тип парсера.

          • JSON: распарсить строку как JSON.
          • Regex: применить regex-шаблоны и извлечь именованные группы.
          • Grok: применить grok-шаблоны и извлечь именованные поля.

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

    • spec.parserRef
      строка

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

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

    • 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). Ссылается на существующий CR ClusterSecurityEventEnrichmentPlugin по его metadata.name.

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

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

          Пользователи могут создавать External CR ClusterSecurityEventEnrichmentPlugin для регистрации собственных enrichment-эндпоинтов.

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

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

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

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

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

      • spec.produces.eventCode
        строка
        Код события (ссылка на SecurityEventDefinition.spec.code).
      • 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.
        • 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
        массив объектов
        Дефолтные 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). Ссылается на существующий CR ClusterSecurityEventEnrichmentPlugin по его metadata.name.

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

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

          Пользователи могут создавать External CR ClusterSecurityEventEnrichmentPlugin для регистрации собственных enrichment-эндпоинтов.

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

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

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

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

          Для источника Plugin: имя поля в JSON-ответе плагина, значение которого будет записано в target. Должно совпадать с одним из returns.fields[].name, объявленных в соответствующем CR 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).
  • 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

Scope: Cluster
Version: 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

Short names: sed

Scope: Cluster
Version: v1alpha1

  • spec
    объект
    Описывает возможное событие безопасности.
    • spec.category
      строка

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

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

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

    • spec.code
      строка

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

      Код события.
    • spec.description
      строка

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

      Человекочитаемое описание.
    • spec.descriptionRu
      строка
      Человекочитаемое описание на русском языке.
    • spec.fields
      массив объектов
      Список полей, которые может содержать событие.
      • spec.fields.name
        строка
        Имя поля.
      • spec.fields.required
        булевый
        Признак обязательности поля.

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

    • spec.metadata
      объект
      Metadata related to the rule
    • spec.severity
      строка

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

      Критичность события.

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

    • spec.source
      строка

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

      Идентификатор источника.
  • 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

Short names: seltr

Scope: Namespaced
Version: v1alpha1

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

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

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

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

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

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

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

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

        Семантика:

        • best-effort (ошибки/несовпадения не приводят к drop событий)
        • для Regex/Grok используется первый успешно совпавший шаблон
        • именованные captures записываются в .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.regex
          объект
          Конфигурация regex-парсера. В .parsed_data сохраняются только именованные группы.
          • spec.containers.parser.regex.patterns
            массив строк

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

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

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

          Тип парсера.

          • JSON: распарсить строку как JSON (parse_json()).
          • Regex: применить 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.