enrich
Процессор enrich
Процессор enrich дополняет события данными из внешних источников: динамических списков, GeoIP-баз, LDAP-каталогов, базы активов KOMRAD и потоков данных об угрозах (IoC). Процессор не создаёт новых событий — он добавляет поля к существующему событию.
Общая конфигурация
processors:
- module: enrich
type: "<тип обогатителя>"
timeout: 2s
cache-ttl: 5m
disable-cache: false
enricher-config:
# параметры конкретного типа
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
type | string | — | Тип обогатителя: dynamic_list, geo_ip, ldap, asset, ioc |
timeout | duration | — | Таймаут запроса к внешнему источнику |
cache-ttl | duration | — | Время жизни записей в кеше результатов обогащения |
disable-cache | bool | false | Отключить кеширование результатов |
enricher-config | object | — | Конфигурация конкретного типа обогатителя (см. ниже) |
Тип dynamic_list
Обогащение из динамических списков KOMRAD.
processors:
- module: enrich
type: dynamic_list
cache-ttl: 10m
enricher-config:
list-name: "blocked_ips"
mapping:
ECS.Source.IP: "MatchResult"
| Параметр | Тип | Описание |
|---|---|---|
list-name | string | Имя динамического списка в KOMRAD |
mapping | map[string]string | Маппинг данных динамического списка на поля события. Ключи должны соответствовать названиям ключа и полей в схеме динамического списка, значения — целевые поля события для записи результата |
Тип geo_ip
Определение географического расположения по IP-адресу с помощью базы MaxMind GeoIP.
processors:
- module: enrich
type: geo_ip
cache-ttl: 30m
enricher-config:
db-file-path: "/opt/komrad/geoip/GeoLite2-City.mmdb"
lookup-fields:
- "ECS.Source.IP"
- "ECS.Destination.IP"
| Параметр | Тип | Описание |
|---|---|---|
db-file-path | string | Путь к файлу базы данных MaxMind (.mmdb) |
lookup-fields | string[] | Поля события, содержащие IP-адреса для GeoIP-разрешения |
Тип ldap
Обогащение данными из LDAP-каталога (Active Directory, FreeIPA и др.).
processors:
- module: enrich
type: ldap
timeout: 5s
cache-ttl: 15m
enricher-config:
url: "ldaps://dc01.example.com:636"
tls:
enabled: true
skip-verify: false
username: "cn=reader,ou=service,dc=example,dc=com"
password-secret: "ldap-bind-password"
base-dn: "ou=Users,dc=example,dc=com"
filter: "(sAMAccountName=${ECS.User.Name})"
attributes-mapping:
displayName: "ECS.User.FullName"
department: "ECS.User.Group.Name"
mail: "ECS.User.Email"
enriching-strategy: first
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
url | string | — | URL LDAP-сервера (ldap:// или ldaps://) |
tls | object | — | Конфигурация TLS-соединения |
username | string | — | DN для привязки (bind) к LDAP |
password | string | — | Пароль (открытым текстом — не рекомендуется) |
password-secret | string | — | Имя секрета для пароля |
base-dn | string | — | Базовый DN для поиска |
scope | string | whole_subtree | Область поиска LDAP (см. ниже) |
deref-aliases | string | never_deref_aliases | Стратегия разыменования псевдонимов (см. ниже) |
size-limit | int | — | Максимальное число результатов |
time-limit | int | — | Таймаут поиска на стороне LDAP-сервера (секунды) |
filter | string | — | LDAP-фильтр поиска. Поддерживает шаблонизацию — значения полей события подставляются через переменные вида $ИмяПоля или ${ИмяПоля} |
attributes-mapping | map[string]string | — | Маппинг LDAP-атрибутов на поля события. Ключ — имя LDAP-атрибута, значение — целевое поле события |
enriching-strategy | string | first | Стратегия обогащения при нескольких результатах: first (первый результат) или append (все результаты) |
Значения scope:
| Значение | Описание |
|---|---|
base_object | Поиск только в записи, связанной с базовым DN |
single_level | Поиск только в непосредственных потомках базовой записи (не в самой записи и не в потомках потомков) |
whole_subtree | Поиск в базовой записи и всех записях-потомках (по умолчанию) |
subordinate_subtree | Поиск во всех записях-потомках, но не в базовой записи |
Значения deref-aliases:
| Значение | Описание |
|---|---|
never_deref_aliases | Псевдонимы не разыменовываются (по умолчанию) |
deref_in_search | Базовая запись не разыменовывается, но все прочие псевдонимы, встреченные во время поиска, разыменовываются |
deref_finding_base_obj | Базовая запись разыменовывается, но прочие псевдонимы не разыменовываются |
deref_always | Все псевдонимы разыменовываются |
Выражение фильтра поиска использует переменные для подстановки значений полей события: $ИмяПоля или ${ИмяПоля}.
(&(ObjectClass=${EventObjectClass})(uid=${ECS.User.Name}))
Если указаны оба параметра password и password-secret, значение из password имеет больший приоритет.
Тип asset
Обогащение данными из базы активов KOMRAD. Процессор ищет активы по IP-адресам и FQDN, найденным в полях события.
processors:
- module: enrich
type: asset
cache-ttl: 10m
enricher-config:
ip-lookup-fields:
- "ECS.Source.IP"
- "ECS.Destination.IP"
fqdn-lookup-fields:
- "ECS.Host.Hostname"
mappings:
Name: "Asset.Name"
Importance: "Asset.Importance"
Tags: "Asset.Tags"
OSName: "Asset.OS"
| Параметр | Тип | Описание |
|---|---|---|
ip-lookup-fields | string[] | Поля события с IP-адресами для поиска в базе активов |
fqdn-lookup-fields | string[] | Поля события с FQDN для поиска в базе активов |
mappings | map[string]string | Маппинг свойств актива на поля события |
В первую очередь обрабатываются поля ip-lookup-fields — поиск актива по IP-адресу приоритетнее поиска по FQDN.
Доступные свойства активов для маппинга: ID, Name, Hostname, FQDN, IP, IPv4, IPv6, MAC, DeviceType, OSType, OSName, OSVersion, Importance, Tags.
Тип ioc
Обогащение индикаторами компрометации (IoC) из подключённых источников Threat Intelligence.
processors:
- module: enrich
type: ioc
timeout: 3s
cache-ttl: 10m
enricher-config:
provider: "amtip"
lookup-fields:
- "ECS.Source.IP"
- "ECS.Destination.IP"
- "ECS.URL.Full"
| Параметр | Тип | Описание |
|---|---|---|
provider | string | Провайдер IoC-данных (например, amtip) |
lookup-fields | string[] | Поля события, значения которых проверяются по базе IoC |
format | string | Формат данных провайдера (например, stix) |
Конфигурация провайдера зависит от выбранного источника. Параметры указываются на уровне enricher-config.
Конфигурация провайдера amtip:
| Параметр | Тип | Описание |
|---|---|---|
token | string | Токен аутентификации для API AMTIP. Имеет приоритет выше, чем token-secret |
token-secret | string | Название секрета KOMRAD с токеном. Игнорируется, если указан token |
base-url | string | URL ресурса AMTIP |
tls | object | Параметры TLS для запросов |
custom-fields | map[string]string | Дополнительные поля для извлечения из ответа IoC-провайдера (ключ — имя целевого поля, значение — GJSON-путь в ответе) |
Пример полной конфигурации IoC с провайдером AMTIP:
processors:
- module: enrich
timeout: 500s
cache-ttl: 5s
type: ioc
enricher-config:
format: "stix"
provider: "amtip"
lookup-fields: ["ECS.Client.IP", "ECS.URL.Path", "ECS.URL.Domain"]
token: "123"
base-url: "http://iocs-provider.example.com:8080/api/v1/ioc/"
tls:
disable: true
custom-fields:
blacklists: 'objects.#(name%Blacklists).result'
whois: 'objects.#(name%Whois Lookup).result'
При обнаружении совпадения с IoC процессор добавляет в событие информацию об индикаторе.
Подробнее об API AMTIP см. Получение IoC из внешних источников (AMTIP).