Deklarace mapování¶
Poté, co jsou všechny deklarované pole získány z parserů, musí být pole přejmenována podle nějakého schématu (ECS, CEF, ...) v procesu nazývaném mapování. Mapování zajišťuje, že logy z různých zdrojů mají sjednocené, konzistentní názvy a typy polí.
Proces mapování:
- přejmenuje pole z analyzovaných logů podle nějakého schématu
- případně převede typy polí (např. ze stringu na celé číslo, IP, MAC atd.)
- filtruje všechna pole, která nejsou uvedena v mapování
Deklarace¶
define:
type: parsec/mapping
schema: /Schemas/ECS.yaml
mapping:
<original_key>: <new_key>
<original_key>: <new_key>
...
Specifikujte parsec/mapping
jako type
v sekci define
. V poli schema
specifikujte cestu k schématu, které používáte.
Příklad
Pro účely příkladu si představme, že chceme analyzovat jednoduchou událost:
User harry_potter login from 178.2.1.20
a chtěli bychom, aby konečný výstup vypadal takto:
{
"user.name": "harry_potter",
"event.action": "login",
"source.ip": "178.2.1.20"
}
Všimněte si, že názvy klíčů v původní události se liší od názvů klíčů v požadovaném výstupu.
Pro počáteční deklaraci parseru v tomto případě můžeme použít jednoduchý JSON parser:
define:
type: parsec/parser
parse:
!PARSE.KVLIST
- "User "
- USER: !PARSE.UNTIL " "
- ACTION: !PARSE.UNTIL " "
- !PARSE.UNTIL " "
- IP: !PARSE.IP
Tento parser vytvoří seznam párů klíč-hodnota:
USER harry_potter
ACTION login
IP 178.2.1.20
Abychom změnili názvy jednotlivých polí, vytvoříme soubor deklarace mapování, 20_mapping_ECS.yaml
, ve kterém popíšeme, která pole mapovat a jak:
---
define:
type: parsec/mapping # určete typ deklarace
schema: /Schemas/ECS.yaml # které schéma je použito
mapping:
USER: user.name
ACTION: event.action
IP: source.ip
Tato deklarace vytvoří požadovaný výstup.