Экспорт логов безопасности во внешние системы
Интеграция с внешними системами мониторинга безопасности.
Введение
Для интеграции с SIEM в кластере должен быть включён Модуль локального сбора логов (Vector, shturval-log-collector). Перенаправление логов настраивается через ShturvalServicePatch, который применяется к спецификации сервиса shturval-log-collector; общий порядок работы с custom values описан в разделе Как управлять CustomValues сервисов.
Vector использует:
sources— источники данных;transforms— преобразование и фильтрацию данных;sinks— получателей, в которые отправляются логи.
Какие логи можно отправлять
В customvalues.shturval укажите типы логов, которые нужно перенаправлять. Поддерживаются:
auditd— системные логи аудита;journald— логиcontainerd,kubelet,shturvald;k8s_audit— логи аудита API Kubernetes;k8s_events— события Kubernetes;k8s_logs— логи контейнеров.
В блоке shturval должны быть перечислены все типы логов, для которых требуется перенаправление. Для каждого типа логов задайте получателей в sinks. Если требуется изменить записи перед отправкой, настройте transforms.
Общий порядок настройки
- Подготовьте
ShturvalServicePatchдляshturval-log-collector. - В
customvalues.shturvalукажите типы логов,transformsпри необходимости иsinksс параметрами подключения. - Загрузите манифест в кластере через импорт манифестов.
- Дождитесь применения изменений.
Отправка в SIEM через socket
В этом примере в SIEM отправляются k8s_audit, journald и k8s_logs. Чтобы изменить перечень отправляемых логов, удалите из блока shturval ненужный блок с типом логов.
apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
name: <имя ресурса>
spec:
shturvalServiceConfigName: shturval-log-collector
customvalues:
shturval:
k8s_audit:
enable: true
sinks:
siem:
type: socket
inputs:
- critical_level
address: "<ваше значение параметра>"
mode: <ваше значение параметра>
encoding:
codec: json
journald:
sinks:
siem:
type: socket
inputs:
- critical_level
address: "<ваше значение параметра>"
mode: <ваше значение параметра>
encoding:
codec: json
k8s_logs:
transforms:
filter_backend:
condition: |
.kubernetes.pod_namespace == "shturval-backend" &&
(
(.kubernetes.container_name == "opa" && starts_with(string!(.kubernetes.pod_name), "shturval-backend-")) ||
(.kubernetes.container_name == "authn" && starts_with(string!(.kubernetes.pod_name), "authn-"))
)
inputs:
- post_transforms_system_namespaces
type: filter
sinks:
siem:
type: socket
inputs:
- filter_backend
address: "<ваше значение параметра>"
mode: <ваше значение параметра>
encoding:
codec: json
| Параметр | Описание | Тип данных | Пример |
|---|---|---|---|
metadata.name |
Имя ShturvalServicePatch |
string |
shturval-log-collector-siem |
address |
Сокет SIEM: IP-адрес и порт | string |
10.11.12.13:514 |
mode |
Протокол подключения | string |
udp |
Vector поддерживает подтверждение доставки данных. При некорректной доставке выполняется повторная отправка, что позволяет снизить влияние особенностей UDP-протокола.
Загрузка манифеста
Загрузите подготовленный ShturvalServicePatch в кластере через импорт манифестов.
Скриншот: импорт ShturvalServicePatch для SIEM

Скриншот: импорт ShturvalServicePatch для перенаправления логов

Скриншот: импорт ShturvalServicePatch для syslog

После загрузки ShturvalServicePatch потребуется некоторое время для применения изменений.
Проверка применения
Чтобы проверить, что ShturvalServicePatch применён:
- В кластере откройте раздел Сервисы и репозитории.
- Перейдите на страницу Установленные сервисы.
- Найдите Модуль локального сбора логов (
shturval-log-collector) и откройте управление сервисом. - Проверьте вкладку Сервис: после применения патча статус должен обновиться до Patched.
- Проверьте вкладку Примененные ShturvalServicePatch: в списке должен отображаться загруженный
ShturvalServicePatch.
Скриншоты: применённый ShturvalServicePatch

