Vývoj analyzátorů ASIM (Advanced Security Information Model) (Public Preview)

Uživatelé modelu ASIM (Advanced Security Information Model) používají ve svých dotazech unifikační 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í o každém zdroji.

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:

  • Když 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í ve službě Microsoft Sentinel k dispozici.

  • Když jsou pro vaše zařízení k dispozici analyzátory specifické pro zdroj ASIM, ale vaše zařízení odesílá události v jiné metodě nebo formátu, než očekávaly analyzátory ASIM. Příklad:

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

    • Zprostředkující systém může shromažďovat, upravovat a předávat události.

Informace o tom, jak analyzátory zapadají do architektury ASIM, najdete v diagramu architektury ASIM.

Důležité

ASIM je aktuálně ve verzi PREVIEW. Dodatkové podmínky Azure Preview obsahují další právní podmínky, které se vztahují na funkce Azure, které jsou v beta verzi, verzi Preview nebo jinak ještě nejsou obecně dostupné.

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, který je specifický pro zdroj:

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

  2. Identifikujte schémata nebo schémata, která představují události odeslané ze zdroje. 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. 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ů.

  5. Otestujte analyzátor.

  6. Nasaďte analyzátory do pracovních prostorů služby Microsoft Sentinel.

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

  8. Možná budete chtít také přispět 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 procesu vývoje, testování a nasazení.

Shromažďová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í ke službě Microsoft Sentinel. Pokud zdrojové zařízení nemáte k dispozici, cloudové služby s průběžnými 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 pro protokoly od dodavatele pomoct zrychlit vývoj a omezit chyby tím, že zajistíte pokrytí širokým formátem protokolu.

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ědi.
  • Různé formáty uživatelského jména, názvu hostitele a ID a dalších polí, 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 obzvláště 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.
  • Mapovat 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ů

Vytvořte filtr i parser bez parametrů pro každé relevantní schéma.

Vlastní analyzátor je dotaz KQL vyvinutý na stránce Protokoly služby Microsoft Sentinel. 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 ve službě Microsoft Sentinel obsahuje několik typů událostí. Příklad:

  • 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 obtížně se odlišují od zpráv Syslog odeslaných z jiných zdrojů. V takových případech se analyzátor spoléhá na seznam zdrojů, který definuje relevantní události. Tento seznam se uchovává v seznamu ke zhlédnutí Sources_by_SourceType .

Pokud chcete v analyzátorech použít konsolidovaný seznam ASimSourceType, použijte _ASIM_GetSourceBySourceType funkci v oddílu 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 Computer názvem pole, které obsahuje informace o zdroji pro váš zdroj. Můžete ho zachovat jako Computer pro všechny analyzátory založené na Syslogu.

  • InfobloxNIOS Nahraďte token hodnotou podle vašeho výběru pro váš analyzátor. Informujte uživatele analyzátoru, že musí aktualizovat ASimSourceType konsolidovaný seznam 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 analyzátor zahrne správný podpis funkce. Ve většině případů je skutečný kód filtrování také podobný pro filtrování analyzátorů pro stejné schéma.

Při filtrování se ujistěte, že:

  • Před analýzou pomocí fyzických polí filtrujte. 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í.
  • Pokud parametr není definovaný a stále má výchozí hodnotu, nefiltrujte ho.

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í hodnotou je obvykle prázdný seznam.

srcipaddr=='*' or ClientIP==srcipaddr
array_length(domain_has_any) == 0 or Name has_any (domain_has_any)

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í, nikoli podle parsovaných polí. I když je někdy jednodušší filtrovat pomocí analyzovaných polí, výrazně to ovlivňuje výkon.
  • Použijte operátory, které poskytují optimalizovaný výkon. Konkrétně ==, hasa startswith. Použití operátorů, jako contains je nebo matches regex také, má výrazný vliv na 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 pro optimalizaci výkonu před předdefinované pole a po parsování tento filtr zopakovat 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, že v poli has SyslogMessage slovo client. Termín však může být použit 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ý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 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 nejoptimalnější výkon, zatímco poslední poskytuje nejméně optimalizovaný výkon.

