Стадия жизненного цикла модуля: Экспериментальная версия
У модуля есть требования для установки
Перед включением модуля необходимо разрешить использование экспериментальных модулей в ModuleConfig deckhouse. Для этого установите параметр allowExperimentalModules в true.
Deckhouse Platform устанавливает CRD, но не удаляет их при отключении модуля. Если вам больше не нужны созданные CRD, удалите их.
ClusterSecurityEventAlertRule
Короткие имена: csear
Область: Cluster
Версия: v1alpha1
-
объектspec
Превращает закономерность в событиях безопасности в алерт Prometheus.
Правило ищет закономерность в собранных событиях безопасности, например «один инициатор прочитал больше 20 секретов за 5 минут», и вызывает именованный алерт, как только закономерность обнаружена. Закономерность описывается запросом LogQL и вычисляется относительно Loki кластера, поэтому для работы любого правила должен быть включён destination
cluster-loki.Правила объединяются в группы. На вычисление группа не влияет: каждое правило вычисляется само по себе, независимо от остальных правил своей группы.
Сработавшее правило вызывает алерт
D8SecurityEventAlertFiring, который доходит до оператора так же, как любой другой кластерный алерт: объектом ClusterAlert, в консоли и через штатную доставку алертов кластера. Доставку настраивать не требуется.Структура повторяет PrometheusRule: именованные группы, у каждой параметр
intervalи список правил с полямиalert,expr,for,labelsиannotations. Отличие в том, чтоexprзаписывается на LogQL, а не на PromQL.-
массив объектовspec.groups
Обязательный параметр
Список групп правил.
Группа состоит из имени и списка правил. На то, как и когда вычисляются её правила, группа не влияет и лишь держит связанные правила вместе. Та же структура, что и
spec.groupsу PrometheusRule.-
строкаspec.groups.interval
Как часто каждое правило этой группы вычисляется по Loki.
Цифры и
s,mилиh, например30s. Значение по умолчанию —30s.По умолчанию:
30sШаблон:
^[0-9]+(s|m|h)$ -
строкаspec.groups.name
Имя группы.
На вычисление не влияет и используется только в выводе
d8 k get -o yamlи в логах, чтобы опознать группу.Длина:
1..253 -
массив объектовspec.groups.rulesПравила алертинга в этой группе.
-
объектspec.groups.rules.aggregation
Параметры подсчёта для правила.
События группируются по
groupBy, и алерт срабатывает, как только группа достигаетthresholdв пределахwindow. Окно скользящее: оно пересчитывается по сохранённым в Loki логам при каждом вычислении, а не хранится как состояние счётчика.Требует
match, поскольку правило на основеexprвыражает группировку и порог в самом запросе. Безaggregationправило на основеmatchсрабатывает на каждое подходящее событие.-
массив строкspec.groups.rules.aggregation.groupBy
Обязательный параметр
Поля события, определяющие группу.
Значения этих полей становятся лейблами алерта, поэтому перечень допустимых полей ограничен атрибутами с низкой кардинальностью. Например, имя объекта в качестве ключа привело бы к отдельной группе на каждое событие, неограниченному росту потребления ресурсов и перегрузке приёмника уведомлений.
-
строкаspec.groups.rules.aggregation.groupBy.Элемент массива
Поле события для группировки.
Каждое значение названо по полю, которое оно читает в LogQL:
EventCodeчитаетevent_code;EventSeverityчитаетevent_severity;EventCategoryчитаетevent_category;SourceComponentчитаетsource_component;ActorIDчитаетactor_id;ActorSourceIPчитаетactor_sourceIP;ObjectNamespaceчитаетobject_namespace;ObjectTypeчитаетobject_type.
Допустимые значения:
EventCode,EventSeverity,EventCategory,SourceComponent,ActorID,ActorSourceIP,ObjectNamespace,ObjectType
-
-
целое числоspec.groups.rules.aggregation.threshold
Обязательный параметр
Количество событий в группе, при котором срабатывает алерт.
Чтобы алерт появлялся на каждое событие, используйте правило без блока
aggregation.Допустимые значения:
2 <= X -
строкаspec.groups.rules.aggregation.window
Обязательный параметр
Интервал, в течение которого группа продолжает считать, прежде чем будет забыта.
Цифры и
s,mилиh, например5m. Выбирайте интервал, за который происходит описываемое поведение: минуты для перебора, часы для медленного обхода.Шаблон:
^[0-9]+(s|m|h)$
-
-
строкаspec.groups.rules.alert
Короткое имя того, что обнаруживает правило, например
MassSecretAccess.Имя опознаёт правило в лейбле
alertпроизводимой метрики, в логах и в статусе самого правила. Аналог поляalertу PrometheusRule.Максимальная длина:
253Шаблон:
^[A-Za-z][A-Za-z0-9_]*$ -
объектspec.groups.rules.annotations
Текст, показываемый рядом с алертом после срабатывания.
В отличие от лейблов, аннотации не идентифицируют алерт и предназначены для чтения человеком. Поле обязательное: каждое правило должно указать в
summary, что именно оно обнаружило, и этот текст попадает в сработавший алерт.Значение может цитировать данные, вызвавшие срабатывание, так же, как Prometheus шаблонизирует аннотации у PrometheusRule. Используйте
{{ $labels.<ИМЯ> }}для одного из лейблов, по которым группировалexpr, и{{ $value }}для числа, которое произвёлexpr, например{{ $labels.actor_id }} read secrets {{ $value }} times.Отрендеренный текст передаётся лейблом firing-метрики, поэтому каждое новое значение становится отдельной серией в Prometheus на весь период хранения. В правиле, где счётчик меняется при каждом вычислении,
{{ $value }}добавляет серию за интервал. Предпочитайте{{ $labels.<ИМЯ> }}: он остаётся стабильным, пока существует группа.-
строкаspec.groups.rules.annotations.description
Подробное описание, показываемое в аннотации
descriptionалерта.Укажите, что и где проверить, как это делается в рантбуке.
Максимальная длина:
4096 -
строкаspec.groups.rules.annotations.summary
Обязательный параметр
Краткое однострочное описание, показываемое в аннотацииsummaryалерта, напримерОдин инициатор прочитал необычно много секретов.Максимальная длина:
512
-
-
строкаspec.groups.rules.expr
LogQL-запрос, определяющий, срабатывает ли правило.
У каждого правила задано ровно одно из полей
exprиmatch. Используйтеexpr, когда структурированные поляmatchне выражают нужное условие.Запрос должен быть запросом метрики, то есть возвращать число, а не список строк лога, и включать само сравнение. Например:
sum by (actor_id) ( count_over_time({source_component="kube-audit", event_code="K8S_SECRET_ACCESSED", actor_id!=""} [5m]) ) > 20Приведённый запрос состоит из следующих частей:
{source_component="kube-audit", ...}выбирает потоки логов, в которых идёт поиск;count_over_time(...[5m])считает подходящие строки за последние 5 минут;sum by (actor_id)ведёт отдельный счётчик для каждого инициатора, а не суммирует события всех;> 20— само условие: правило срабатывает, как только счётчик любого инициатора превышает 20.
Дальнейшая обработка числа не требуется: достижение заданного в запросе порога и есть срабатывание.
Каждое поле, перечисленное в
sum by (...)или в аналогичной агрегации, становится лейблом результирующего алерта. Держите этот список коротким и ограниченным полями с ограниченным набором значений, как описано в разделе об особенностях написания правил на странице примеров.Аналог поля
exprу PrometheusRule, записанный на LogQL, а не на PromQL.Длина:
1..8192 -
строкаspec.groups.rules.for
Интервал, в течение которого
exprдолжен непрерывно оставаться истинным, прежде чем правило сработает.Поле отсекает разовые всплески: с
for: 5mвсплеск, который длится пару минут и затем прекращается, не вызывает срабатывания правила.Цифры и
s,mилиh, например5m. Значение по умолчанию —0s: правило срабатывает на первом же совпаденииexpr, без периода ожидания.Семантика pending и firing та же, что и у поля
forу PrometheusRule, с одним отличием. Алерт группы остаётся активным пять минут после последнего срабатывания, поэтому группа, которая снова совпала за это время, продолжает срабатывать без повторного ожиданияfor.По умолчанию:
0sШаблон:
^[0-9]+(s|m|h)$ -
объектspec.groups.rules.labels
Дополнительные лейблы алерта.
Они добавляются к
rule,alert,severity_levelи полям, по которым группируетexpr. Лейблы идентифицируют алерт: два алерта с одинаковыми лейблами — это один и тот же алерт. -
объектspec.groups.rules.match
События безопасности, к которым применяется правило.
Критерии объединяются по И.
У каждого правила задано ровно одно из полей
exprиmatch. Поляmatchиaggregationкомпилируются в тот же LogQL-запрос, который мог бы быть записан вexpr, то есть являются формой для составления такого запроса, а не отдельным путём вычисления. Используйтеexprнапрямую, когда правилу требуется поле, которое эта форма не покрывает, или фильтр строки более специфичный, чем точное совпадение или совпадение по маске.-
строкаspec.groups.rules.match.actorType
Вид субъекта, до которого сужается правило.
ServiceAccountsоставляет только инициаторов, совпадающих сsystem:serviceaccount:*.NonServiceAccountsоставляет всех остальных и применяется в правилах про людей и прочих внешних клиентов. Повторяет фильтр «Тип субъекта» в консоли.По умолчанию:
AnyДопустимые значения:
Any,ServiceAccounts,NonServiceAccounts -
массив строкspec.groups.rules.match.actors
Инициаторы, события которых учитываются.
Значения сравниваются с
actor_idтак же, как вexcludeActors:*— любая последовательность символов, остальное трактуется буквально.Используйте это поле, чтобы следить за конкретным субъектом, например за ServiceAccount, который не должен менять секреты.
-
строкаspec.groups.rules.match.actors.Элемент массива
Максимальная длина:
253
-
-
массив строкspec.groups.rules.match.categoriesКатегории событий, как они объявлены в
spec.categoryресурса SecurityEventDefinition.-
строкаspec.groups.rules.match.categories.Элемент массива
Допустимые значения:
Auth,Config,Network,Rbac,Runtime
-
-
массив строкspec.groups.rules.match.eventCodesКоды событий, как они объявлены в SecurityEventDefinition.
-
строкаspec.groups.rules.match.eventCodes.Элемент массиваНапример,
K8S_SECRET_ACCESSED.Шаблон:
^[A-Z][A-Z0-9_]*$
-
-
массив строкspec.groups.rules.match.excludeActors
Инициаторы, события которых правило игнорирует.
Значения сравниваются с
actor_id:*— любая последовательность символов, остальное трактуется буквально.Основную рутинную активность создают компоненты платформы. На простаивающем кластере один только ServiceAccount Deckhouse даёт тысячи чтений секретов в час, поэтому правило про людей и приложения должно их исключать. Типичный список:
excludeActors: - "system:serviceaccount:d8-*" - "system:serviceaccount:kube-system:*" - "system:node:*" - "system:apiserver"-
строкаspec.groups.rules.match.excludeActors.Элемент массива
Максимальная длина:
253
-
-
булевыйspec.groups.rules.match.excludeSystemActors
Игнорировать ли события, порождённые самой платформой.
При штатной работе кластер непрерывно обращается к секретам, RBAC и подам. На простаивающем кластере один ServiceAccount Deckhouse дал 2617 из 2812 чтений секретов за час, и на этом фоне правило, касающееся людей и приложений, становится статистически незначимым.
Список поддерживает модуль, и он совпадает с фильтром «Исключить системные» в консоли, поэтому интерфейс и правило убирают из поля зрения одни и те же события. Список покрывает
actor_id, совпадающие сsystem:serviceaccount:kube-system:*,system:serviceaccount:d8-*,system:node:*,system:kube-*,system:apiserverиkubernetes-admin.Из потока событий ничего не удаляется: события по-прежнему собираются и доставляются и лишь перестают учитываться. События без инициатора сохраняются, а анонимные и неаутентифицированные личности системными инициаторами не считаются никогда, поскольку именно их правило безопасности и ищет.
По умолчанию:
true -
строкаspec.groups.rules.match.severityMinМинимальная критичность события (включительно).
Допустимые значения:
Low,Medium,High,Critical -
массив строкspec.groups.rules.match.sourcesКомпоненты-источники, как они объявлены в
spec.sourceресурса SecurityEventDefinition, напримерkube-audit.-
строкаspec.groups.rules.match.sources.Элемент массива
Максимальная длина:
253
-
-
-
строкаspec.groups.rules.mode
В какой из двух форм записано правило.
Expr— условие задано запросом LogQL, написанным вручную вexpr.Match— условие собрано из структурированных полейmatch, при необходимости с подсчётом черезaggregation.Поле явно указывает то, что и так следует из наличия
exprилиmatch, и обязано с ним совпадать. Оно нужно, чтобы и читатель манифеста, и веб-интерфейс платформы понимали форму правила, не разбирая, какой блок заполнен: интерфейс показывает поля только выбранного режима, а вторую форму скрывает целиком.Допустимые значения:
Expr,Match -
целое числоspec.groups.rules.severityLevel
Уровень критичности DKP, отправляемый в лейбле
severity_level.На кластерах с включённым параметром
update.blockOnAlertsв модулеdeckhouseалерт с уровнем не выше настроенного порога (по умолчанию 4) блокирует применение релизов DKP.По умолчанию:
6Допустимые значения:
0 <= X <= 9
-
-
-
-
объект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.
-
ClusterSecurityEventConfig
Короткие имена: csec
Область: Cluster
Версия: v1alpha1
-
объектspecОпределяет, какие источники включены и в какие назначения они отправляются.
-
объектspec.cef
Метаданные CEF (Common Event Format) по умолчанию для назначений с кодированием CEF.
Эти значения используются, когда у ClusterSecurityEventDestination параметр
encoding.codecравенCEF, но не заданы собственныеcef.deviceVendor,cef.deviceProduct,cef.deviceVersionиcef.version.-
строкаspec.cef.deviceProduct
Поле device product по умолчанию для заголовка CEF.
Применяется к назначению, в котором не задан собственный
encoding.cef.deviceProduct. Если параметр не задан, используетсяsecurity-events-manager.Максимальная длина:
63 -
строкаspec.cef.deviceVendor
Поле device vendor по умолчанию для заголовка CEF.
Применяется к назначению, в котором не задан собственный
encoding.cef.deviceVendor. Если параметр не задан, используетсяDeckhouse.Максимальная длина:
63 -
строкаspec.cef.deviceVersion
Поле device version по умолчанию для заголовка CEF. Это четвёртое поле заголовка CEF, оно не связано с
version, который выбирает формат префиксаCEF:.Применяется к назначению, в котором не задан собственный
encoding.cef.deviceVersion. Если параметр не задан, используется1.Максимальная длина:
63 -
строкаspec.cef.version
Версия формата CEF по умолчанию в префиксе
CEF:заголовка.Применяется к назначению, в котором не задан собственный
encoding.cef.version. Если параметр не задан, используетсяV0.Возможные значения:
V0— отправлять префиксCEF:0, используется по умолчанию и ожидается большинством SIEM;V1— отправлять префиксCEF:1.
Допустимые значения:
V0,V1
-
-
строкаspec.defaultSeverityThreshold
Обязательный параметр
Минимальная критичность для отправки (включительно).Допустимые значения:
Low,Medium,High,Critical -
массив строкspec.destinations
Обязательный параметр
Список имён ClusterSecurityEventDestination.-
строкаspec.destinations.Элемент массива
Максимальная длина:
253
-
-
массив строкspec.enabledSources
Включённые источники.
Если параметр не задан, включены все источники. Каждый элемент записывается в одном из следующих форматов:
clusterSecurityEventShipper/<ИМЯ ШИППЕРА>/<ИСТОЧНИК>;podSecurityEventShipper/<НЕЙМСПЕЙС>/<ИМЯ ШИППЕРА>/<ИСТОЧНИК>.
-
строкаspec.enabledSources.Элемент массива
Шаблон:
^(clusterSecurityEventShipper/[^/]+/[^/]+|podSecurityEventShipper/[^/]+/[^/]+/[^/]+)$
-
массив строкspec.enabledSourcesMasks
Glob-маски включённых источников.
Если параметр не задан, включены все источники. Символ
*в маске соответствует любой подстроке, включая/. ПараметрыenabledSourcesиenabledSourcesMasksвзаимно исключают друг друга.Каждая маска записывается в одном из следующих форматов:
clusterSecurityEventShipper/<ИМЯ ШИППЕРА>/<ИСТОЧНИК>;podSecurityEventShipper/<НЕЙМСПЕЙС>/<ИМЯ ШИППЕРА>/<ИСТОЧНИК>.
Например:
enabledSourcesMasks: - podSecurityEventShipper/* - clusterSecurityEventShipper/kube-audit/*-
строкаspec.enabledSourcesMasks.Элемент массива
Шаблон:
^(clusterSecurityEventShipper/.+|podSecurityEventShipper/.+)$
-
-
объект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
Короткие имена: csed
Область: Cluster
Версия: v1alpha1
-
объектspec
Описывает, куда отправлять события безопасности.
Поля спроектированы так, чтобы транслироваться в deckhouse.io/log-shipper ClusterLogDestination.
-
объектspec.buffer
Буфер для конкретного назначения gateway Vector sink.
Переопределяет глобальные настройки gateway.buffer из значений модуля. Если не задано, используются глобальные настройки по умолчанию.
-
целое числоspec.buffer.maxEvents
Максимальное количество событий в буфере.
Используется как вторичное ограничение для типа
Memory. Игнорируется приtype=Disk(дисковый буфер использует только maxSize).По умолчанию:
500Допустимые значения:
100 <= X -
строкаspec.buffer.maxSize
Максимальный размер буфера в формате Kubernetes quantity с обязательным суффиксом единицы измерения например
512Mi,1Giили256Mi.Числа без суффикса единицы измерения НЕ принимаются. Для
Disk: максимальное дисковое пространство на томе. ДляMemory: приблизительное ограничение памяти для кольцевого буфера.По умолчанию:
512MiШаблон:
^[0-9]+(\.[0-9]+)?(Ki|Mi|Gi|Ti|Pi|Ei|k|M|G|T|P|E)$ -
строкаspec.buffer.type
Тип буфера.
Возможные значения:
Disk— дисковый буфер на LevelDB. Переживает перезапуск процесса Vector в поде. Используется по умолчанию и гарантирует отсутствие потерь событий при временной недоступности назначения.Memory— буфер в оперативной памяти. Быстрее, но события из буфера теряются при рестарте процесса Vector. Используйте только для тестовых/dev-окружений.
По умолчанию:
DiskДопустимые значения:
Memory,Disk -
строкаspec.buffer.whenFull
Поведение при переполнении буфера.
Возможные значения:
Block— применять обратное давление к источнику. Пайплайн замедляется, но события не теряются. По умолчанию рекомендуется для событий безопасности.DropNewest— отбрасывать входящие события. Происходит потеря данных, но без обратного давления. Используйте только когда потеря данных допустима (тестовые окружения).
По умолчанию:
BlockДопустимые значения:
Block,DropNewest
-
-
объектspec.console
-
объектspec.console.encoding
Формат кодирования событий, выводимых в консоль.
По умолчанию
JSON. УстановитеcodecвCEFдля вывода событий в формате Common Event Format.-
объектspec.console.encoding.cef
Поля конфигурации CEF.
Применимо только при
codec=CEF. Все параметры блока необязательны и переопределяют одноимённые параметрыspec.cefClusterSecurityEventConfig. Параметр, не заданный ни там, ни там, принимает значениеdeviceVendor=Deckhouse,deviceProduct=security-events-manager,deviceVersion=1,version=V0.-
строкаspec.console.encoding.cef.deviceProduct
Поле device product в заголовке CEF.
Если параметр не задан, применяется
spec.cef.deviceProductиз ClusterSecurityEventConfig, а если не задан и он — используетсяsecurity-events-manager.Максимальная длина:
63 -
строкаspec.console.encoding.cef.deviceVendor
Поле device vendor в заголовке CEF.
Если параметр не задан, применяется
spec.cef.deviceVendorиз ClusterSecurityEventConfig, а если не задан и он — используетсяDeckhouse.Максимальная длина:
63 -
строкаspec.console.encoding.cef.deviceVersion
Поле device version в заголовке CEF.
Если параметр не задан, применяется
spec.cef.deviceVersionиз ClusterSecurityEventConfig, а если не задан и он — используется1.Максимальная длина:
63 -
строкаspec.console.encoding.cef.version
Версия формата CEF в префиксе
CEF:заголовка.Задайте значение, соответствующее формату, который разбирает принимающая SIEM. Если параметр не задан, применяется
spec.cef.versionиз ClusterSecurityEventConfig, а если не задан и он — используетсяV0.Возможные значения:
V0— отправлять префиксCEF:0, используется по умолчанию и ожидается большинством SIEM;V1— отправлять префиксCEF:1.
Допустимые значения:
V0,V1
-
-
строкаspec.console.encoding.codec
Кодек для назначения.
Возможные значения:
JSON— структурированный JSON, используется по умолчанию и подходит для Loki, Elasticsearch и Kafka;CEF— Common Event Format, подходит для интеграции с SIEM через Kafka, Vector, File, Console и Socket.
По умолчанию:
JSONДопустимые значения:
JSON,CEF -
строкаspec.console.encoding.syslogWrapper
Обёртка вывода CEF в syslog-заголовок.
Применимо только при
codec=CEF.Возможные значения:
None— отправлять CEF-строку без заголовка, используется по умолчанию;RFC3164— добавлять заголовок RFC 3164 (BSD syslog);RFC5424— добавлять заголовок RFC 5424 (IETF syslog).
По умолчанию:
NoneДопустимые значения:
None,RFC3164,RFC5424
-
-
строкаspec.console.target
По умолчанию:
StdoutДопустимые значения:
Stdout,Stderr
-
-
объектspec.elasticsearch
-
объектspec.elasticsearch.auth
-
строкаspec.elasticsearch.auth.password
Пароль для Basic-аутентификации.
Рекомендуется использовать
passwordSecretRefвместо хранения секрета в спецификации CR.Максимальная длина:
4096 -
объектspec.elasticsearch.auth.passwordSecretRef
-
строкаspec.elasticsearch.auth.passwordSecretRef.name
Обязательный параметр
Имя секрета в неймспейсе
d8-security-events-manager, содержащего учётные данные.Секрет должен содержать ключ
valueв полеdata.Максимальная длина:
253
-
-
строкаspec.elasticsearch.auth.strategy
По умолчанию:
NoneДопустимые значения:
None,Bearer,Basic -
строкаspec.elasticsearch.auth.token
Bearer-токен для аутентификации.
Рекомендуется использовать
tokenSecretRefвместо хранения секрета в спецификации CR.Максимальная длина:
4096 -
объектspec.elasticsearch.auth.tokenSecretRef
-
строкаspec.elasticsearch.auth.tokenSecretRef.name
Обязательный параметр
Имя секрета в неймспейсе
d8-security-events-manager, содержащего учётные данные.Секрет должен содержать ключ
valueв полеdata.Максимальная длина:
253
-
-
строкаspec.elasticsearch.auth.username
Максимальная длина:
4096
-
-
строкаspec.elasticsearch.endpoint
Обязательный параметр
Максимальная длина:
2048 -
строкаspec.elasticsearch.index
Максимальная длина:
253 -
объектspec.elasticsearch.tls
-
строкаspec.elasticsearch.tls.caBase64-строка PEM (цепочка CA) для проверки сертификата сервера назначения.
Максимальная длина:
32768 -
булевый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. Все параметры блока необязательны и переопределяют одноимённые параметрыspec.cefClusterSecurityEventConfig. Параметр, не заданный ни там, ни там, принимает значениеdeviceVendor=Deckhouse,deviceProduct=security-events-manager,deviceVersion=1,version=V0.-
строкаspec.file.encoding.cef.deviceProduct
Поле device product в заголовке CEF.
Если параметр не задан, применяется
spec.cef.deviceProductиз ClusterSecurityEventConfig, а если не задан и он — используетсяsecurity-events-manager.Максимальная длина:
63 -
строкаspec.file.encoding.cef.deviceVendor
Поле device vendor в заголовке CEF.
Если параметр не задан, применяется
spec.cef.deviceVendorиз ClusterSecurityEventConfig, а если не задан и он — используетсяDeckhouse.Максимальная длина:
63 -
строкаspec.file.encoding.cef.deviceVersion
Поле device version в заголовке CEF.
Если параметр не задан, применяется
spec.cef.deviceVersionиз ClusterSecurityEventConfig, а если не задан и он — используется1.Максимальная длина:
63 -
строкаspec.file.encoding.cef.version
Версия формата CEF в префиксе
CEF:заголовка.Задайте значение, соответствующее формату, который разбирает принимающая SIEM. Если параметр не задан, применяется
spec.cef.versionиз ClusterSecurityEventConfig, а если не задан и он — используетсяV0.Возможные значения:
V0— отправлять префиксCEF:0, используется по умолчанию и ожидается большинством SIEM;V1— отправлять префиксCEF:1.
Допустимые значения:
V0,V1
-
-
строкаspec.file.encoding.codec
Кодек для назначения.
Возможные значения:
JSON— структурированный JSON, используется по умолчанию и подходит для Loki, Elasticsearch и Kafka;CEF— Common Event Format, подходит для интеграции с SIEM через Kafka, Vector, File, Console и Socket.
По умолчанию:
JSONДопустимые значения:
JSON,CEF -
строкаspec.file.encoding.syslogWrapper
Обёртка вывода CEF в syslog-заголовок.
Применимо только при
codec=CEF.Возможные значения:
None— отправлять CEF-строку без заголовка, используется по умолчанию;RFC3164— добавлять заголовок RFC 3164 (BSD syslog);RFC5424— добавлять заголовок RFC 5424 (IETF syslog).
По умолчанию:
NoneДопустимые значения:
None,RFC3164,RFC5424
-
-
строкаspec.file.path
Обязательный параметр
Максимальная длина:
2048
-
-
объектspec.http
-
объектspec.http.auth
-
строкаspec.http.auth.password
Пароль для Basic-аутентификации.
Рекомендуется использовать
passwordSecretRefвместо хранения секрета в спецификации CR.Максимальная длина:
4096 -
объектspec.http.auth.passwordSecretRef
-
строкаspec.http.auth.passwordSecretRef.name
Обязательный параметр
Имя секрета в неймспейсе
d8-security-events-manager, содержащего учётные данные.Секрет должен содержать ключ
valueв полеdata.Максимальная длина:
253
-
-
строкаspec.http.auth.strategy
По умолчанию:
NoneДопустимые значения:
None,Bearer,Basic -
строкаspec.http.auth.token
Bearer-токен для аутентификации.
Рекомендуется использовать
tokenSecretRefвместо хранения секрета в спецификации CR.Максимальная длина:
4096 -
объектspec.http.auth.tokenSecretRef
-
строкаspec.http.auth.tokenSecretRef.name
Обязательный параметр
Имя секрета в неймспейсе
d8-security-events-manager, содержащего учётные данные.Секрет должен содержать ключ
valueв полеdata.Максимальная длина:
253
-
-
строкаspec.http.auth.username
Максимальная длина:
4096
-
-
строкаspec.http.endpoint
Обязательный параметр
Полный URL для отправки событий, включая путь, например
https://collector.example.com/api/ingest.События всегда отправляются методом POST.
Максимальная длина:
2048 -
строкаspec.http.framing
Способ размещения набора событий в теле запроса.
JSONArrayоборачивает набор в один JSON-массив — так читают приёмники, ожидающие один документ на запрос.NewlineDelimitedотправляет по одному JSON-объекту на строку (NDJSON), что подходит коллекторам, читающим поток записей.По умолчанию:
JSONArrayДопустимые значения:
JSONArray,NewlineDelimited -
объектspec.http.headers
Дополнительные заголовки запроса.
Заголовок
Authorizationзадаётся черезauthи здесь указываться не должен.Значения заголовков считаются секретами: приёмник нередко ожидает свой API-ключ в отдельном заголовке. Значения скрываются так же, как
auth.token, поэтому читайте их через субресурсclustersecurityeventdestinations/sensitive. -
объектspec.http.tls
-
строкаspec.http.tls.caBase64-строка PEM (цепочка CA) для проверки сертификата сервера назначения.
Максимальная длина:
32768 -
булевыйspec.http.tls.verifyCertificate
По умолчанию:
true -
булевыйspec.http.tls.verifyHostname
По умолчанию:
true
-
-
-
объектspec.kafka
-
массив строкspec.kafka.brokers
Обязательный параметр
-
строкаspec.kafka.brokers.Элемент массива
Максимальная длина:
259
-
-
объектspec.kafka.encoding
Формат кодирования событий, отправляемых в это назначение Kafka.
По умолчанию
JSON. УстановитеcodecвCEFдля отправки событий в формате Common Event Format (требуется CEF-совместимый SIEM на принимающей стороне).-
объектspec.kafka.encoding.cef
Поля конфигурации CEF.
Применимо только при
codec=CEF. Все параметры блока необязательны и переопределяют одноимённые параметрыspec.cefClusterSecurityEventConfig. Параметр, не заданный ни там, ни там, принимает значениеdeviceVendor=Deckhouse,deviceProduct=security-events-manager,deviceVersion=1,version=V0.-
строкаspec.kafka.encoding.cef.deviceProduct
Поле device product в заголовке CEF.
Если параметр не задан, применяется
spec.cef.deviceProductиз ClusterSecurityEventConfig, а если не задан и он — используетсяsecurity-events-manager.Максимальная длина:
63 -
строкаspec.kafka.encoding.cef.deviceVendor
Поле device vendor в заголовке CEF.
Если параметр не задан, применяется
spec.cef.deviceVendorиз ClusterSecurityEventConfig, а если не задан и он — используетсяDeckhouse.Максимальная длина:
63 -
строкаspec.kafka.encoding.cef.deviceVersion
Поле device version в заголовке CEF.
Если параметр не задан, применяется
spec.cef.deviceVersionиз ClusterSecurityEventConfig, а если не задан и он — используется1.Максимальная длина:
63 -
строкаspec.kafka.encoding.cef.version
Версия формата CEF в префиксе
CEF:заголовка.Задайте значение, соответствующее формату, который разбирает принимающая SIEM. Если параметр не задан, применяется
spec.cef.versionиз ClusterSecurityEventConfig, а если не задан и он — используетсяV0.Возможные значения:
V0— отправлять префиксCEF:0, используется по умолчанию и ожидается большинством SIEM;V1— отправлять префиксCEF:1.
Допустимые значения:
V0,V1
-
-
строкаspec.kafka.encoding.codec
Кодек для назначения.
Возможные значения:
JSON— структурированный JSON, используется по умолчанию и подходит для Loki, Elasticsearch и Kafka;CEF— Common Event Format, подходит для интеграции с SIEM через Kafka, Vector, File, Console и Socket.
По умолчанию:
JSONДопустимые значения:
JSON,CEF -
строкаspec.kafka.encoding.syslogWrapper
Обёртка вывода CEF в syslog-заголовок.
Применимо только при
codec=CEF.Возможные значения:
None— отправлять CEF-строку без заголовка, используется по умолчанию;RFC3164— добавлять заголовок RFC 3164 (BSD syslog);RFC5424— добавлять заголовок RFC 5424 (IETF syslog).
По умолчанию:
NoneДопустимые значения:
None,RFC3164,RFC5424
-
-
объектspec.kafka.sasl
-
строкаspec.kafka.sasl.mechanism
Допустимые значения:
Plain,SCRAM-SHA-256,SCRAM-SHA-512 -
строкаspec.kafka.sasl.password
Пароль SASL.
Рекомендуется использовать
passwordSecretRefвместо хранения секрета в спецификации CR.Максимальная длина:
4096 -
объектspec.kafka.sasl.passwordSecretRef
-
строкаspec.kafka.sasl.passwordSecretRef.name
Обязательный параметр
Имя секрета в неймспейсе
d8-security-events-manager, содержащего учётные данные.Секрет должен содержать ключ
valueв полеdata.Максимальная длина:
253
-
-
строкаspec.kafka.sasl.username
Максимальная длина:
4096
-
-
объектspec.kafka.tls
-
строкаspec.kafka.tls.caBase64-строка PEM (цепочка CA) для проверки сертификата сервера назначения.
Максимальная длина:
32768 -
булевыйspec.kafka.tls.verifyCertificate
По умолчанию:
true -
булевыйspec.kafka.tls.verifyHostname
По умолчанию:
true
-
-
строкаspec.kafka.topic
Обязательный параметр
Максимальная длина:
249
-
-
объектspec.loki
-
объектspec.loki.auth
-
строкаspec.loki.auth.password
Пароль для Basic-аутентификации.
Рекомендуется использовать
passwordSecretRefвместо хранения секрета в спецификации CR.Максимальная длина:
4096 -
объектspec.loki.auth.passwordSecretRef
-
строкаspec.loki.auth.passwordSecretRef.name
Обязательный параметр
Имя секрета в неймспейсе
d8-security-events-manager, содержащего учётные данные.Секрет должен содержать ключ
valueв полеdata.Максимальная длина:
253
-
-
строкаspec.loki.auth.strategy
По умолчанию:
NoneДопустимые значения:
None,Bearer,Basic -
строкаspec.loki.auth.token
Bearer-токен для аутентификации.
Рекомендуется использовать
tokenSecretRefвместо хранения секрета в спецификации CR.Максимальная длина:
4096 -
объектspec.loki.auth.tokenSecretRef
-
строкаspec.loki.auth.tokenSecretRef.name
Обязательный параметр
Имя секрета в неймспейсе
d8-security-events-manager, содержащего учётные данные.Секрет должен содержать ключ
valueв полеdata.Максимальная длина:
253
-
-
строкаspec.loki.auth.username
Максимальная длина:
4096
-
-
строкаspec.loki.endpoint
Обязательный параметр
Максимальная длина:
2048 -
объектspec.loki.tls
-
строкаspec.loki.tls.caBase64-строка PEM (цепочка CA) для проверки сертификата сервера назначения.
Максимальная длина:
32768 -
булевый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.
Максимальная длина:
2048 -
объектspec.socket.encoding
Формат кодирования событий, отправляемых в этот сокет.
По умолчанию
JSON. УстановитеcodecвCEFдля Common Event Format (основной use-case для syslog-интеграций с SIEM).-
объектspec.socket.encoding.cef
Поля конфигурации CEF.
Применимо только при
codec=CEF. Все параметры блока необязательны и переопределяют одноимённые параметрыspec.cefClusterSecurityEventConfig. Параметр, не заданный ни там, ни там, принимает значениеdeviceVendor=Deckhouse,deviceProduct=security-events-manager,deviceVersion=1,version=V0.-
строкаspec.socket.encoding.cef.deviceProduct
Поле device product в заголовке CEF.
Если параметр не задан, применяется
spec.cef.deviceProductиз ClusterSecurityEventConfig, а если не задан и он — используетсяsecurity-events-manager.Максимальная длина:
63 -
строкаspec.socket.encoding.cef.deviceVendor
Поле device vendor в заголовке CEF.
Если параметр не задан, применяется
spec.cef.deviceVendorиз ClusterSecurityEventConfig, а если не задан и он — используетсяDeckhouse.Максимальная длина:
63 -
строкаspec.socket.encoding.cef.deviceVersion
Поле device version в заголовке CEF.
Если параметр не задан, применяется
spec.cef.deviceVersionиз ClusterSecurityEventConfig, а если не задан и он — используется1.Максимальная длина:
63 -
строкаspec.socket.encoding.cef.version
Версия формата CEF в префиксе
CEF:заголовка.Задайте значение, соответствующее формату, который разбирает принимающая SIEM. Если параметр не задан, применяется
spec.cef.versionиз ClusterSecurityEventConfig, а если не задан и он — используетсяV0.Возможные значения:
V0— отправлять префиксCEF:0, используется по умолчанию и ожидается большинством SIEM;V1— отправлять префиксCEF:1.
Допустимые значения:
V0,V1
-
-
строкаspec.socket.encoding.codec
Кодек для назначения.
Возможные значения:
JSON— структурированный JSON, используется по умолчанию и подходит для Loki, Elasticsearch и Kafka;CEF— Common Event Format, подходит для интеграции с SIEM через Kafka, Vector, File, Console и Socket.
По умолчанию:
JSONДопустимые значения:
JSON,CEF -
строкаspec.socket.encoding.syslogWrapper
Обёртка вывода CEF в syslog-заголовок.
Применимо только при
codec=CEF.Возможные значения:
None— отправлять CEF-строку без заголовка, используется по умолчанию;RFC3164— добавлять заголовок RFC 3164 (BSD syslog);RFC5424— добавлять заголовок RFC 5424 (IETF syslog).
По умолчанию:
NoneДопустимые значения:
None,RFC3164,RFC5424
-
-
строкаspec.socket.mode
Обязательный параметр
Режим транспорта сокета.
Возможные значения:
TCP— потоковый и надёжный, поддерживает TLS. Рекомендуется для промышленного syslog;UDP— датаграммный, без гарантии доставки. Размер сообщения ограничен MTU;Unix— локальный Unix-сокет в потоковом режиме. Предназначен для SIEM-агентов в сайдкаре.
Допустимые значения:
TCP,UDP,Unix -
объектspec.socket.tls
Настройки TLS.
Применимо только для режима TCP. Игнорируется для UDP и Unix.
-
строкаspec.socket.tls.caBase64-строка PEM (цепочка CA) для проверки сертификата сервера назначения.
Максимальная длина:
32768 -
булевыйspec.socket.tls.verifyCertificate
По умолчанию:
true -
булевыйspec.socket.tls.verifyHostname
По умолчанию:
true
-
-
-
объектspec.splunkHEC
-
строкаspec.splunkHEC.endpoint
Обязательный параметр
Максимальная длина:
2048 -
объектspec.splunkHEC.tls
-
строкаspec.splunkHEC.tls.caBase64-строка PEM (цепочка CA) для проверки сертификата сервера назначения.
Максимальная длина:
32768 -
булевыйspec.splunkHEC.tls.verifyCertificate
По умолчанию:
true -
булевыйspec.splunkHEC.tls.verifyHostname
По умолчанию:
true
-
-
строкаspec.splunkHEC.token
Токен Splunk HEC.
Рекомендуется использовать
tokenSecretRefвместо хранения секрета в спецификации CR.Максимальная длина:
4096 -
объектspec.splunkHEC.tokenSecretRef
-
строкаspec.splunkHEC.tokenSecretRef.name
Обязательный параметр
Имя секрета в неймспейсе
d8-security-events-manager, содержащего учётные данные.Секрет должен содержать ключ
valueв полеdata.Максимальная длина:
253
-
-
-
строкаspec.type
Обязательный параметр
Допустимые значения:
Loki,Elasticsearch,Kafka,SplunkHEC,File,Console,Vector,Socket,Http -
объектspec.vector
-
объектspec.vector.encoding
Формат кодирования событий, отправляемых в это назначение Vector.
По умолчанию
JSON. УстановитеcodecвCEFдля отправки событий в формате Common Event Format.-
объектspec.vector.encoding.cef
Поля конфигурации CEF.
Применимо только при
codec=CEF. Все параметры блока необязательны и переопределяют одноимённые параметрыspec.cefClusterSecurityEventConfig. Параметр, не заданный ни там, ни там, принимает значениеdeviceVendor=Deckhouse,deviceProduct=security-events-manager,deviceVersion=1,version=V0.-
строкаspec.vector.encoding.cef.deviceProduct
Поле device product в заголовке CEF.
Если параметр не задан, применяется
spec.cef.deviceProductиз ClusterSecurityEventConfig, а если не задан и он — используетсяsecurity-events-manager.Максимальная длина:
63 -
строкаspec.vector.encoding.cef.deviceVendor
Поле device vendor в заголовке CEF.
Если параметр не задан, применяется
spec.cef.deviceVendorиз ClusterSecurityEventConfig, а если не задан и он — используетсяDeckhouse.Максимальная длина:
63 -
строкаspec.vector.encoding.cef.deviceVersion
Поле device version в заголовке CEF.
Если параметр не задан, применяется
spec.cef.deviceVersionиз ClusterSecurityEventConfig, а если не задан и он — используется1.Максимальная длина:
63 -
строкаspec.vector.encoding.cef.version
Версия формата CEF в префиксе
CEF:заголовка.Задайте значение, соответствующее формату, который разбирает принимающая SIEM. Если параметр не задан, применяется
spec.cef.versionиз ClusterSecurityEventConfig, а если не задан и он — используетсяV0.Возможные значения:
V0— отправлять префиксCEF:0, используется по умолчанию и ожидается большинством SIEM;V1— отправлять префиксCEF:1.
Допустимые значения:
V0,V1
-
-
строкаspec.vector.encoding.codec
Кодек для назначения.
Возможные значения:
JSON— структурированный JSON, используется по умолчанию и подходит для Loki, Elasticsearch и Kafka;CEF— Common Event Format, подходит для интеграции с SIEM через Kafka, Vector, File, Console и Socket.
По умолчанию:
JSONДопустимые значения:
JSON,CEF -
строкаspec.vector.encoding.syslogWrapper
Обёртка вывода CEF в syslog-заголовок.
Применимо только при
codec=CEF.Возможные значения:
None— отправлять CEF-строку без заголовка, используется по умолчанию;RFC3164— добавлять заголовок RFC 3164 (BSD syslog);RFC5424— добавлять заголовок RFC 5424 (IETF syslog).
По умолчанию:
NoneДопустимые значения:
None,RFC3164,RFC5424
-
-
строкаspec.vector.endpoint
Обязательный параметр
Максимальная длина:
2048 -
объектspec.vector.tls
-
строкаspec.vector.tls.caBase64-строка PEM (цепочка CA) для проверки сертификата сервера назначения.
Максимальная длина:
32768 -
булевыйspec.vector.tls.verifyCertificate
По умолчанию:
true -
булевыйspec.vector.tls.verifyHostname
По умолчанию:
true
-
-
-
ClusterSecurityEventEnrichmentPlugin
Короткие имена: csep
Область: Cluster
Версия: v1alpha1
-
объектspec
Описывает плагин обогащения — HTTP-эндпоинт, который разрешает дополнительные поля для исходящих SecurityEvents во время выполнения.
-
Internal-плагины обслуживаются встроенным сайдкаромenrichment-cacheв поде шлюза. Модуль поставляет три Internal-плагина:k8s-pod-info,k8s-container-info,k8s-nodeuser-info. Ресурсы типа Internal управляются Deckhouse, их нельзя создать или изменить. -
External-плагины обслуживаются пользовательскими подами в любом неймспейсе. В ресурсе указываются URL эндпоинта, схема аргументов, схема возвращаемых полей и, при необходимости, настройки TLS и аутентификации.
-
массив объектовspec.args
Обязательный параметр
Входные аргументы, передаваемые как query-параметры, которые принимает плагин.
У каждого аргумента есть имя, признак обязательности и описание.
Когда
ShipperEnrichRuleссылается на этот плагин, значения егоargsразрешаются из полей события (dot-paths) и отправляются как query-параметры на эндпоинт плагина.Контроллер проверяет, что все
required: trueаргументы присутствуют в ссылающемсяShipperEnrichRule.-
строкаspec.args.descriptionЧеловекочитаемое описание аргумента.
Максимальная длина:
4096 -
строкаspec.args.nameИмя аргумента, используемое как ключ query-параметра.
Длина:
1..253 -
булевыйspec.args.requiredПризнак обязательности аргумента в ShipperEnrichRule.
По умолчанию:
true
-
-
строкаspec.descriptionЧеловекочитаемое описание плагина.
Максимальная длина:
4096 -
объектspec.endpoint
Конфигурация HTTP-эндпоинта.
Обязательна для
External-плагинов. ДляInternal-плагинов параметр игнорируется, так как URL сайдкара используется автоматически.-
массив объектовspec.endpoint.headersСтатические HTTP-заголовки, отправляемые с каждым запросом.
-
строкаspec.endpoint.headers.name
Длина:
1..256 -
строкаspec.endpoint.headers.value
Максимальная длина:
4096
-
-
объектspec.endpoint.tlsTLS-конфигурация для HTTPS-эндпоинта.
-
строкаspec.endpoint.tls.caSecretИмя Secret в namespace модуля (
d8-security-events-manager), содержащего CA-сертификат (ключca.crt). Используется для проверки TLS-сертификата эндпоинта плагина.Максимальная длина:
253 -
строкаspec.endpoint.tls.clientCertSecretИмя Secret в namespace модуля, содержащего клиентский сертификат и ключ для mTLS (ключи
tls.crt,tls.key).Максимальная длина:
253
-
-
строкаspec.endpoint.url
Обязательный параметр
Полный HTTP(S)-URL эндпоинта обогащения.
Контроллер формирует запрос вида
GET <URL>?<АРГУМЕНТЫ КАК QUERY-ПАРАМЕТРЫ>. URL должен начинаться сhttp://илиhttps://. Для защиты от SSRF он не должен ссылаться на облачные metadata-эндпоинты, такие как169.254.x.x, и на link-local адреса.Длина:
1..2048
-
-
объектspec.readiness
Проверка готовности плагина.
Контроллер может опрашивать этот эндпоинт перед включением плагина в конфигурацию шлюза. Если эндпоинт недоступен, контроллер устанавливает статус-условие
NotReady.-
целое числоspec.readiness.expectedStatusОжидаемый HTTP-код для готового плагина.
По умолчанию:
200 -
строкаspec.readiness.pathHTTP-путь для проверки, добавляемый к
endpoint.url.По умолчанию:
/healthzМаксимальная длина:
2048
-
-
объектspec.returns
Обязательный параметр
Поля, которые плагин возвращает в JSON-ответе.
Список используется для валидации: параметр
valueв ссылающемсяShipperEnrichRuleдолжен совпадать с одним из перечисленных здесь значенийfields[].name.-
массив объектовspec.returns.fields
Обязательный параметр
-
строкаspec.returns.fields.descriptionЧеловекочитаемое описание поля.
Максимальная длина:
4096 -
строкаspec.returns.fields.nameИмя поля в ответе.
Длина:
1..253 -
строкаspec.returns.fields.typeТип поля.
Допустимые значения:
String,Int,Bool
-
-
-
строкаspec.type
Обязательный параметр
Тип плагина.
Internal— обслуживается встроенным сайдкаромenrichment-cache, эндпоинт не требуется;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
Короткие имена: cseltr
Область: Cluster
Версия: v1alpha1
-
объектspec
Кластерные правила для преобразования сырых строк логов в структурированные объекты (Vector events) перед дальнейшей обработкой.
Namespaced SecurityEventLoggingTransformationRules (SELTR) имеют приоритет над этими правилами, если оба ресурса подходят для одного и того же пода/контейнера.
-
объектspec.file
Выбор файлов + общая трансформация для логов из файлов. Обязательно, когда type = File.
Матчинг файла выполняется по полю Vector-события
.file.-
массив строкspec.file.paths
Обязательный параметр
Точные пути к файлам для матчинга.-
строкаspec.file.paths.Элемент массива
Длина:
1..4096
-
-
объектspec.file.transform
Обязательный параметр
Общая трансформация, применяемая ко всем строкам лога из совпавших файлов.-
булевыйspec.file.transform.drop_raw
По умолчанию:
false -
массив объектовspec.file.transform.fields
-
строкаspec.file.transform.fields.nameИмя поля в распарсенном объекте.
Длина:
1..253 -
строкаspec.file.transform.fields.typeЦелевой тип поля.
Допустимые значения:
String,Int,Float,Bool
-
-
объектspec.file.transform.parser
Обязательный параметр
Конфигурация парсера, определяющая, как распаковать исходную строку лога.
Разбор выполняется по следующим правилам:
- разбор выполняется по возможности, поэтому ошибки и несовпадения не приводят к отбрасыванию событий;
- для типов
RegexиGrokиспользуется первый успешно совпавший шаблон; - именованные группы записываются в
.parsed_data.
-
объектspec.file.transform.parser.grokКонфигурация grok-парсера. Именованные поля сохраняются в
.parsed_data.-
массив объектовspec.file.transform.parser.grok.customPatternsПользовательские определения grok-паттернов (имя -> regex). Добавляются к встроенным grok-паттернам.
-
строкаspec.file.transform.parser.grok.customPatterns.key
Максимальная длина:
256 -
строкаspec.file.transform.parser.grok.customPatterns.value
Максимальная длина:
4096
-
-
массив строкspec.file.transform.parser.grok.patterns
Обязательный параметр
Список grok-шаблонов, применяемых по порядку. Используется первый успешно совпавший шаблон.-
строкаspec.file.transform.parser.grok.patterns.Элемент массива
Длина:
1..16384
-
-
-
объектspec.file.transform.parser.regexКонфигурация regex-парсера. В
.parsed_dataсохраняются только именованные группы.-
массив строкspec.file.transform.parser.regex.patterns
Обязательный параметр
Список regex-шаблонов, применяемых по порядку. Используется первый успешно совпавший шаблон.-
строкаspec.file.transform.parser.regex.patterns.Элемент массива
Длина:
1..16384
-
-
-
строкаspec.file.transform.parser.type
Обязательный параметр
Тип парсера.
JSON— разобрать исходную строку лога как JSON с помощьюparse_json();Regex— применить регулярные выражения и извлечь именованные группы;Grok— применить grok-шаблоны и извлечь именованные поля.
Допустимые значения:
JSON,Regex,Grok
-
-
-
объектspec.kubernetesPodsВыбор подов + трансформации по контейнерам для логов KubernetesPods. Обязательно, когда type = KubernetesPods.
-
массив объектовspec.kubernetesPods.containers
Обязательный параметр
Правила трансформации по контейнерам.-
булевыйspec.kubernetesPods.containers.drop_rawЕсли true — удаляет исходное «сырое» поле сообщения после парсинга.
По умолчанию:
false -
массив объектовspec.kubernetesPods.containers.fieldsНеобязательные преобразования типов полей после парсинга. Полезно для обеспечения стабильных типов для sinks (Elasticsearch/ClickHouse/и т.п.).
-
строкаspec.kubernetesPods.containers.fields.nameИмя поля в распарсенном объекте.
Длина:
1..253 -
строкаspec.kubernetesPods.containers.fields.typeЦелевой тип поля.
Допустимые значения:
String,Int,Float,Bool
-
-
строкаspec.kubernetesPods.containers.nameИмя контейнера, к которому применяется эта трансформация.
Длина:
1..253 -
объектspec.kubernetesPods.containers.parser
Конфигурация парсера, определяющая, как распаковать исходную строку лога.
Разбор выполняется по следующим правилам:
- разбор выполняется по возможности, поэтому ошибки и несовпадения не приводят к отбрасыванию событий;
- для типов
RegexиGrokиспользуется первый успешно совпавший шаблон; - именованные группы записываются в
.parsed_data.
-
объектspec.kubernetesPods.containers.parser.grokКонфигурация grok-парсера. Именованные поля сохраняются в
.parsed_data.-
массив объектовspec.kubernetesPods.containers.parser.grok.customPatternsПользовательские определения grok-паттернов (имя -> regex). Добавляются к встроенным grok-паттернам.
-
строкаspec.kubernetesPods.containers.parser.grok.customPatterns.key
Максимальная длина:
256 -
строкаspec.kubernetesPods.containers.parser.grok.customPatterns.value
Максимальная длина:
4096
-
-
массив строкspec.kubernetesPods.containers.parser.grok.patterns
Обязательный параметр
Список grok-шаблонов, применяемых по порядку. Используется первый успешно совпавший шаблон.-
строкаspec.kubernetesPods.containers.parser.grok.patterns.Элемент массива
Длина:
1..16384
-
-
-
объектspec.kubernetesPods.containers.parser.regexКонфигурация regex-парсера. В
.parsed_dataсохраняются только именованные группы.-
массив строкspec.kubernetesPods.containers.parser.regex.patterns
Обязательный параметр
Список regex-шаблонов, применяемых по порядку. Используется первый успешно совпавший шаблон.-
строкаspec.kubernetesPods.containers.parser.regex.patterns.Элемент массива
Длина:
1..16384
-
-
-
строкаspec.kubernetesPods.containers.parser.type
Обязательный параметр
Тип парсера.
JSON— разобрать исходную строку лога как JSON с помощьюparse_json();Regex— применить регулярные выражения и извлечь именованные группы;Grok— применить grok-шаблоны и извлечь именованные поля.
Допустимые значения:
JSON,Regex,Grok
-
-
объектspec.kubernetesPods.labelSelector
Обязательный параметр
Label selector подов.
Для сопоставления не используется. Поды выбирает шиппер, который ссылается на эти правила, — своим полем
input.kubernetesPods.labelSelector. Поле оставлено обязательным для совместимости и игнорируется.-
массив объектовspec.kubernetesPods.labelSelector.matchExpressionsСписок требований label selector.
-
строкаspec.kubernetesPods.labelSelector.matchExpressions.key
Максимальная длина:
317 -
строкаspec.kubernetesPods.labelSelector.matchExpressions.operator
Допустимые значения:
In,NotIn,Exists,DoesNotExist -
массив строкspec.kubernetesPods.labelSelector.matchExpressions.values
-
строкаspec.kubernetesPods.labelSelector.matchExpressions.values.Элемент массива
Максимальная длина:
63
-
-
-
объектspec.kubernetesPods.labelSelector.matchLabelsКарта «ключ метки → значение».
-
-
объектspec.kubernetesPods.namespaceSelector
Выбор неймспейсов (подмножество ClusterLoggingConfig). Поддерживаются только matchNames/excludeNames.
Для сопоставления не используется. Неймспейсы выбирает шиппер, который ссылается на эти правила, — своим полем
input.kubernetesPods. Поле игнорируется.-
массив строкspec.kubernetesPods.namespaceSelector.excludeNames
-
строкаspec.kubernetesPods.namespaceSelector.excludeNames.Элемент массива
Максимальная длина:
253
-
-
массив строкspec.kubernetesPods.namespaceSelector.matchNames
-
строкаspec.kubernetesPods.namespaceSelector.matchNames.Элемент массива
Максимальная длина:
253
-
-
-
-
строка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
Короткие имена: cses
Область: Cluster
Версия: v1alpha1
-
массив объектовspecКластерные пайплайны для извлечения событий безопасности из файлов нод или логов подов. Каждый элемент пайплайна описывает источник и одно или несколько определений событий (produces).
-
объектspec.input
-
массив строкspec.input.filesПути к файлам на нодах (обязательно для типа File).
-
строкаspec.input.files.Элемент массива
Максимальная длина:
4096
-
-
объектspec.input.kubernetesPodsВыбор подов для кластерного сбора.
-
объектspec.input.kubernetesPods.labelSelector
Обязательный параметр
Селектор меток в стиле Kubernetes.-
массив объектовspec.input.kubernetesPods.labelSelector.matchExpressionsСписок требований label selector.
-
строкаspec.input.kubernetesPods.labelSelector.matchExpressions.key
Длина:
1..317 -
строкаspec.input.kubernetesPods.labelSelector.matchExpressions.operator
Допустимые значения:
In,NotIn,Exists,DoesNotExist -
массив строкspec.input.kubernetesPods.labelSelector.matchExpressions.values
-
строкаspec.input.kubernetesPods.labelSelector.matchExpressions.values.Элемент массива
Максимальная длина:
63
-
-
-
объектspec.input.kubernetesPods.labelSelector.matchLabelsКарта «ключ метки → значение».
-
-
строкаspec.input.kubernetesPods.namespaceНеймспейс, из которого собирать логи подов.
Длина:
1..63Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ -
объектspec.input.kubernetesPods.namespaceSelector
Селектор неймспейсов для кластерного сбора логов подов.
- Если задан
matchNames, включаются только эти неймспейсы. - Если задан
excludeNames, эти неймспейсы исключаются. - Если заданы оба поля, исключение применяется поверх включения.
- Если оба поля пустые, совпадают все неймспейсы.
Селектор транслируется в условие на метку неймспейса
kubernetes.io/metadata.name.-
массив строкspec.input.kubernetesPods.namespaceSelector.excludeNamesЯвно исключаемые имена неймспейсов.
-
строкаspec.input.kubernetesPods.namespaceSelector.excludeNames.Элемент массива
Длина:
1..63Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
-
-
массив строкspec.input.kubernetesPods.namespaceSelector.matchNamesЯвно включаемые имена неймспейсов.
-
строкаspec.input.kubernetesPods.namespaceSelector.matchNames.Элемент массива
Длина:
1..63Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
-
- Если задан
-
-
строкаspec.input.type
Обязательный параметр
File — чтение из файлов на нодах. KubernetesPods — чтение из логов подов (кластерный сбор; labelSelector обязателен;namespaceилиnamespaceSelectorопциональны).Допустимые значения:
File,KubernetesPods
-
-
массив объектовspec.parser
Правила парсинга для best-effort преобразования сырой строки лога
.messageв.parsed_data.- Для
input.type: KubernetesPods: повторяетSecurityEventLoggingTransformationRules.spec.containers[]. Матчинг выполняется по.namespace+.container+.pod_labels. - Для
input.type: File: используйтеname: file, и правило будет применяться при совпадении.fileс одним из путей вinput.files.
Выбор контейнера происходит на стороне log-shipper через
labelFilter.-
булевыйspec.parser.drop_rawЕсли true — удаляет исходное «сырое» поле сообщения после парсинга.
По умолчанию:
false -
массив объектовspec.parser.fieldsНеобязательные преобразования типов полей после парсинга.
-
строкаspec.parser.fields.nameИмя поля в распарсенном объекте.
Длина:
1..253 -
строкаspec.parser.fields.typeЦелевой тип поля.
Допустимые значения:
String,Int,Float,Bool
-
-
строкаspec.parser.nameИмя контейнера (или
fileдля file input).Длина:
1..253 -
объектspec.parser.parserКонфигурация парсера.
-
объектspec.parser.parser.grok
-
массив объектовspec.parser.parser.grok.customPatterns
-
строкаspec.parser.parser.grok.customPatterns.key
Максимальная длина:
256 -
строкаspec.parser.parser.grok.customPatterns.value
Максимальная длина:
4096
-
-
массив строкspec.parser.parser.grok.patterns
Обязательный параметр
-
строкаspec.parser.parser.grok.patterns.Элемент массива
Длина:
1..16384
-
-
-
объектspec.parser.parser.regex
-
массив строкspec.parser.parser.regex.patterns
Обязательный параметр
-
строкаspec.parser.parser.regex.patterns.Элемент массива
Длина:
1..16384
-
-
-
строкаspec.parser.parser.type
Обязательный параметр
Тип парсера.Допустимые значения:
JSON,Regex,Grok
-
- Для
-
строкаspec.parserRef
Имя ресурса ClusterSecurityEventLoggingTransformationRules (CSELTR), из которого нужно взять правила парсинга.
Используется только если
parserне задан.Длина:
1..253 -
массив объектов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) должен совпадать с именем аргумента, объявленным в соответствующем 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
Максимальная длина:
256 -
строкаspec.produces.enrich.args.value
Максимальная длина:
4096
-
строкаspec.produces.enrich.plugin
Имя плагина (обязательно для
source=Plugin). Ссылается на существующий кастомный ресурс ClusterSecurityEventEnrichmentPlugin по егоmetadata.name.Встроенные Internal-плагины, поставляемые с модулем:
k8s-pod-info— разрешение полей пода по имени пода + namespace.k8s-container-info— разрешение полей пода по container runtime ID.k8s-nodeuser-info— разрешение имени статического пользователя (nodeusers.deckhouse.io) по uid.
Чтобы зарегистрировать собственные эндпоинты обогащения, создайте кастомные ресурсы ClusterSecurityEventEnrichmentPlugin типа
External.Максимальная длина:
253 -
строкаspec.produces.enrich.sourceТип источника enrichment.
Допустимые значения:
Static,Plugin -
строкаspec.produces.enrich.targetЦелевой путь поля в исходящем SecurityEvent (через точку).
Длина:
1..2048 -
строкаspec.produces.enrich.value
Для источника
Static: строковый литерал, который будет записан вtarget.Для источника
Plugin: имя поля в JSON-ответе плагина, значение которого будет записано вtarget. Должно совпадать с одним изreturns.fields[].name, объявленных в соответствующем кастомном ресурсе ClusterSecurityEventEnrichmentPlugin. Например:serviceAccountName,name,namespace(k8s-pod-info / k8s-container-info),username(k8s-nodeuser-info).Максимальная длина:
2048
-
строкаspec.produces.eventCodeКод события (ссылка на SecurityEventDefinition.spec.code).
Длина:
1..128Шаблон:
^[A-Z0-9_]+$ -
объект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.Длина:
1..2048 -
строка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). Ключ, содержащий точку, записывается в скобках и кавычках, иначе точка читается как переход внутрь вложенного объекта (например:actor.id: output_fields["user.name"]).Пример:
pod.name: pod_nameскопирует.parsed_data.pod_nameв.pod.name.-
строкаspec.produces.transform.key
Максимальная длина:
256 -
строкаspec.produces.transform.value
Максимальная длина:
4096
-
-
-
объектspec.producesDefaults
Преобразования по умолчанию, применяемые ко всем элементам
produces[]в рамках этого пайплайна.Приоритет:
transform: мердж по ключам; сначала defaults, затемproduces[].transformперезаписывает.enrich: используется только еслиproduces[].enrichне задан.
-
массив объектовspec.producesDefaults.enrichПравила обогащения по умолчанию. Аналогичны параметру
produces[].enrich.-
массив объектовspec.producesDefaults.enrich.args
Аргументы плагина как пары ключ/значение. Ключ (
key) должен совпадать с именем аргумента, объявленным в соответствующем CR ClusterSecurityEventEnrichmentPlugin (spec.args[].name). Значение (value) — точечный путь в событии, разрешаемый по той же логике, что и правилаtransform: префикс@root.читает из корня события, иначе — из.parsed_data.Во время выполнения каждый аргумент становится query-параметром, отправляемым на эндпоинт плагина:
GET <endpoint>?<arg1>=<val1>&<arg2>=<val2>.Для встроенных плагинов:
k8s-pod-info:pod_name+namespace(оба обязательны).k8s-container-info:container_id(обязателен; префиксы рантайма вродеcontainerd://удаляются автоматически).k8s-nodeuser-info:uid(обязателен; системный UID из события).
-
строкаspec.producesDefaults.enrich.args.key
Максимальная длина:
256 -
строкаspec.producesDefaults.enrich.args.value
Максимальная длина:
4096
-
строкаspec.producesDefaults.enrich.plugin
Имя плагина (обязательно для
source=Plugin). Ссылается на существующий кастомный ресурс ClusterSecurityEventEnrichmentPlugin по егоmetadata.name.Встроенные Internal-плагины, поставляемые с модулем:
k8s-pod-info— разрешение полей пода по имени пода + namespace.k8s-container-info— разрешение полей пода по container runtime ID.k8s-nodeuser-info— разрешение имени статического пользователя (nodeusers.deckhouse.io) по uid.
Чтобы зарегистрировать собственные эндпоинты обогащения, создайте кастомные ресурсы ClusterSecurityEventEnrichmentPlugin типа
External.Максимальная длина:
253 -
строкаspec.producesDefaults.enrich.sourceТип источника enrichment.
Допустимые значения:
Static,Plugin -
строкаspec.producesDefaults.enrich.targetЦелевой путь поля в исходящем SecurityEvent (через точку).
Длина:
1..2048 -
строкаspec.producesDefaults.enrich.value
Для источника
Static: строковый литерал, который будет записан вtarget.Для источника
Plugin: имя поля в JSON-ответе плагина, значение которого будет записано вtarget. Должно совпадать с одним изreturns.fields[].name, объявленных в соответствующем кастомном ресурсе ClusterSecurityEventEnrichmentPlugin. Например:serviceAccountName,name,namespace(k8s-pod-info / k8s-container-info),username(k8s-nodeuser-info).Максимальная длина:
2048
-
-
массив объектовspec.producesDefaults.transformМаппинг полей по умолчанию. Аналогичен параметру
produces[].transform.-
строкаspec.producesDefaults.transform.key
Максимальная длина:
256 -
строкаspec.producesDefaults.transform.value
Максимальная длина:
4096
-
-
строкаspec.sourceИдентификатор источника (используется для включения/выключения через ClusterSecurityEventConfig).
Длина:
1..253
-
-
объект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
Короткие имена: pses
Область: Namespaced
Версия: 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
Длина:
1..317 -
строкаspec.input.kubernetesPods.labelSelector.matchExpressions.operator
Допустимые значения:
In,NotIn,Exists,DoesNotExist -
массив строкspec.input.kubernetesPods.labelSelector.matchExpressions.values
-
строкаspec.input.kubernetesPods.labelSelector.matchExpressions.values.Элемент массива
Максимальная длина:
63
-
-
-
объектspec.input.kubernetesPods.labelSelector.matchLabelsКарта «ключ метки → значение».
-
-
-
строкаspec.input.type
Обязательный параметр
Допустимые значения:
KubernetesPods
-
-
массив объектовspec.parser
Описание правил парсинга логов (в стиле
SecurityEventLoggingTransformationRules.spec.containers[]).Используется шлюзом для best-effort парсинга сырых логов
.messageв.parsed_dataперед применениемtransform-маппингов.Примечание: контейнер выбирается на стороне log-shipper через
labelFilter. Здесьname— имя контейнера, к которому применяются правила парсинга.-
булевыйspec.parser.drop_rawЕсли true — удаляет исходное «сырое» поле сообщения после парсинга.
По умолчанию:
false -
массив объектовspec.parser.fieldsНеобязательные преобразования типов полей после парсинга.
-
строкаspec.parser.fields.nameИмя поля в распарсенном объекте.
Длина:
1..253 -
строкаspec.parser.fields.typeЦелевой тип поля.
Допустимые значения:
String,Int,Float,Bool
-
-
строкаspec.parser.nameИмя контейнера.
Длина:
1..253 -
объектspec.parser.parserКонфигурация парсера.
-
объектspec.parser.parser.grokКонфигурация grok-парсера.
-
массив объектовspec.parser.parser.grok.customPatternsПользовательские определения grok-паттернов (имя -> regex).
-
строкаspec.parser.parser.grok.customPatterns.key
Максимальная длина:
256 -
строкаspec.parser.parser.grok.customPatterns.value
Максимальная длина:
4096
-
-
массив строкspec.parser.parser.grok.patterns
Обязательный параметр
Список grok-шаблонов, применяемых по порядку.-
строкаspec.parser.parser.grok.patterns.Элемент массива
Длина:
1..16384
-
-
-
объектspec.parser.parser.regexКонфигурация regex-парсера.
-
массив строкspec.parser.parser.regex.patterns
Обязательный параметр
Список regex-шаблонов, применяемых по порядку.-
строкаspec.parser.parser.regex.patterns.Элемент массива
Длина:
1..16384
-
-
-
строкаspec.parser.parser.type
Обязательный параметр
Тип парсера.
JSON— разобрать исходную строку лога как JSON;Regex— применить регулярные выражения и извлечь именованные группы;Grok— применить grok-шаблоны и извлечь именованные поля.
Допустимые значения:
JSON,Regex,Grok
-
-
-
строкаspec.parserRef
Имя ресурса SecurityEventLoggingTransformationRules (SELTR) в том же неймспейсе, из которого нужно взять правила парсинга.
Используется только если
parserне задан.Длина:
1..253 -
массив объектов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) должен совпадать с именем аргумента, объявленным в соответствующем 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
Максимальная длина:
256 -
строкаspec.produces.enrich.args.value
Максимальная длина:
4096
-
строкаspec.produces.enrich.plugin
Имя плагина (обязательно для
source=Plugin). Ссылается на существующий кастомный ресурс ClusterSecurityEventEnrichmentPlugin по егоmetadata.name.Встроенные Internal-плагины, поставляемые с модулем:
k8s-pod-info— разрешение полей пода по имени пода + namespace.k8s-container-info— разрешение полей пода по container runtime ID.k8s-nodeuser-info— разрешение имени статического пользователя (nodeusers.deckhouse.io) по uid.
Чтобы зарегистрировать собственные эндпоинты обогащения, создайте кастомные ресурсы ClusterSecurityEventEnrichmentPlugin типа
External.Максимальная длина:
253 -
строкаspec.produces.enrich.sourceТип источника enrichment.
Допустимые значения:
Static,Plugin -
строкаspec.produces.enrich.targetЦелевой путь поля в исходящем SecurityEvent (через точку).
Длина:
1..2048 -
строкаspec.produces.enrich.value
Для источника
Static: строковый литерал, который будет записан вtarget.Для источника
Plugin: имя поля в JSON-ответе плагина, значение которого будет записано вtarget. Должно совпадать с одним изreturns.fields[].name, объявленных в соответствующем кастомном ресурсе ClusterSecurityEventEnrichmentPlugin. Например:serviceAccountName,name,namespace(k8s-pod-info / k8s-container-info),username(k8s-nodeuser-info).Максимальная длина:
2048
-
строкаspec.produces.eventCodeКод события (ссылка на SecurityEventDefinition.spec.code).
Длина:
1..128Шаблон:
^[A-Z0-9_]+$ -
объект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.Длина:
1..2048 -
строка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). Ключ, содержащий точку, записывается в скобках и кавычках, иначе точка читается как переход внутрь вложенного объекта (например:actor.id: output_fields["user.name"]).Пример:
pod.name: pod_nameскопирует.parsed_data.pod_nameв.pod.name.-
строкаspec.produces.transform.key
Максимальная длина:
256 -
строкаspec.produces.transform.value
Максимальная длина:
4096
-
-
-
объектspec.producesDefaults
Преобразования по умолчанию, применяемые ко всем элементам
produces[]в рамках этого пайплайна.Приоритет:
transform: мердж по ключам; сначала defaults, затемproduces[].transformперезаписывает.enrich: используется только еслиproduces[].enrichне задан.
-
массив объектовspec.producesDefaults.enrichПравила обогащения по умолчанию. Аналогичны параметру
produces[].enrich.-
массив объектовspec.producesDefaults.enrich.args
Аргументы плагина как пары ключ/значение. Ключ (
key) должен совпадать с именем аргумента, объявленным в соответствующем CR ClusterSecurityEventEnrichmentPlugin (spec.args[].name). Значение (value) — точечный путь в событии, разрешаемый по той же логике, что и правилаtransform: префикс@root.читает из корня события, иначе — из.parsed_data.Во время выполнения каждый аргумент становится query-параметром, отправляемым на эндпоинт плагина:
GET <endpoint>?<arg1>=<val1>&<arg2>=<val2>.Для встроенных плагинов:
k8s-pod-info:pod_name+namespace(оба обязательны).k8s-container-info:container_id(обязателен; префиксы рантайма вродеcontainerd://удаляются автоматически).k8s-nodeuser-info:uid(обязателен; системный UID из события).
-
строкаspec.producesDefaults.enrich.args.key
Максимальная длина:
256 -
строкаspec.producesDefaults.enrich.args.value
Максимальная длина:
4096
-
строкаspec.producesDefaults.enrich.plugin
Имя плагина (обязательно для
source=Plugin). Ссылается на существующий кастомный ресурс ClusterSecurityEventEnrichmentPlugin по егоmetadata.name.Встроенные Internal-плагины, поставляемые с модулем:
k8s-pod-info— разрешение полей пода по имени пода + namespace.k8s-container-info— разрешение полей пода по container runtime ID.k8s-nodeuser-info— разрешение имени статического пользователя (nodeusers.deckhouse.io) по uid.
Чтобы зарегистрировать собственные эндпоинты обогащения, создайте кастомные ресурсы ClusterSecurityEventEnrichmentPlugin типа
External.Максимальная длина:
253 -
строкаspec.producesDefaults.enrich.sourceТип источника enrichment.
Допустимые значения:
Static,Plugin -
строкаspec.producesDefaults.enrich.targetЦелевой путь поля в исходящем SecurityEvent (через точку).
Длина:
1..2048 -
строкаspec.producesDefaults.enrich.value
Для источника
Static: строковый литерал, который будет записан вtarget.Для источника
Plugin: имя поля в JSON-ответе плагина, значение которого будет записано вtarget. Должно совпадать с одним изreturns.fields[].name, объявленных в соответствующем кастомном ресурсе ClusterSecurityEventEnrichmentPlugin. Например:serviceAccountName,name,namespace(k8s-pod-info / k8s-container-info),username(k8s-nodeuser-info).Максимальная длина:
2048
-
-
массив объектовspec.producesDefaults.transformМаппинг полей по умолчанию. Аналогичен параметру
produces[].transform.-
строкаspec.producesDefaults.transform.key
Максимальная длина:
256 -
строкаspec.producesDefaults.transform.value
Максимальная длина:
4096
-
-
строкаspec.sourceИдентификатор источника (используется для включения/выключения через ClusterSecurityEventConfig).
Длина:
1..253
-
-
объект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
Область: Cluster
Версия: v1
-
объектactorСубъект (actor), совершивший действие.
-
строкаactor.idИдентификатор субъекта.
Максимальная длина:
512 -
строкаactor.typeТип субъекта.
Допустимые значения:
User,ServiceAccount,System
-
-
объектeventКлассификация и детали события.
-
строкаevent.category
Обязательный параметр
Категория события.Допустимые значения:
Auth,Rbac,Runtime,Network,Config -
строкаevent.code
Обязательный параметр
Код события.Максимальная длина:
128 -
строкаevent.descriptionЧеловекочитаемое описание события.
Максимальная длина:
4096 -
строкаevent.outcome
Обязательный параметр
Результат события.Допустимые значения:
Success,Failure,Denied -
строкаevent.severity
Обязательный параметр
Уровень критичности события.Допустимые значения:
Low,Medium,High,Critical
-
-
объектeventMetadataДополнительные метаданные.
-
строкаeventMetadata.cluster
Обязательный параметр
Идентификатор кластера.Максимальная длина:
253 -
массив объектовeventMetadata.extraДополнительные метаданные в виде ключ-значение.
-
строкаeventMetadata.extra.key
Максимальная длина:
256 -
строкаeventMetadata.extra.value
Максимальная длина:
4096
-
-
строкаeventMetadata.nodeИмя ноды.
Максимальная длина:
253
-
-
строкаidУникальный идентификатор события.
-
объектobjectОбъект, к которому относится событие.
-
строкаobject.nameИмя объекта.
Максимальная длина:
253 -
строкаobject.namespaceNamespace объекта.
Максимальная длина:
253 -
строкаobject.typeТип объекта.
Максимальная длина:
253
-
-
объектsourceИдентификация источника события.
-
строкаsource.component
Обязательный параметр
Имя компонента, напримерkube-apiserver.Максимальная длина:
253 -
строкаsource.instanceНеобязательный идентификатор инстанса.
Максимальная длина:
253
-
-
строкаtimestampВремя события.
SecurityEventDefinition
Короткие имена: sed
Область: Cluster
Версия: v1alpha1
-
объектspecОписывает возможное событие безопасности.
-
строкаspec.category
Обязательный параметр
Категория события.Допустимые значения:
Auth,Rbac,Runtime,Network,Config -
строкаspec.code
Обязательный параметр
Код события.Длина:
1..128Шаблон:
^[A-Z0-9_]+$ -
строкаspec.description
Обязательный параметр
Человекочитаемое описание.Длина:
1..4096 -
строкаspec.descriptionRuЧеловекочитаемое описание на русском языке.
Максимальная длина:
4096 -
массив объектовspec.fieldsСписок полей, которые может содержать событие.
-
строкаspec.fields.nameИмя поля.
Длина:
1..253 -
булевыйspec.fields.requiredПризнак обязательности поля.
По умолчанию:
true
-
-
объектspec.metadataМетаданные, относящиеся к правилу
-
объектspec.metadata.docsОписание события для человека, используется в документации.
-
объектspec.metadata.docs.desc
-
строкаspec.metadata.docs.desc.enОписание на английском языке.
Максимальная длина:
4096 -
строкаspec.metadata.docs.desc.ruОписание на русском языке.
Максимальная длина:
4096
-
-
-
объектspec.metadata.testsКак вызвать это событие при тестировании модуля.
-
строкаspec.metadata.tests.executionTargetГде выполняются команды, вызывающие событие.
Допустимые значения:
Host,Pod -
строкаspec.metadata.tests.testabilityМожно ли вызвать событие автоматически.
Допустимые значения:
supported,unsupported,manual -
объектspec.metadata.tests.trigger
-
массив строкspec.metadata.tests.trigger.cleanupCommandsКоманды, отменяющие действие триггера.
-
строкаspec.metadata.tests.trigger.cleanupCommands.Элемент массива
Максимальная длина:
4096
-
-
массив строкspec.metadata.tests.trigger.commandsКоманды, вызывающие событие.
-
строкаspec.metadata.tests.trigger.commands.Элемент массива
Максимальная длина:
4096
-
-
-
-
-
строкаspec.severity
Обязательный параметр
Критичность события.Допустимые значения:
Low,Medium,High,Critical -
строкаspec.source
Обязательный параметр
Идентификатор источника.Длина:
1..253
-
-
объект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
Короткие имена: seltr
Область: Namespaced
Версия: v1alpha1
-
объектspecNamespaced-правила для преобразования сырых строк логов в структурированные объекты (Vector events) перед дальнейшей обработкой.
-
массив объектовspec.containers
Обязательный параметр
Правила трансформации по контейнерам.-
булевыйspec.containers.drop_rawЕсли true — удаляет исходное «сырое» поле сообщения после парсинга.
По умолчанию:
false -
массив объектовspec.containers.fieldsНеобязательные преобразования типов полей после парсинга. Полезно для обеспечения стабильных типов для sinks (Elasticsearch/ClickHouse/и т.п.).
-
строкаspec.containers.fields.nameИмя поля в распарсенном объекте.
Длина:
1..253 -
строкаspec.containers.fields.typeЦелевой тип поля.
Допустимые значения:
String,Int,Float,Bool
-
-
строкаspec.containers.nameИмя контейнера, к которому применяется эта трансформация.
Длина:
1..253 -
объектspec.containers.parser
Конфигурация парсера, определяющая, как распаковать исходную строку лога.
Разбор выполняется по следующим правилам:
- разбор выполняется по возможности, поэтому ошибки и несовпадения не приводят к отбрасыванию событий;
- для типов
RegexиGrokиспользуется первый успешно совпавший шаблон; - именованные группы записываются в
.parsed_data.
-
объектspec.containers.parser.grokКонфигурация grok-парсера. Именованные поля сохраняются в
.parsed_data.-
массив объектовspec.containers.parser.grok.customPatternsПользовательские определения grok-паттернов (имя -> regex). Добавляются к встроенным grok-паттернам.
-
строкаspec.containers.parser.grok.customPatterns.key
Максимальная длина:
256 -
строкаspec.containers.parser.grok.customPatterns.value
Максимальная длина:
4096
-
-
массив строкspec.containers.parser.grok.patterns
Обязательный параметр
Список grok-шаблонов, применяемых по порядку. Используется первый успешно совпавший шаблон.-
строкаspec.containers.parser.grok.patterns.Элемент массива
Длина:
1..16384
-
-
-
объектspec.containers.parser.regexКонфигурация regex-парсера. В
.parsed_dataсохраняются только именованные группы.-
массив строкspec.containers.parser.regex.patterns
Обязательный параметр
Список regex-шаблонов, применяемых по порядку. Используется первый успешно совпавший шаблон.-
строкаspec.containers.parser.regex.patterns.Элемент массива
Длина:
1..16384
-
-
-
строкаspec.containers.parser.type
Обязательный параметр
Тип парсера.
JSON— разобрать исходную строку лога как JSON с помощьюparse_json();Regex— применить регулярные выражения и извлечь именованные группы;Grok— применить grok-шаблоны и извлечь именованные поля.
Допустимые значения:
JSON,Regex,Grok
-
-
объектspec.selector
Обязательный параметр
Label selector подов.
Для сопоставления не используется. Поды выбирает шиппер, который ссылается на эти правила, — своим полем
input.kubernetesPods.labelSelector. Поле оставлено обязательным для совместимости и игнорируется.-
массив объектовspec.selector.matchExpressionsСписок требований label selector.
-
строкаspec.selector.matchExpressions.key
Максимальная длина:
317 -
строкаspec.selector.matchExpressions.operator
Допустимые значения:
In,NotIn,Exists,DoesNotExist -
массив строкspec.selector.matchExpressions.values
-
строкаspec.selector.matchExpressions.values.Элемент массива
Максимальная длина:
63
-
-
-
объект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.
-