Vývoj analyzátorů advanced security information model (ASIM) (Public Preview)
Uživatelé advanced Security Information Model (ASIM) používají sjednocení analyzátorů místo názvů tabulek v dotazech k zobrazení dat v normalizovaném formátu a zahrnutí všech dat relevantních pro schéma v dotazu. Sjednocení analyzátorů zase používá analyzátory specifické pro zdroj ke zpracování konkrétních podrobností jednotlivých zdrojů.
Microsoft Sentinel poskytuje integrované analyzátory specifické pro zdroj pro mnoho zdrojů dat. Tyto analyzátory specifické pro zdroj můžete chtít upravit nebo vyvíjet 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í v Microsoft Sentinelu k dispozici.
Pokud jsou pro vaše zařízení k dispozici analyzátory specifické pro zdroje ASIM, ale zařízení odesílá události v metodě nebo v jiném formátu, než se očekávalo analyzátory ASIM. Příklad:
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ž která je podporovaná analyzátorem ASIM.
Události se můžou shromažďovat, upravovat a předávat zprostředkujícím systémem.
Informace o tom, jak parsery odpovídají architektuře ASIM, najdete v diagramu architektury ASIM.
Důležité
ASIM je aktuálně ve verzi PREVIEW. Dodatkové podmínky Azure Preview zahrnují další právní podmínky, které se vztahují na funkce Azure, které jsou v beta verzi, preview nebo které ještě nejsou vydány v obecné dostupnosti.
Vlastní proces vývoje analyzátoru ASIM
Následující pracovní postup popisuje základní kroky při vývoji vlastního analyzátoru ASM specifického pro zdroj:
Identifikujte schémata nebo schémata, která události odeslané ze zdroje představují. Další informace najdete v tématu Přehled schématu.
Namapujte pole zdrojových událostí na identifikované schéma nebo schémata.
Vyvíjejte jeden nebo více analyzátorů ASIM pro váš zdroj. Budete muset vytvořit analyzátor filtrování a analyzátor bez parametrů pro každé schéma, které je relevantní pro zdroj.
Otestujte analyzátor.
Nasaďte analyzátory do pracovních prostorů Microsoft Sentinelu.
Aktualizujte příslušný analyzátor ASIM tak, aby odkazovat na nový vlastní analyzátor. Další informace naleznete v tématu Správa analyzátorů ASIM.
Možná budete chtít také přispívat analyzátory do primární distribuce ASIM. Analyzátory, které přispěly, mohou být také zpřístupněny ve všech pracovních prostorech jako integrované analyzátory.
Tento článek vás provede kroky vývoje, testování a nasazení procesu.
Tip
Podívejte se také na webinář hloubkového seznámení s analyzátory normalizace a normalizovaným obsahem služby Microsoft Sentinel nebo si projděte související prezentaci. Další informace najdete v části Další kroky.
Shromažďování ukázkových protokolů
K vytváření efektivních analyzátorů ASIM potřebujete reprezentativní sadu protokolů, což ve většině případů bude vyžadovat nastavení zdrojového systému a jeho připojení k Microsoft Sentinelu. Pokud nemáte dostupné zdrojové zařízení, 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 může vyhledání dokumentace a ukázek dodavatele pro protokoly pomoct zrychlit vývoj a snížit chyby tím, že zajistí pokrytí širokého formátu protokolu.
Reprezentativní sada protokolů by měla zahrnovat:
- Události s různými výsledky událostí
- Události s různými akcemi odezvy.
- 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 pomocí 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.
Mapování plánová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.
- Pokuste se 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.
- Mapuje hodnoty polí ve zdroji na normalizované hodnoty povolené ASIM. Původní hodnota je uložena v samostatném poli, například
EventOriginalResultDetails
.
Vývoj analyzátorů
Vyvíjejte filtr i analyzátor bez parametrů pro každé relevantní schéma.
Vlastní analyzátor je dotaz KQL vyvinutý na stránce Protokoly Microsoft Sentinelu. Dotaz analyzátoru má tři části:
Pole Příprava analýzyfiltru>>
Filtrování
Filtrování relevantních záznamů
V mnoha případech tabulka v Microsoft Sentinelu obsahuje více typů událostí. Příklad:
- Tabulka Syslog obsahuje data z více zdrojů.
- Vlastní tabulky můžou obsahovat informace z jednoho zdroje, který poskytuje více než jeden typ události a může vyhovovat různým schématům.
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 Sysmon událost 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 Syslog a obtížně se odlišují od zpráv Syslog odesílaných z jiných zdrojů. V takových případech analyzátor spoléhá na seznam zdrojů, které definují relevantní události. Tento seznam se udržuje v seznamu ke zhlédnutí Sources_by_SourceType.
Pokud chcete ve svých analyzátorech použít seznam ke zhlédnutí ASimSourceType, použijte _ASIM_GetSourceBySourceType
funkci v části filtrování analyzátoru. Analyzátor DNS Infoblox například obsahuje následující informace v části filtrování:
| where Computer in (_ASIM_GetSourceBySourceType('InfobloxNIOS'))
Pokud chcete použít tuto ukázku v analyzátoru:
Nahraďte
Computer
názvem pole, které obsahuje informace o zdroji pro váš zdroj. Můžete ho ponechat proComputer
všechny analyzátory založené na Syslogu.InfobloxNIOS
Nahraďte token hodnotou podle vašeho výběru analyzátoru. Informujte uživatele analyzátoruASimSourceType
, že musí aktualizovat seznam ke zhlédnutí pomocí vybrané hodnoty a také seznam 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 analyzátor přijímá parametry filtrování pro příslušné schéma, jak je uvedeno v referenčním článku pro toto schéma. Použití existujícího analyzátoru jako výchozího bodu zajistí, že analyzátor obsahuje správný podpis funkce. Ve většině případů je skutečný kód filtrování podobný také pro filtrování analyzátorů pro stejné schéma.
Při filtrování se ujistěte, že:
- Před parsováním pomocí fyzických polí můžete filtrovat. Pokud filtrované výsledky nejsou dostatečně přesné, opakujte test po parsování a vylaďte výsledky. 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 parametr řetězce, kde výchozí hodnota je obvykle *, a pro parametr seznamu, kde výchozí hodnota 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 Kusto:
Optimalizace filtrování
Abyste zajistili výkon analyzátoru, poznamenejte si následující doporučení filtrování:
- Vždy filtrujte předdefinovaná pole a ne parsovaná pole. I když je někdy snazší filtrovat pomocí analyzovaných polí, výrazně ovlivňuje výkon.
- Použijte operátory, které poskytují optimalizovaný výkon. Zejména ,
==
,has
astartswith
. Použití operátorů, jakocontains
jsou nebomatches regex
také výrazně ovlivňují výkon.
Doporučení pro filtrování výkonu nemusí být vždy snadná. 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
. Vtakovýchch materiálech doporučujeme v takových případech ještě předfiltrovat a opakovat filtr s použitím přesnějších podmínek po parsování.
Příklad najdete v následujícím fragmentu kódu analyzátoru DNS infobloxu. Analyzátor nejprve zkontroluje, zda SyslogMessage pole has
slovo client
. Termín se ale může použít na jiném místě ve zprávě, takže po parsování 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ýza
Jakmile dotaz vybere relevantní záznamy, může je potřeba je analyzovat. Analýza se obvykle vyžaduje, pokud je v jednom textovém poli vyjádřeno 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 nejoptimaličtější výkon, zatímco poslední poskytuje nejméně optimalizovaný výkon.
Operator/function() | Popis |
---|---|
split() | Parsování řetězce hodnot s oddělovači |
parse_csv() | Parsujte řetězec hodnot formátovaných jako řádek CSV (hodnoty oddělené čárkami). |
parse-kv – operátor | Extrahuje strukturované informace z řetězcového výrazu a představuje informace ve formuláři klíč/hodnota. |
parse – operátor | 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() | Parsuje jednotlivé hodnoty z libovolného řetězce pomocí regulárního výrazu. extract_all má podobný výkon, jako parse kdyby druhý výraz používal regulární výraz. |
extract() | 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 pokud 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 je třeba se vyhnout. |
parse_json() | Parsujte hodnoty v řetězci formátovaného jako JSON. Pokud z JSON potřebujete jenom několik hodnot, použijte funkci parse , extract nebo extract_all zajistíte lepší výkon. |
parse_xml() | Parsujte hodnoty v řetězci formátovaného jako XML. Pokud z XML potřebujete jenom několik hodnot, použijte , nebo parse extract extract_all poskytuje lepší výkon. |
Normalizování
Mapování názvů polí
Nejjednodušší formou normalizace je přejmenování původního pole na jeho normalizovaný název. Použijte pro to operátor project-rename
. Použití přejmenování projektu zajišťuje, že je pole stále spravováno jako fyzické pole a zpracování pole je výkonnější. Příklad:
| project-rename
ActorUserId = InitiatingProcessAccountSid,
ActorUserAadId = InitiatingProcessAccountObjectId,
ActorUserUpn = InitiatingProcessAccountUpn,
Normalizace formátu a typu polí
V mnoha případech musí být extrahovaná původní hodnota normalizována. Například v ASIM adresa MAC používá dvojtečky jako oddělovač, zatímco zdroj může odeslat adresu MAC s oddělovači s oddělovači. Primárním operátorem transformace hodnot je extend
společně se širokou sadou řetězců KQL, číselných a kalendářních funkcí.
Kromě toho je důležité zajistit, aby výstupní pole analyzátoru odpovídala typu definovanému ve schématu, aby parsery fungovaly. Můžete například převést řetězec představující datum a čas na pole datetime. Funkce, jako todatetime
jsou a tohex
jsou v těchto případech užitečné.
Například původní jedinečné ID události může být odesláno jako celé číslo, ale ASIM vyžaduje, aby hodnota byla řetězec, aby se zajistila široká kompatibilita mezi zdroji dat. Proto při přiřazování použití extend
zdrojového pole a tostring
místo project-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
, case
a lookup
mohou být užitečné pro mapování dostupných dat na cílové hodnoty.
Analyzátor DNS microsoftu například přiřadí EventResult
pole na základě ID události a kódu odpovědi pomocí 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 použijte lookup
k provedení mapování. Například některé zdroje hlásí číselné kódy odpovědí DNS a síťový protokol, zatímco schéma vyžaduje častější reprezentaci popisků textu pro obojí. Následující příklad ukazuje, jak odvodit potřebné hodnoty pomocí datatable
a lookup
:
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ší, kombinují iff
, a lookup
. case
Následující příklad ukazuje, jak kombinovat lookup
a case
. Výše lookup
uvedený příklad vrátí prázdnou hodnotu v poli DnsResponseCodeName
, pokud se vyhledávací hodnota nenajde. Následující case
příklad ho lookup
rozšíří o výsledek operace, pokud je k dispozici, a v opačném případě zadá 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. Vyhledávání výše lze například DnsResponseCodeName
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, která se má vyhledat, a umožňuje zvolit výstupní pole, a proto je 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 o funkcích ASIM.
Pole rozšiřování
Kromě polí dostupných ze zdroje obsahuje výsledná událost ASIM pole pro rozšiřování, která by měla analyzátor vygenerovat. V mnoha případech mohou analyzátory přiřadit konstantní hodnotu polím, například:
| extend
EventCount = int(1),
EventProduct = 'M365 Defender for Endpoint',
EventVendor = 'Microsoft',
EventSchemaVersion = '0.1.0',
EventSchema = 'ProcessEvent'
Dalším typem pole rozšiřování, která mají být nastavena analyzátory, 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 polích typů najdete v popisu entit.
Ve většině případů jsou typy také přiřazeny konstantní hodnotu. V některých případech je však nutné určit typ 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
, SrcDomainType
SrcDomain
a SrcFQDN
na základě hodnoty v poli Computer
.
| invoke _ASIM_ResolveSrcFQDN('Computer')
Tato funkce nastaví pole následujícím způsobem:
Pole Počítač | Výstupní pole |
---|---|
server1 | SrcHostname: server1 SrcDomain, SrcDomainType, SrcFQDN všechny prázdné |
server1.microsoft.com | SrcHostname: server1 SrcDomain: microsoft.com SrcDomainType: plně kvalifikovaný název domény SrcFQDN:server1.microsoft.com |
_ASIM_ResolveDstFQDN
Funkce a _ASIM_ResolveDvcFQDN
provedení podobné úlohy naplňují související Dst
pole a Dvc
pole. Úplný seznam funkcí nápovědy ASIM najdete v tématu o funkcích 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 zabrání matoucím 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 |
---|---|---|
pryč od projektu | Odebere pole. | Slouží project-away pro konkrétní pole, která chcete ze sady výsledků odebrat. Doporučujeme neodejmout 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. |
projekt | 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á další pole, která nejsou normalizována. Pokud potřebujete odebrat konkrétní pole, jako jsou dočasné hodnoty použité při analýze, použijte project-away je k jejich odebrání z výsledků. |
Například při analýze vlastní tabulky protokolu pomocí následujícího příkazu odeberte zbývající původní pole, která mají stále popisovač typu:
| 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, vyvíjejí samostatné analyzátory.
V mnoha případech události ve streamu událostí zahrnují varianty, které vyžadují jinou logiku analýzy. Pokud chcete analyzovat různé varianty v jednom analyzátoru, použijte podmíněné příkazy, jako iff
case
je a 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í sjednocovacího příkazu 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…
Aby nedocházelo k duplicitním událostem a nadměrnému zpracování, ujistěte se, že každá funkce začíná filtrováním, pomocí nativních polí, pouze událostí, které má analyzovat. V případě potřeby také před sjednocením používejte projekt mimo každou větev.
Nasazení analyzátorů
Analyzátory nasaďte ručně tak, že je zkopírujete na stránku protokolu služby Azure Monitor 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 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 váš dotaz. Začněte šablonou YAML , která je relevantní pro váš typ schématu a analyzátoru, filtrování nebo méně parametrů.
Pomocí převaděče šablony 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í webu Azure Portal nebo PowerShellu.
Pomocí propojených šablon můžete také zkombinovat více šablon do jednoho procesu nasazení.
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í a pojmenovat několik užitečných možností. Analyzátor může například odkazovat na seznam ke zhlédnutí nasazený společně s ním.
Analyzátory testů
Tato část popisuje, že testovací nástroje ASIM poskytují, které umožňují testovat analyzátory. Analyzátory jsou kódy, někdy složité a kromě automatizovaného testování se doporučují i standardní postupy kontroly 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 Služby Microsoft Sentinel, kde:
- Váš analyzátor se nasadí.
- Zdrojová tabulka používaná analyzátorem je k dispozici.
- Zdrojová tabulka používaná analyzátorem je naplněna pestrou kolekcí relevantních událostí.
Ověření výstupního schématu
Pokud chcete zajistit, aby analyzátor vytvořil platné schéma, použijte tester schématu ASIM spuštěním následujícího dotazu na stránce Protokoly Microsoft Sentinelu:
<parser name> | getschema | invoke ASimSchemaTester('<schema>')
Výsledky zpracujte následujícím způsobem:
Chyba | Akce |
---|---|
Chybí povinné pole [<Pole>] | Přidejte pole do analyzátoru. V mnoha případech by to byla odvozená nebo konstantní hodnota, a ne pole, které je již dostupné ze zdroje. |
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 sloupec [<Pole>] existuje. | 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>] aliasing existujícího sloupce [<Pole>] | Přidání aliasu do analyzátoru |
Chybí doporučený alias [<Pole>] aliasing existujícího sloupce [<Pole>] | Přidání aliasu do analyzátoru |
Chybí volitelný alias [<Pole>] aliasing existujícího sloupce [<Pole>] | Přidání aliasu do analyzátoru |
Chybí povinný alias [<Pole>] s chybějícím sloupcem [<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>]. Je aktuálně [<Typ>] a měl by být [<Typ>] | Ujistěte se, že typ normalizovaného pole je správný, obvykle pomocí funkce převodu, například tostring . |
Informace | Akce |
---|---|
Chybí doporučené pole [<Pole>] | Zvažte přidání tohoto pole do analyzátoru. |
Informace | Akce |
---|---|
Chybí doporučený alias [<Pole>] – neexistující sloupec [<Pole>] | Pokud do analyzátoru přidáte pole s aliasem, nezapomeňte přidat i tento alias. |
Chybějící volitelný alias [<Pole>] – neexistující sloupec [<Pole>] | Pokud do analyzátoru přidáte pole s aliasem, nezapomeňte přidat i tento alias. |
Chybí volitelné pole [<Pole>] | I když volitelná pole často chybí, je vhodné seznam zkontrolovat a zjistit, jestli některá z nepovinných polí může být namapována ze zdroje. |
Nadbytečné nenormalizované pole [<Pole>] | I když jsou nenormalizovaná pole platná, je vhodné seznam zkontrolovat a zjistit, jestli některé z nenormalizovaných hodnot lze mapovat na volitelné pole. |
Poznámka:
Chyby zabrání správnému fungování obsahu analyzátoru. Upozornění nezabrání tomu, aby obsah fungoval, ale může snížit kvalitu výsledků.
Ověření výstupních hodnot
Pokud chcete zajistit, aby analyzátor vytvořil platné hodnoty, použijte tester dat ASIM spuštěním následujícího dotazu na stránce Protokoly Microsoft Sentinelu:
<parser name> | limit <X> | invoke ASimDataTester ('<schema>')
Zadání schématu je volitelné. Pokud schéma není zadané, použije se pole k identifikaci schématu, EventSchema
které má událost dodržovat. Ig událost neobsahuje EventSchema
pole, ověří se pouze běžná pole. Pokud je schéma zadáno jako parametr, toto schéma se použije k otestová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í zadáno, 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é sadě dat. Nastavte X na největší číslo, pro které dotaz nevyjde časový limit, nebo nastavte časový rozsah dotazu pomocí výběru časového rozsahu.
Výsledky zpracujte následujícím způsobem:
Zpráva | Akce |
---|---|
(0) Chyba: Neshoda typů pro sloupec [<Pole>]. Je aktuálně [<Typ>] a měl by být [<Typ>] | Ujistěte se, že typ normalizovaného pole je správný, obvykle pomocí funkce převodu, například tostring . |
(0) Chyba: Neplatné hodnoty (až 10 uvedené) pro pole [<Pole>] typu [<Logický typ>] | Ujistěte se, že analyzátor mapuje správné zdrojové pole na výstupní pole. Pokud je namapován správně, aktualizujte analyzátor tak, aby transformoval zdrojovou hodnotu na správný typ, hodnotu nebo formát. Další informace o správných hodnotách a formátech pro každý logický typ 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 vyplňovat, ne jenom definovat. Zkontrolujte, jestli se pole dá 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 vyplňovat. Zkontrolujte, jestli se pole dá naplnit z jiných zdrojů pro záznamy, pro které je aktuální zdroj prázdný. |
(2) Informace: Prázdná hodnota v volitelném poli [<Pole>] | Zkontrolujte, jestli je pole s aliasem 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 celkového vzorku. Toto procento je dobrým indikátorem důležitosti problému. Například pro doporučené pole:
- 90% prázdné hodnoty můžou znamenat obecný problém analýzy.
- 25% prázdné hodnoty mohou znamenat variantu události, která nebyla správně analyzována.
- Několika prázdnými hodnotami může být zanedbatelný problém.
Poznámka:
Chyby zabrání správnému fungování obsahu analyzátoru. Upozornění nezabrání tomu, aby obsah fungoval, ale může snížit kvalitu výsledků.
Přispívání analyzátorů
Možná budete chtít přispívat analyzátorem do primární distribuce ASIM. Pokud to přijmete, budou analyzátory dostupné každému zákazníkovi jako integrované analyzátory ASIM.
Přispívání analyzátorů:
- Vyvíjejte analyzátor filtrování i analyzátor bez parametrů.
- Vytvořte soubor YAML pro analyzátor, jak je popsáno v části Nasazení analyzátorů výše.
- Ujistěte se, že analyzátory projdou všemi testy bez chyb. Pokud jsou některá upozornění ponechána, zdokumentujte je v souboru YAML analyzátoru.
- Vytvořte žádost o přijetí změn pro úložiště GitHub pro Microsoft Sentinel, včetně následujících:
Zdokumentování 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í oddílu 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á ke shodě zpráv s upozorněním při provádění automatizovaných testů a jejich ignorování.
Pokyny pro odeslání ukázek
Ukázková data jsou potřeba při řešení potíží s analyzátorem a k zajištění budoucích aktualizací analyzátoru odpovídajících 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 zahrnují všechny možné typy událostí, formáty událostí a varianty, jako jsou události představující úspěšné a neúspěšné aktivity. Také se ujistěte, že jsou reprezentovány varianty ve formátech hodnot. Pokud je například název hostitele reprezentován jako plně kvalifikovaný název domény nebo jednoduchý název hostitele, měly by ukázkové události obsahovat oba formáty.
Ukázky událostí odešlete pomocí následujících kroků:
- Na
Logs
obrazovce spusťte dotaz, který extrahuje ze zdrojové tabulky 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
WhereEventProduct
EventProduct
aEventSchema
jsou hodnotami přiřazenými analyzátorem k těmto polím.Na
Logs
obrazovce spusťte dotaz, který vypíše schéma nebo vstupní tabulku analyzátoru. Například pro stejný analyzátor DNS infobloxu je dotaz:
Syslog
| getschema
Exportujte výsledky pomocí možnosti Exportovat do souboru CSV do souboru s názvem
<TableName>_schema.csv
, kdeTableName
je název zdrojové tabulky, která analyzátor používá.Do složky
/Sample Data/ASIM
zahrňte oba soubory. Pokud soubor již existuje, přidejte do názvu popisovač GitHubu, například:<EventVendor>_<EventProduct>_<EventSchema>_SchemaTest_<GitHubHandle>.csv
Pokyny k odeslání výsledků testů
Výsledky testů jsou důležité k ověření správnosti analyzátoru a pochopení všech ohlášených výjimek.
K odeslání výsledků testu použijte následující kroky:
Spusťte testy analyzátoru a popsané v části Testování .
a výsledky testů exportujte pomocí možnosti Exportovat do souboru CSV do souborů pojmenovaných
<EventVendor>_<EventProduct>_<EventSchema>_SchemaTest.csv
a<EventVendor>_<EventProduct>_<EventSchema>_DataTest.csv
v uvedeném pořadí.Do složky
/Parsers/ASim<schema>/Tests
zahrňte oba soubory.
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 v Microsoft Sentinelu nebo se podívejte na snímky.
- Přehled rozšířeného modelu informací o zabezpečení (ASIM)
- Schémata advanced Security Information Model (ASIM)
- Obsah rozšířeného modelu informací o zabezpečení (ASIM)