Стадия жизненного цикла модуля: 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/[^/]+/[^/]+/[^/]+)$
- clusterSecurityEventShipper/
-
массив строкspec.enabledSourcesMasks
Если задано — включены только источники, подходящие под маски (glob). Если не задано — включены все источники. Маски используют ‘*’ для сопоставления любой подстроки (включая ‘/’). Нельзя одновременно задавать enabledSources и enabledSourcesMasks. Ожидаемый формат:
- clusterSecurityEventShipper/
/<source> - podSecurityEventShipper/<namespace>/
/<source> Примеры: - podSecurityEventShipper/*
- clusterSecurityEventShipper/kube-audit/*
-
строкаspec.enabledSourcesMasks.Элемент массива
Шаблон:
^(clusterSecurityEventShipper/.+|podSecurityEventShipper/.+)$
- clusterSecurityEventShipper/
-
-
объектstatusCurrent status of this resource.
-
массив объектовstatus.conditionsRepresents 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.observedGenerationThe 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 в namespaced8-security-events-manager, содержащего учётные данные. Secret должен содержать ключvalueв полеdata.
-
-
строкаspec.elasticsearch.auth.strategy
По умолчанию:
NoneДопустимые значения:
None,Bearer,Basic -
строкаspec.elasticsearch.auth.tokenBearer-токен для аутентификации. Рекомендуется использовать
tokenSecretRefвместо хранения секрета в спецификации CR. -
объектspec.elasticsearch.auth.tokenSecretRef
-
строкаspec.elasticsearch.auth.tokenSecretRef.name
Обязательный параметр
Имя Secret в namespaced8-security-events-manager, содержащего учётные данные. Secret должен содержать ключvalueв полеdata.
-
-
строкаspec.elasticsearch.auth.username
-
-
строкаspec.elasticsearch.endpoint
Обязательный параметр
-
строкаspec.elasticsearch.index
-
объектspec.elasticsearch.tls
-
строкаspec.elasticsearch.tls.caBase64-строка 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 в namespaced8-security-events-manager, содержащего учётные данные. Secret должен содержать ключvalueв полеdata.
-
-
строкаspec.kafka.sasl.username
-
-
объектspec.kafka.tls
-
строкаspec.kafka.tls.caBase64-строка 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 в namespaced8-security-events-manager, содержащего учётные данные. Secret должен содержать ключvalueв полеdata.
-
-
строкаspec.loki.auth.strategy
По умолчанию:
NoneДопустимые значения:
None,Bearer,Basic -
строкаspec.loki.auth.tokenBearer-токен для аутентификации. Рекомендуется использовать
tokenSecretRefвместо хранения секрета в спецификации CR. -
объектspec.loki.auth.tokenSecretRef
-
строкаspec.loki.auth.tokenSecretRef.name
Обязательный параметр
Имя Secret в namespaced8-security-events-manager, содержащего учётные данные. Secret должен содержать ключvalueв полеdata.
-
-
строкаspec.loki.auth.username
-
-
строкаspec.loki.endpoint
Обязательный параметр
-
объектspec.loki.tls
-
строкаspec.loki.tls.caBase64-строка 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.caBase64-строка PEM (цепочка CA) для проверки сертификата сервера назначения.
-
булевыйspec.socket.tls.verifyCertificate
По умолчанию:
true -
булевыйspec.socket.tls.verifyHostname
По умолчанию:
true
-
-
-
объектspec.splunkHEC
-
строкаspec.splunkHEC.endpoint
Обязательный параметр
-
объектspec.splunkHEC.tls
-
строкаspec.splunkHEC.tls.caBase64-строка 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 в namespaced8-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.caBase64-строка 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.tlsTLS-конфигурация для 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.pathHTTP-путь для проверки (добавляется к 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
-
-
объектstatusCurrent status of this resource.
-
массив объектовstatus.conditionsRepresents 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.observedGenerationThe 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
-
-
объектstatusCurrent status of this resource.
-
массив объектовstatus.conditionsRepresents 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.observedGenerationThe 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).
- По имени пода: args
k8s-nodeuser-info: разрешение имени статического пользователя (nodeusers.deckhouse.io) по uid. Arguid(разрешает metadata.name объекта NodeUser, совпадающего по spec.uid).
Enrich применяется после
transform, поэтому перезаписываетtransformпри конфликте целевого поля.-
массив объектовspec.produces.enrich.args
Аргументы плагина как пары ключ/значение. Ключ (
key) должен совпадать с именем аргумента, объявленным в соответствующем CRClusterSecurityEventEnrichmentPlugin(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). Ссылается на существующий CRClusterSecurityEventEnrichmentPluginпо егоmetadata.name.Встроенные Internal-плагины, поставляемые с модулем:
k8s-pod-info— разрешение полей пода по имени пода + namespace.k8s-container-info— разрешение полей пода по container runtime ID.k8s-nodeuser-info— разрешение имени статического пользователя (nodeusers.deckhouse.io) по uid.
Пользователи могут создавать
ExternalCRClusterSecurityEventEnrichmentPluginдля регистрации собственных 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, объявленных в соответствующем CRClusterSecurityEventEnrichmentPlugin. Например: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
Обязательный параметр
Имя поля для фильтрации (как в ClusterLoggingConfiglabelFilter.field). Типичные значения:message,file,namespace. -
строкаspec.produces.extract.operator
Обязательный параметр
Оператор сравнения поля (как в ClusterLoggingConfiglabelFilter.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) должен совпадать с именем аргумента, объявленным в соответствующем CRClusterSecurityEventEnrichmentPlugin(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). Ссылается на существующий CRClusterSecurityEventEnrichmentPluginпо егоmetadata.name.Встроенные Internal-плагины, поставляемые с модулем:
k8s-pod-info— разрешение полей пода по имени пода + namespace.k8s-container-info— разрешение полей пода по container runtime ID.k8s-nodeuser-info— разрешение имени статического пользователя (nodeusers.deckhouse.io) по uid.
Пользователи могут создавать
ExternalCRClusterSecurityEventEnrichmentPluginдля регистрации собственных 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, объявленных в соответствующем CRClusterSecurityEventEnrichmentPlugin. Например: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).
-
-
объектstatusCurrent status of this resource.
-
массив объектовstatus.conditionsRepresents 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.observedGenerationThe generation observed by the controller.
-
PodSecurityEventShipper
Short names: pses
Scope: Namespaced
Version: v1alpha1
-
массив объектовspecNamespaced пайплайны для извлечения событий безопасности из логов подов этого неймспейса. Неймспейс подразумевается и равен неймспейсу ресурса
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).
- По имени пода: args
k8s-nodeuser-info: разрешение имени статического пользователя (nodeusers.deckhouse.io) по uid. Arguid(разрешает metadata.name объекта NodeUser, совпадающего по spec.uid).
Enrich применяется после
transform, поэтому перезаписываетtransformпри конфликте целевого поля.-
массив объектовspec.produces.enrich.args
Аргументы плагина как пары ключ/значение. Ключ (
key) должен совпадать с именем аргумента, объявленным в соответствующем CRClusterSecurityEventEnrichmentPlugin(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). Ссылается на существующий CRClusterSecurityEventEnrichmentPluginпо егоmetadata.name.Встроенные Internal-плагины, поставляемые с модулем:
k8s-pod-info— разрешение полей пода по имени пода + namespace.k8s-container-info— разрешение полей пода по container runtime ID.k8s-nodeuser-info— разрешение имени статического пользователя (nodeusers.deckhouse.io) по uid.
Пользователи могут создавать
ExternalCRClusterSecurityEventEnrichmentPluginдля регистрации собственных 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, объявленных в соответствующем CRClusterSecurityEventEnrichmentPlugin. Например: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
Обязательный параметр
Имя поля для фильтрации (как в PodLoggingConfiglabelFilter.field). Типичные значения:message,container,namespace. -
строкаspec.produces.extract.operator
Обязательный параметр
Оператор сравнения поля (как в PodLoggingConfiglabelFilter.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) должен совпадать с именем аргумента, объявленным в соответствующем CRClusterSecurityEventEnrichmentPlugin(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). Ссылается на существующий CRClusterSecurityEventEnrichmentPluginпо егоmetadata.name.Встроенные Internal-плагины, поставляемые с модулем:
k8s-pod-info— разрешение полей пода по имени пода + namespace.k8s-container-info— разрешение полей пода по container runtime ID.k8s-nodeuser-info— разрешение имени статического пользователя (nodeusers.deckhouse.io) по uid.
Пользователи могут создавать
ExternalCRClusterSecurityEventEnrichmentPluginдля регистрации собственных 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, объявленных в соответствующем CRClusterSecurityEventEnrichmentPlugin. Например: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).
-
-
объектstatusCurrent status of this resource.
-
массив объектовstatus.conditionsRepresents 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.observedGenerationThe 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.namespaceNamespace объекта.
-
строка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.metadataMetadata related to the rule
-
строкаspec.severity
Обязательный параметр
Критичность события.Допустимые значения:
Low,Medium,High,Critical -
строкаspec.source
Обязательный параметр
Идентификатор источника.
-
-
объектstatusCurrent status of this resource.
-
массив объектовstatus.conditionsRepresents 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.observedGenerationThe generation observed by the controller.
-
SecurityEventLoggingTransformationRules
Short names: seltr
Scope: Namespaced
Version: v1alpha1
-
объектspecNamespaced-правила для преобразования сырых строк логов в структурированные объекты (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Карта «ключ метки → значение».
-
-
-
объектstatusCurrent status of this resource.
-
массив объектовstatus.conditionsRepresents 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.observedGenerationThe generation observed by the controller.
-