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

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:

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

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 Computer názvem pole, které obsahuje informace o zdroji pro váš zdroj. Můžete to 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 ASimSourceType , ž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ě ==, hasa startswith. Použití operátorů jako contains nebo matches regex také 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:

  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 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ů:

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

  • 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.csv a <EventVendor>_<EventProduct>_<EventSchema>_DataTest.csv v 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ě: