Sdílet prostřednictvím


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:

  1. Shromážděte ukázkové protokoly.

  2. Identifikujte schémata nebo schémata, která události odeslané ze zdroje představují. Další informace najdete v tématu Přehled schématu.

  3. Namapujte pole zdrojových událostí na identifikované schéma nebo schémata.

  4. 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.

  5. Otestujte analyzátor.

  6. Nasaďte analyzátory do pracovních prostorů Microsoft Sentinelu.

  7. 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.

  8. 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 pro Computer 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átoru ASimSourceType , ž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 , ==, hasa startswith. Použití operátorů, jako contains jsou nebo matches 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, extractnebo 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 parseextractextract_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 extendspoleč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, casea 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 SrcDomaina 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 caseje 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:

  1. 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ů.

  2. Pomocí převaděče šablony ASIM Yaml na ARM převeďte soubor YAML na šablonu ARM.

  3. Pokud nasazujete aktualizaci, odstraňte starší verze funkcí pomocí portálu nebo pomocí nástroje PowerShellu pro odstranění funkce.

  4. 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:
    • Vaše analyzátory souborů YAML ve složkách analyzátoru ASIM (/Parsers/ASim<schema>/Parsers)
    • Reprezentativní ukázková data podle pokynů pro odeslání vzorků.
    • Výsledky testů podle pokynů k odeslání výsledků testů.

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.csvWhere EventProductEventProducta EventSchema 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, kde TableName je název zdrojové tabulky, která analyzátor používá.

  • Do složky /Sample Data/ASIMzahrň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>/Testszahrň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ě: