Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Uživatelé modelu ASIM (Advanced Security Information Model) používají ve svých dotazech sjednocující analyzátory místo názvů tabulek, k zobrazení dat v normalizovaném formátu a k zahrnutí všech dat relevantních pro schéma do dotazu. Sjednocující analyzátory zase používají analyzátory specifické pro zdroj ke zpracování konkrétních podrobností jednotlivých zdrojů.
Microsoft Sentinel poskytuje integrované analyzátory specifické pro zdroje pro mnoho zdrojů dat. Tyto analyzátory specifické pro zdroj můžete chtít upravit nebo vyvinout v následujících situacích:
Pokud vaše zařízení poskytuje události, které odpovídají schématu ASIM, ale analyzátor specifický pro zdroj pro vaše zařízení a příslušné schéma není k dispozici v Microsoft Sentinel.
Když jsou pro vaše zařízení k dispozici analyzátory specifické pro zdroje ASIM, ale vaše zařízení odesílá události v metodě nebo formátu, který se liší od analyzátorů ASIM. Příklady:
Vaše zdrojové zařízení může být nakonfigurované tak, aby odesílala události nestandardním způsobem.
Vaše zařízení může mít jinou verzi, než kterou podporuje analyzátor ASIM.
Události můžou být shromažďovány, upraveny a předávány zprostředkujícím systémem.
Informace o tom, jak analyzátory zapadají do architektury ASIM, najdete v diagramu architektury ASIM.
Vlastní proces vývoje analyzátoru ASIM
Následující pracovní postup popisuje základní kroky při vývoji vlastního analyzátoru ASIM specifického pro zdroj:
Identifikujte schémata nebo schémata, která představují události odeslané ze zdroje. Další informace najdete v tématu Přehled schématu.
Namapujte pole zdrojových událostí na identifikované schéma nebo schémata.
Vytvořte jeden nebo více analyzátorů ASIM pro váš zdroj. Pro každé schéma relevantní pro zdroj budete muset vyvinout analyzátor filtrování a analyzátor bez parametrů.
Otestujte analyzátor.
Nasaďte analyzátory do pracovních prostorů Microsoft Sentinel.
Aktualizujte příslušný sjednocující analyzátor ASIM tak, aby odkazovat na nový vlastní analyzátor. Další informace najdete v tématu Správa analyzátorů ASIM.
Můžete také chtít přispívat analyzátory do primární distribuce ASIM. Vložené analyzátory mohou být také dostupné ve všech pracovních prostorech jako předdefinované analyzátory.
Tento článek vás provede kroky vývoje, testování a nasazení tohoto procesu.
Tip
Podívejte se také na webinář Hloubkové informace o normalizaci analyzátorů a normalizovaného obsahu Microsoft Sentinel nebo si projděte související prezentaci. Další informace najdete v tématu Další kroky.
Shromáždění ukázkových protokolů
K vytvoření efektivních analyzátorů ASIM potřebujete reprezentativní sadu protokolů, které ve většině případů vyžadují nastavení zdrojového systému a jeho připojení k Microsoft Sentinel. Pokud zdrojové zařízení nemáte k dispozici, cloudové služby s průběžným platbou vám umožní nasadit mnoho zařízení pro vývoj a testování.
Kromě toho vyhledání dokumentace a ukázek pro protokoly od dodavatele může pomoct urychlit vývoj a omezit počet chyb tím, že zajistíte pokrytí širokým formátem protokolů.
Reprezentativní sada protokolů by měla obsahovat:
- Události s různými výsledky událostí
- Události s různými akcemi odpovědí.
- Různé formáty pro uživatelské jméno, název hostitele a ID a další pole, která vyžadují normalizaci hodnot.
Tip
Spusťte nový vlastní analyzátor s použitím existujícího analyzátoru pro stejné schéma. Použití existujícího analyzátoru je zvlášť důležité pro filtrování analyzátorů, aby se zajistilo, že přijímají všechny parametry vyžadované schématem.
Plánování mapování
Před vývojem analyzátoru namapujte informace dostupné ve zdrojové události nebo událostech na schéma, které jste identifikovali:
- Namapovat všechna povinná pole a nejlépe také doporučená pole.
- Zkuste namapovat všechny informace dostupné ze zdroje na normalizovaná pole. Pokud není k dispozici jako součást vybraného schématu, zvažte mapování na pole dostupná v jiných schématech.
- Mapujte hodnoty polí ve zdroji na normalizované hodnoty povolené asimem. Původní hodnota je uložená v samostatném poli, například
EventOriginalResultDetails.
Vývoj analyzátorů
Vytvořte filtrovací i bezparametrový analyzátor pro každé relevantní schéma.
Vlastní analyzátor je dotaz KQL vyvinutý na stránce Microsoft Sentinel Protokoly. Dotaz analyzátoru má tři části:
Filtr>Analyzovat>Příprava polí
Filtrování
Filtrování relevantních záznamů
V mnoha případech tabulka v Microsoft Sentinel obsahuje více typů událostí. Příklady:
- Tabulka Syslog obsahuje data z více zdrojů.
- Vlastní tabulky můžou obsahovat informace z jednoho zdroje, které poskytují více než jeden typ události a můžou se vejít do různých schémat.
Analyzátor by proto měl nejprve filtrovat pouze záznamy relevantní pro cílové schéma.
Filtrování v KQL se provádí pomocí operátoru where . Například událost Sysmon 1 hlásí vytvoření procesu, a proto je normalizována do schématu ProcessEvent . Událost Sysmon 1 je součástí Event tabulky, takže byste použili následující filtr:
Event | where Source == "Microsoft-Windows-Sysmon" and EventID == 1
Důležité
Analyzátor by neměl filtrovat podle času. Dotaz, který používá analyzátor, použije časový rozsah.
Filtrování podle typu zdroje pomocí seznamu ke zhlédnutí
V některých případech samotná událost neobsahuje informace, které by umožňovaly filtrování pro konkrétní typy zdrojů.
Například události DNS infobloxu se odesílají jako zprávy Syslogu a je těžké je odlišit od zpráv syslogu odeslaných z jiných zdrojů. V takových případech se analyzátor spoléhá na seznam zdrojů, které definují relevantní události. Tento seznam se uchovává v seznamu ke zhlédnutí Sources_by_SourceType .
Pokud chcete v parserech použít seznam ke zhlédnutí ASimSourceType, použijte _ASIM_GetSourceBySourceType funkci v části filtrování analyzátoru. Například analyzátor DNS Infoblox obsahuje v části filtrování následující:
| where Computer in (_ASIM_GetSourceBySourceType('InfobloxNIOS'))
Použití této ukázky v analyzátoru:
Nahraďte
Computernázvem pole, které obsahuje informace o zdroji pro váš zdroj. Můžete to zachovat jakoComputerpro všechny analyzátory založené na Syslogu.InfobloxNIOSNahraďte token hodnotou podle vašeho výběru pro váš analyzátor. Informujte uživatele analyzátoruASimSourceType, že musí aktualizovat seznam ke zhlédnutí pomocí vybrané hodnoty a také seznamu zdrojů, které odesílají události tohoto typu.
Filtrování na základě parametrů analyzátoru
Při vývoji analyzátorů filtrování se ujistěte, že váš analyzátor přijímá parametry filtrování pro příslušné schéma, jak je popsáno v referenčním článku pro toto schéma. Použití existujícího analyzátoru jako výchozího bodu zajistí, že váš analyzátor bude obsahovat správný podpis funkce. Ve většině případů je vlastní kód filtrování také podobný pro filtrování analyzátorů pro stejné schéma.
Při filtrování se ujistěte, že:
- Filtrujte před analýzou pomocí fyzických polí. Pokud filtrované výsledky nejsou dostatečně přesné, opakujte test po analýze, abyste výsledky vyladili. Další informace najdete v tématu Optimalizace filtrování.
- Nefiltrujte, pokud parametr není definován a stále má výchozí hodnotu.
Následující příklady ukazují, jak implementovat filtrování pro řetězcový parametr, kde výchozí hodnota je obvykle *, a pro parametr seznamu, kde výchozí hodnotou je obvykle prázdný seznam.
srcipaddr=='*' or ClientIP==srcipaddr
array_length(domain_has_any) == 0 or Name has_any (domain_has_any)
Další informace o následujících položkách najdete v dokumentaci k Kusto:
Optimalizace filtrování
Pokud chcete zajistit výkon analyzátoru, mějte na paměti následující doporučení filtrování:
- Vždy filtrujte podle předdefinovaných polí a ne podle parsovaných polí. I když je někdy snazší filtrovat pomocí parsovaných polí, výrazně to ovlivňuje výkon.
-
Použijte operátory, které poskytují optimalizovaný výkon. Konkrétně
==,hasastartswith. Použití operátorů jakocontainsnebomatches regextaké výrazně ovlivňuje výkon.
Doporučení k filtrování výkonu nemusí být vždy jednoduchá. Například použití has je méně přesné než contains. V jiných případech je porovnání předdefinovaného pole, například SyslogMessage, méně přesné než porovnání extrahovaného pole, například DvcAction. V takových případech doporučujeme předfiltrovat pomocí operátoru optimalizace výkonu před předdefinované pole a po parsování tento filtr opakovat s použitím přesnějších podmínek.
Příklad najdete v následujícím fragmentu kódu analyzátoru DNS Infoblox . Analyzátor nejprve zkontroluje, jestli pole SyslogMessage has obsahuje slovo client. Termín se ale může použít na jiném místě ve zprávě, takže po analýze Log_Type pole analyzátor znovu zkontroluje, že slovo client bylo skutečně hodnotou pole.
Syslog | where ProcessName == "named" and SyslogMessage has "client"
…
| extend Log_Type = tostring(Parser[1]),
| where Log_Type == "client"
Poznámka
Analyzátory by neměly filtrovat podle času, protože dotaz pomocí analyzátoru už filtruje čas.
Analýzy
Jakmile dotaz vybere relevantní záznamy, může je muset analyzovat. Parsování je obvykle potřeba, pokud je v jednom textovém poli sdělováno více polí událostí.
Níže jsou uvedeny operátory KQL, které provádějí analýzu, seřazené podle optimalizace výkonu. První poskytuje nejoptimalejší výkon, zatímco poslední poskytuje nejméně optimalizovaný výkon.
| Operátor/funkce() | Popis |
|---|---|
| split() – funkce | Parsuje řetězec hodnot s oddělovači. |
| parse_csv() | Parsujte řetězec hodnot formátovaných jako řádek CSV (hodnoty oddělené čárkami). |
| operátor parse-kv | Extrahuje strukturované informace z řetězcového výrazu a představuje informace ve formě klíč/hodnota. |
| Operátor parse | Parsujte více hodnot z libovolného řetězce pomocí vzoru, který může být zjednodušeným vzorem s lepším výkonem, nebo regulárním výrazem. |
| extract_all() | Parsování jednotlivých hodnot z libovolného řetězce pomocí regulárního výrazu
extract_all má podobný výkon jako parse v případě, že druhý výraz používá regulární výraz. |
| extract() – funkce | Extrahujte jednu hodnotu z libovolného řetězce pomocí regulárního výrazu. Použití extract poskytuje lepší výkon než parse nebo extract_all v případě, že je potřeba jedna hodnota. Použití více aktivací extract přes stejný zdrojový řetězec je však méně efektivní než jeden parse nebo extract_all a je třeba se mu vyhnout. |
| parse_json() | Parsujte hodnoty v řetězci formátovaného jako JSON. Pokud z JSON potřebujete jenom několik hodnot, můžete použít parse, extractnebo extract_all zajistit lepší výkon. |
| parse_xml() | Parsujte hodnoty v řetězci formátovaného jako XML. Pokud je z xml potřeba jen několik hodnot, použijte parse, extractnebo extract_all poskytuje lepší výkon. |
Normalizace
Mapování názvů polí
Nejjednodušší formou normalizace je přejmenování původního pole na jeho normalizovaný název. Použijte k tomu operátor project-rename . Přejmenování projektu zajistí, že pole bude stále spravováno jako fyzické pole a zpracování pole bude výkonnější. Příklady:
| project-rename
ActorUserId = InitiatingProcessAccountSid,
ActorUserAadId = InitiatingProcessAccountObjectId,
ActorUserUpn = InitiatingProcessAccountUpn,
Normalizace formátu a typu polí
V mnoha případech je třeba původní extrahované hodnoty normalizovat. Například v ASIM používá adresa MAC jako oddělovač dvojtečky, zatímco zdroj může odeslat adresu MAC oddělenou spojovníkem. Primárním operátorem pro transformaci hodnot je extend, společně s širokou sadou řetězců KQL, číselných a datových funkcí.
Aby analyzátory fungovaly, je také důležité zajistit, aby výstupní pole analyzátoru odpovídala typu definovanému ve schématu. Například může být nutné převést řetězec představující datum a čas na pole datetime. V těchto případech jsou užitečné funkce jako todatetime a tohex .
Například původní jedinečné ID události může být odesláno jako celé číslo, ale ASIM vyžaduje, aby hodnotou byl řetězec, aby byla zajištěna široká kompatibilita mezi zdroji dat. Proto při přiřazování zdrojového pole použijte extend místo tostringproject-rename:
| extend EventOriginalUid = tostring(ReportId),
Odvozená pole a hodnoty
Po extrahování může být potřeba namapovat hodnotu zdrojového pole na sadu hodnot zadaných pro pole cílového schématu. Funkce iff, casea lookup můžou být užitečné při mapování dostupných dat na cílové hodnoty.
Například analyzátor DNS společnosti Microsoft přiřadí EventResult pole na základě ID události a kódu odpovědi pomocí následujícího iff příkazu:
extend EventResult = iff(EventId==257 and ResponseCode==0 ,'Success','Failure')
Pokud chcete namapovat několik hodnot, definujte mapování pomocí operátoru datatable a pomocí lookup mapování proveďte mapování. Některé zdroje například hlásí číselné kódy odpovědí DNS a síťový protokol, zatímco schéma vyžaduje běžnější reprezentaci popisků textu pro oba. Následující příklad ukazuje, jak odvodit potřebné hodnoty pomocí a datatablelookup:
let NetworkProtocolLookup = datatable(Proto:real, NetworkProtocol:string)[
6, 'TCP',
17, 'UDP'
];
let DnsResponseCodeLookup=datatable(DnsResponseCode:int,DnsResponseCodeName:string)[
0,'NOERROR',
1,'FORMERR',
2,'SERVFAIL',
3,'NXDOMAIN',
...
];
...
| lookup DnsResponseCodeLookup on DnsResponseCode
| lookup NetworkProtocolLookup on Proto
Všimněte si, že vyhledávání je užitečné a efektivní také v případech, kdy mapování obsahuje pouze dvě možné hodnoty.
Pokud jsou podmínky mapování složitější, zkombinujte iff, casea lookup. Následující příklad ukazuje, jak zkombinovat lookup a case. Pokud lookup vyhledávací hodnota nebyla nalezena, vrátí výše uvedený příklad v poli DnsResponseCodeName prázdnou hodnotu. Následující case příklad ho rozšiřuje o výsledek lookup operace, pokud je k dispozici, a v opačném případě určí další podmínky.
| extend DnsResponseCodeName =
case (
DnsResponseCodeName != "", DnsResponseCodeName,
DnsResponseCode between (3841 .. 4095), 'Reserved for Private Use',
'Unassigned'
)
Microsoft Sentinel poskytuje užitečné funkce pro běžné vyhledávací hodnoty. Například výše uvedené DnsResponseCodeName vyhledávání je možné implementovat pomocí jedné z následujících funkcí:
| extend DnsResponseCodeName = _ASIM_LookupDnsResponseCode(DnsResponseCode)
| invoke _ASIM_ResolveDnsResponseCode('DnsResponseCode')
První možnost přijímá jako parametr hodnotu, kterou chcete vyhledat, a umožní vám zvolit výstupní pole, které je proto užitečné jako obecná vyhledávací funkce. Druhá možnost je více zaměřená na analyzátory, přebírá jako vstup název zdrojového pole a aktualizuje potřebné pole ASIM, v tomto případě DnsResponseCodeName.
Úplný seznam funkcí nápovědy ASIM najdete v tématu Funkce ASIM.
Pole rozšiřování
Kromě polí dostupných ze zdroje obsahuje výsledná událost ASIM pole rozšiřování, která by měl analyzátor vygenerovat. V mnoha případech můžou analyzátory polím přiřadit konstantní hodnotu, například:
| extend
EventCount = int(1),
EventProduct = 'M365 Defender for Endpoint',
EventVendor = 'Microsoft',
EventSchemaVersion = '0.1.0',
EventSchema = 'ProcessEvent'
Dalším typem polí rozšíření, která by měly vaše analyzátory nastavit, jsou pole typu, která určují typ hodnoty uložené v souvisejícím poli. Pole například SrcUsernameType určuje typ hodnoty uložené v SrcUsername poli. Další informace o type polích najdete v popisu entit.
Ve většině případů je typům přiřazena také konstantní hodnota. V některých případech se ale typ musí určit na základě skutečné hodnoty, například:
DomainType = iif (array_length(SplitHostname) > 1, 'FQDN', '')
Microsoft Sentinel poskytuje užitečné funkce pro zpracování rozšiřování. Pomocí následující funkce můžete například automaticky přiřadit pole SrcHostname, SrcDomaina SrcDomainTypeSrcFQDN na základě hodnoty v poli Computer.
| invoke _ASIM_ResolveSrcFQDN('Computer')
Tato funkce nastaví pole následujícím způsobem:
| Pole Počítač | Pole výstupu |
|---|---|
| server 1 | SrcHostname: server1 SrcDomain, SrcDomainType, SrcFQDN– vše prázdné. |
| server1.microsoft.com | SrcHostname: server1 SrcDomain: microsoft.com SrcDomainType: plně kvalifikovaný název domény SrcFQDN:server1.microsoft.com |
Funkce _ASIM_ResolveDstFQDN a _ASIM_ResolveDvcFQDN provádět podobnou úlohu naplnění souvisejících Dst polí a Dvc . Úplný seznam funkcí nápovědy ASIM najdete v tématu Funkce ASIM.
Výběr polí v sadě výsledků
Analyzátor může volitelně vybrat pole v sadě výsledků. Odebrání nepotřebných polí může zvýšit výkon a zvýšit přehlednost tím, že se vyhnete záměně mezi normalizovanými poli a zbývajícími zdrojovými poli.
K výběru polí v sadě výsledků se používají následující operátory KQL:
| Operátor | Popis | Kdy použít v analyzátoru |
|---|---|---|
| project-away | Odebere pole. | Použijte project-away pro konkrétní pole, která chcete ze sady výsledků odebrat. Doporučujeme neodestavovat původní pole, která nejsou normalizována, ze sady výsledků, pokud nevytvoří nejasnosti nebo jsou velmi velká a mohou mít vliv na výkon. |
| Projektu | Vybere pole, která existovala dříve nebo byla vytvořena jako součást příkazu, a odebere všechna ostatní pole. | Nedoporučuje se používat v analyzátoru, protože analyzátor by neměl odebírat žádná jiná pole, která nejsou normalizována. Pokud potřebujete odebrat určitá pole, například dočasné hodnoty použité při analýze, odeberte project-away je z výsledků pomocí příkazu . |
Například při analýze vlastní tabulky protokolů odeberte zbývající původní pole, která mají popisovač typu, následující postup:
| project-away
*_d, *_s, *_b, *_g
Zpracování variant analýzy
Důležité
Různé varianty představují různé typy událostí, běžně mapované na různá schémata, a vyvíjejí samostatné analyzátory.
V mnoha případech události v streamu událostí zahrnují varianty, které vyžadují jinou logiku analýzy. Pokud chcete parsovat různé varianty v jednom analyzátoru, použijte buď podmíněné příkazy, jako iff jsou a case, nebo použijte sjednocovací strukturu.
Pokud chcete použít union ke zpracování více variant, vytvořte pro každou variantu samostatnou funkci a pomocí příkazu union zkombinujte výsledky:
let AzureFirewallNetworkRuleLogs = AzureDiagnostics
| where Category == "AzureFirewallNetworkRule"
| where isnotempty(msg_s);
let parseLogs = AzureFirewallNetworkRuleLogs
| where msg_s has_any("TCP", "UDP")
| parse-where
msg_s with networkProtocol:string
" request from " srcIpAddr:string
":" srcPortNumber:int
…
| project-away msg_s;
let parseLogsWithUrls = AzureFirewallNetworkRuleLogs
| where msg_s has_all ("Url:","ThreatIntel:")
| parse-where
msg_s with networkProtocol:string
" request from " srcIpAddr:string
" to " dstIpAddr:string
...
union parseLogs, parseLogsWithUrls…
Pokud chcete zabránit duplicitním událostem a nadměrnému zpracování, ujistěte se, že každá funkce začíná filtrováním, použitím nativních polí, pouze událostí, které má analyzovat. Pokud je to potřeba, použijte v každé větvi před sjednocením project-away.
Nasazení analyzátorů
Nasaďte analyzátory ručně tak, že je zkopírujete na stránku protokolu Azure monitorování a uložíte dotaz jako funkci. Tato metoda je užitečná pro testování. Další informace najdete v tématu Vytvoření funkce.
Pokud chcete nasadit velký počet analyzátorů, doporučujeme použít šablony ARM analyzátoru, a to následujícím způsobem:
Vytvořte soubor YAML založený na příslušné šabloně pro každé schéma a zahrňte do něj svůj dotaz. Začněte šablonou YAML , která je relevantní pro vaše schéma a typ analyzátoru, filtrování nebo bez parametrů.
Pomocí převaděče šablon ASIM YAML na ARM převeďte soubor YAML na šablonu ARM.
Pokud nasazujete aktualizaci, odstraňte starší verze funkcí pomocí portálu nebo pomocí nástroje PowerShellu pro odstranění funkce.
Nasaďte šablonu pomocí Azure Portal nebo PowerShellu.
Můžete také zkombinovat více šablon do jednoho procesu nasazení pomocí propojených šablon.
Tip
Šablony ARM můžou kombinovat různé prostředky, takže analyzátory je možné nasadit společně s konektory, analytickými pravidly nebo seznamy ke zhlédnutí, abyste mohli jmenovat několik užitečných možností. Váš analyzátor může například odkazovat na seznam ke zhlédnutí nasazený vedle něj.
Testovací analyzátory
Tato část popisuje, že testovací nástroje poskytuje ASIM, které umožňují testovat analyzátory. To znamená, že analyzátory jsou kód, někdy složité, a kromě automatizovaného testování se doporučují standardní postupy pro zajištění kvality, jako jsou revize kódu.
Instalace testovacích nástrojů ASIM
Pokud chcete otestovat ASIM, nasaďte testovací nástroj ASIM do pracovního prostoru Microsoft Sentinel, kde:
- Váš analyzátor je nasazený.
- Zdrojová tabulka používaná analyzátorem je k dispozici.
- Zdrojová tabulka používaná analyzátorem je naplněna různou kolekcí relevantních událostí.
Ověření výstupního schématu
Pokud chcete mít jistotu, že analyzátor vytvoří platné schéma, použijte tester schématu ASIM spuštěním následujícího dotazu na stránce Microsoft Sentinel Protokoly:
<parser name> | getschema | invoke ASimSchemaTester('<schema>')
Výsledky zpracujte takto:
| Error | Akce |
|---|---|
| Chybí povinné pole [<Pole>] | Přidejte pole do analyzátoru. V mnoha případech se jedná o odvozenou nebo konstantní hodnotu, nikoli o pole, které je již ze zdroje k dispozici. |
| Chybějící pole [<Pole>] je povinné, pokud existuje povinný sloupec [<Pole>] | Přidejte pole do analyzátoru. V mnoha případech toto pole označuje typy existujícího sloupce, na který odkazuje. |
| Chybějící pole [<Pole>] je povinné, pokud existuje sloupec [<Pole>] | Přidejte pole do analyzátoru. V mnoha případech toto pole označuje typy existujícího sloupce, na který odkazuje. |
| Chybí povinný alias [<Pole>] alias existujícího sloupce [<Pole>] | Přidání aliasu do analyzátoru |
| Chybí doporučený alias [<Pole>] s aliasem existujícího sloupce [<Pole>] | Přidání aliasu do analyzátoru |
| Chybí volitelný alias [<Pole>] s aliasem existujícího sloupce [<Pole>] | Přidání aliasu do analyzátoru |
| Chybí povinný alias [<Pole>] s aliasem chybějícího sloupce [<Pole>] | Tato chyba doprovází podobnou chybu pro pole s aliasy. Opravte chybu pole s aliasy a přidejte tento alias do analyzátoru. |
| Neshoda typů pro pole [<Pole>]. Aktuálně je [<Type>] a měl by být [<Type>] | Ujistěte se, že je typ normalizovaného pole správný, obvykle pomocí funkce převodu , například tostring. |
| Info | Akce |
|---|---|
| Chybí doporučené pole [<Pole>] | Zvažte přidání tohoto pole do analyzátoru. |
| Info | Akce |
|---|---|
| Chybí doporučený alias [<Pole>] s aliasem neexistující sloupec [<Pole>] | Pokud do analyzátoru přidáte pole s aliasy, nezapomeňte přidat i tento alias. |
| Chybí volitelný alias [<Pole>] s aliasem neexistující sloupec [<Pole>] | Pokud do analyzátoru přidáte pole s aliasy, nezapomeňte přidat i tento alias. |
| Chybí volitelné pole [<Pole>] | I když volitelná pole často chybí, stojí za to zkontrolovat seznam a zjistit, jestli je možné některé z volitelných polí mapovat ze zdroje. |
| Extra nenormalizované pole [<Pole>] | I když jsou nenormalizovaná pole platná, stojí za to zkontrolovat seznam a zjistit, jestli je možné některé z nenormalizovaných hodnot namapovat na volitelné pole. |
Poznámka
Chyby zabrání správnému fungování obsahu používajícího analyzátor. Upozornění nezabrání fungování obsahu, ale mohou snížit kvalitu výsledků.
Ověření výstupních hodnot
Pokud se chcete ujistit, že analyzátor vytváří platné hodnoty, použijte tester dat ASIM spuštěním následujícího dotazu na stránce Microsoft Sentinel Protokoly:
<parser name> | limit <X> | invoke ASimDataTester ('<schema>')
Zadání schématu je volitelné. Pokud není schéma zadáno, EventSchema použije se pole k identifikaci schématu, které má událost dodržovat. Pokud událost neobsahuje pole EventSchema , budou ověřena pouze společná pole. Pokud je schéma zadáno jako parametr, použije se k testování všech záznamů. To je užitečné pro starší analyzátory, které nenastavují EventSchema pole.
Poznámka
I v případě, že schéma není zadané, jsou za názvem funkce potřeba prázdné závorky.
Tento test je náročný na prostředky a nemusí fungovat na celé datové sadě. Nastavte X na největší číslo, pro které nevypadá časový limit dotazu, nebo pomocí výběru časového rozsahu nastavte časový rozsah dotazu.
Výsledky zpracujte takto:
| Zpráva | Akce |
|---|---|
| (0) Chyba: Neshoda typů pro sloupec [<Pole>]. Aktuálně je [<Type>] a měl by být [<Type>] | Ujistěte se, že je typ normalizovaného pole správný, obvykle pomocí funkce převodu , například tostring. |
| (0) Chyba: Neplatné hodnoty (až 10 uvedených) pro pole [<Pole>] typu [<Logický typ>] | Ujistěte se, že analyzátor mapuje správné zdrojové pole na výstupní pole. Pokud je správně namapovaný, aktualizujte analyzátor tak, aby transformoval zdrojová hodnota na správný typ, hodnotu nebo formát. Další informace o správných hodnotách a formátech pro jednotlivé logické typy najdete v seznamu logických typů. Všimněte si, že testovací nástroj uvádí pouze vzorek 10 neplatných hodnot. |
| (1) Upozornění: Prázdná hodnota v povinném poli [<Pole>] | Povinná pole by se měla naplnit, ne jenom definovat. Zkontrolujte, jestli je možné pole naplnit z jiných zdrojů pro záznamy, pro které je aktuální zdroj prázdný. |
| (2) Informace: Prázdná hodnota v doporučeném poli [<Pole>] | Doporučená pole by se obvykle měla naplnit. Zkontrolujte, jestli je možné pole naplnit z jiných zdrojů pro záznamy, pro které je aktuální zdroj prázdný. |
| (2) Informace: Prázdná hodnota ve volitelném poli [<Pole>] | Zkontrolujte, jestli je pole s aliasy povinné nebo doporučené, a pokud ano, jestli je možné ho naplnit z jiných zdrojů. |
Mnoho zpráv také hlásí počet záznamů, které zprávu vygenerovaly, a jejich procento z celkového vzorku. Toto procento je dobrým ukazatelem důležitosti problému. Například pro doporučené pole:
- 90 % prázdných hodnot může značit obecný problém s analýzou.
- 25 % prázdných hodnot může znamenat variantu události, která nebyla správně analyzována.
- Několik prázdných hodnot může být zanedbatelným problémem.
Poznámka
Chyby zabrání správnému fungování obsahu používajícího analyzátor. Upozornění nezabrání fungování obsahu, ale mohou snížit kvalitu výsledků.
Přispívání analyzátorů
Možná budete chtít přispět analyzátorem do primární distribuce ASIM. Pokud je přijmete, budou analyzátory dostupné pro každého zákazníka jako integrované analyzátory ASIM.
Přispívání analyzátorů:
- Vyvíjejte filtrovací analyzátor i analyzátor bez parametrů.
- Vytvořte pro analyzátor soubor YAML, jak je popsáno výše v tématu Nasazení analyzátorů .
- Ujistěte se, že vaše analyzátory projdou všemi testováními bez chyb. Pokud některá upozornění zůstanou, zdokumentujte je v souboru YAML analyzátoru.
- Vytvořte žádost o přijetí změn pro úložiště Microsoft Sentinel GitHub, včetně:
- Vaše soubory YAML parseru ve složkách analyzátoru ASIM (
/Parsers/ASim<schema>/Parsers) - Reprezentativní ukázková data podle pokynů pro odesílání vzorků.
- Výsledky testů podle pokynů pro odeslání výsledků testů.
- Vaše soubory YAML parseru ve složkách analyzátoru ASIM (
Dokumentace přijatých upozornění
Pokud jsou upozornění uvedená testovacími nástroji ASIM považována za platná pro analyzátor, zdokumentujte přijatá upozornění v souboru YAML analyzátoru pomocí části Výjimky, jak je znázorněno v následujícím příkladu.
Exceptions:
- Field: DnsQuery
Warning: Invalid value
Exception: May have values such as "1164-ms-7.1440-9fdc2aab.3b2bd806-978e-11ec-8bb3-aad815b5cd42" which are not valid domains names. Those are related to TKEY RR requests.
- Field: DnsQuery
Warning: Empty value in mandatory field
Exception: May be empty for requests for root servers and for requests for RR type DNSKEY
Upozornění zadané v souboru YAML by mělo být krátkou formou zprávy upozornění, která jednoznačně identifikuje. Hodnota se používá k porovnávání zpráv upozornění při provádění automatizovaných testování a jejich ignorování.
Pokyny pro odesílání ukázek
Ukázková data jsou potřebná k řešení potíží s analyzátorem a k zajištění toho, aby budoucí aktualizace analyzátoru odpovídaly starším ukázkám. Ukázky, které odešlete, by měly obsahovat všechny varianty událostí, které analyzátor podporuje. Ujistěte se, že ukázkové události obsahují všechny možné typy událostí, formáty událostí a varianty, jako jsou události představující úspěšnou a neúspěšnou aktivitu. Také se ujistěte, že jsou reprezentovány varianty ve formátech hodnot. Pokud může být například název hostitele reprezentován jako plně kvalifikovaný název domény nebo jednoduchý název hostitele, ukázkové události by měly obsahovat oba formáty.
Pokud chcete odeslat ukázky událostí, postupujte následovně:
- Na
Logsobrazovce spusťte dotaz, který ze zdrojové tabulky extrahuje pouze události vybrané analyzátorem. Například pro analyzátor DNS Infoblox použijte následující dotaz:
Syslog
| where ProcessName == "named"
Exportujte výsledky pomocí možnosti Exportovat do souboru CSV do souboru s názvem
<EventVendor>_<EventProduct>_<EventSchema>_IngestedLogs.csv, KdeEventProduct,EventProductaEventSchemajsou hodnoty přiřazené analyzátorem k těmto polím.Na
Logsobrazovce spusťte dotaz, který vypíše schéma nebo vstupní tabulku analyzátoru. Například pro stejný analyzátor DNS Infoblox je dotaz:
Syslog
| getschema
Exportujte výsledky pomocí možnosti Exportovat do souboru CSV do souboru s názvem
<TableName>_schema.csv, kdeTableNameje název zdrojové tabulky, který analyzátor používá.Oba soubory do žádosti o přijetí změn vložte do složky
/Sample Data/ASIM. Pokud soubor už existuje, přidejte k názvu popisovač GitHubu, například:<EventVendor>_<EventProduct>_<EventSchema>_SchemaTest_<GitHubHandle>.csv
Pokyny pro odesílání výsledků testů
Výsledky testů jsou důležité k ověření správnosti analyzátoru a pochopení všech nahlášených výjimek.
Pokud chcete odeslat výsledky testu, postupujte následovně:
Spusťte testy analyzátoru, které jsou popsané v části testování .
a exportujte výsledky testů pomocí možnosti Exportovat do souboru CSV do souborů s názvem
<EventVendor>_<EventProduct>_<EventSchema>_SchemaTest.csva<EventVendor>_<EventProduct>_<EventSchema>_DataTest.csvv uvedeném pořadí.Oba soubory do žádosti o přijetí změn vložte do složky
/Parsers/ASim<schema>/Tests.
Další kroky
Tento článek popisuje vývoj analyzátorů ASIM.
Další informace o analyzátorech ASIM:
Další informace o ASIM obecně:
- Podívejte se na podrobný webinář o normalizaci analyzátorů a normalizovaného obsahu Microsoft Sentinel nebo si prohlédněte snímky.
- Přehled modelu ASIM (Advanced Security Information Model)
- Schémata modelu ASIM (Advanced Security Information Model)
- Obsah modelu ASIM (Advanced Security Information Model)