Operátor Popis
Rozdělit Parsovat řetězec hodnot s oddělovači.
parse_csv Parsujte řetězec hodnot formátovaných jako řádek csv (hodnoty oddělené čárkami).
parse-kv Extrahuje strukturované informace z řetězcového výrazu a představuje informace ve formě klíč/hodnota.
Analyzovat Parsování více hodnot z libovolného řetězce pomocí vzoru, což může být zjednodušený vzor s lepším výkonem nebo regulární výraz.
extract_all Parsuje jednotlivé hodnoty 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.
Extrahovat 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ž jedna parse nebo extract_all a je třeba se vyhnout.
parse_json Parsujte hodnoty v řetězci formátovaného jako JSON. Pokud je z JSON potřeba jenom několik hodnot, použijte parse, extractnebo extract_all zajistíte lepší výkon.
parse_xml Parsujte hodnoty v řetězci formátované jako XML. Pokud je z XML potřeba jen několik hodnot, použijte , parseextractnebo extract_all poskytuje lepší výkon.

Normalizace

Názvy polí mapování

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říklad:

 | project-rename
    ActorUserId = InitiatingProcessAccountSid,
    ActorUserAadId = InitiatingProcessAccountObjectId,
    ActorUserUpn = InitiatingProcessAccountUpn,

Normalizace formátu a typu polí

V mnoha případech je třeba normalizovat původní extrahovanou hodnotu. Například v ASIM používá adresa MAC jako oddělovač dvojtečky, zatímco zdroj může odeslat adresu MAC s oddělovači spojovníků. Primárním operátorem pro transformaci hodnot je extend, spolu s širokou sadou řetězců KQL, číselných a datových funkcí.

Pro fungování analyzátorů je také důležité zajistit, aby výstupní pole analyzátoru odpovídala typu definovanému ve schématu. Může být například potřeba 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 hodnota byla ř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 mohou být užitečné k 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 mapovat několik hodnot, definujte mapování pomocí operátoru datatable a použijte lookup ho k provedení 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í 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ší, zkombinujte iff, casea lookup. Následující příklad ukazuje, jak zkombinovat lookup a case. Výše lookup uvedený příklad vrátí prázdnou hodnotu v poli DnsResponseCodeName , pokud nebyla nalezena vyhledávací hodnota. Následující case příklad ho lookup rozšíří o výsledek 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í lze 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 pro vyhledávání a umožňuje vám zvolit výstupní pole, které je proto užitečné jako obecná vyhledávací funkce. Druhá možnost je více zaměřena 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 obohacování, která by měl 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 polí pro rozšiřování, 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 polích typu 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, SrcDomainTypeSrcDomaina 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č Pole výstupu
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

Funkce _ASIM_ResolveDstFQDN a _ASIM_ResolveDvcFQDN provést podobnou úlohu naplnění souvisejících Dst polí aDvc. Ú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 srozumitelnost tím, že se zabrání 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 nemusí 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á další pole, která nejsou normalizována.

Pokud potřebujete odebrat konkrétní 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ů pomocí následujícího postupu odeberte zbývající původní pole, která mají 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 a 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 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…

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žijte project-away v každé větvi.

Nasazení analyzátorů

Nasaďte analyzátory 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 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ů.

  2. Pomocí převaděče šablon 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í 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 parsery je možné nasadit společně s konektory, analytickými pravidly nebo seznamy ke zhlédnutí, abyste jmenovali 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. Analyzátory jsou ale kód, někdy složité, a kromě automatizovaného testování se doporučují standardní postupy zabezpečová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 služby 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 zajistit, aby váš 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 služby Microsoft Sentinel:

<parser name> | getschema | invoke ASimSchemaTester('<schema>')

Výsledky zpracujte takto:

Chyba 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ž 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 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ějící doporučený alias [<Pole>] aliasující existující sloupec [<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ějící 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>]. V současné době je [<Type>] a měl by být [<Type>] Ujistěte se, že je typ normalizovaného pole správný, obvykle pomocí převodní funkce , jako tostringje .
Informace Akce
Chybí doporučené pole [<Pole>] Zvažte přidání tohoto pole do analyzátoru.
Informace Akce
Chybí doporučený alias [<Pole>] aliasing neexistující sloupec [<Pole>] Pokud přidáte pole s aliasy do analyzátoru, nezapomeňte přidat také tento alias.
Chybějící volitelný alias [<Pole>] aliasing neexistující sloupec [<Pole>] Pokud přidáte pole s aliasy do analyzátoru, nezapomeňte přidat také 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 pomocí analyzátoru. Upozornění nezabrání fungování obsahu, ale můžou snížit kvalitu výsledků.

Ověření výstupních hodnot

Pokud chcete zajistit, aby váš analyzátor vytvořil platné hodnoty, použijte tester dat ASIM spuštěním následujícího dotazu na stránce Protokoly služby Microsoft Sentinel:

<parser name> | limit <X> | invoke ASimDataTester ('<schema>')

Zadání schématu je volitelné. Pokud schéma není zadáno, EventSchema použije se pole k identifikaci schématu, které má událost dodržovat. Ig událost neobsahuje EventSchema pole, 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é u starších analyzátorů, 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í nástroje pro výběr časového rozsahu nastavte časový rozsah dotazu.

Výsledky zpracujte takto:

Message Akce
(0) Chyba: Neshoda typu pro sloupec [<Pole>]. V současné době je [<Type>] a měl by být [<Type>] Ujistěte se, že je typ normalizovaného pole správný, obvykle pomocí převodní funkce , jako tostringje .
(0) Chyba: Neplatné hodnoty (až 10 v seznamu) 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 zdrojovou hodnotu 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 lze pole naplnit z jiných zdrojů u záznamů, pro které je aktuální zdroj prázdný.
(2) Informace: Prázdná hodnota v doporučeném poli [<Pole>] Obvykle by se měla naplnit doporučená pole. Zkontrolujte, jestli lze pole naplnit z jiných zdrojů u záznamů, 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 se dá naplnit z jiných zdrojů.

Mnoho zpráv také uvádí počet záznamů, které zprávu vygenerovaly, a jejich procento z celkového vzorku. Toto procento je dobrým indikátorem důležitosti problému. Například pro doporučené pole:

  • 90 % prázdných hodnot může znamenat 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ů.

Analyzátory přispívání

Možná budete chtít přispět analyzátorem k primární distribuci ASIM. V případě přijetí budou analyzátory dostupné každému zákazníkovi jako předdefinované analyzátory ASIM.

Přispívání analyzátorů:

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 stručnou formou jednoznačně identifikující varovné zprávy. Hodnota se používá k porovnání zpráv upozornění při provádění automatizovaných testů a jejich ignorování.

Pokyny pro odesílání ukázek

Ukázková data jsou potřeba při ř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 zahrnují 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 variace 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.

Ukázky událostí odešlete následujícím postupem:

  • Na Logs obrazovce 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, Kde EventProduct, EventProducta EventSchema jsou hodnoty přiřazené analyzátorem 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 Infoblox 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 své žádosti o přijetí změn zahrňte oba soubory do složky /Sample Data/ASIM. Pokud už soubor existuje, přidejte k názvu popisovač GitHubu, například: <EventVendor>_<EventProduct>_<EventSchema>_SchemaTest_<GitHubHanlde>.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.

Pokud chcete odeslat výsledky testu, postupujte následovně:

  • Spusťte testy analyzátoru, které jsou popsané v části testování .

  • a výsledky testů exportujte pomocí možnosti Exportovat do souboru CSV do souborů s názvem <EventVendor>_<EventProduct>_<EventSchema>_SchemaTest.csv a <EventVendor>_<EventProduct>_<EventSchema>_DataTest.csv v uvedeném pořadí.

  • Do své žádosti o přijetí změn zahrňte oba soubory 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ě: