Megosztás a következőn keresztül:


Advanced Security Information Model (ASIM) elemzők fejlesztése (nyilvános előzetes verzió)

Az Advanced Security Information Model (ASIM) felhasználói egyesítő elemzőket használnak a lekérdezéseikben lévő táblanevek helyett, normalizált formátumban tekintik meg az adatokat, és a lekérdezésbe belefoglalják a sémához kapcsolódó összes adatot. Az elemzők egyesítése a forrásspecifikus elemzők használatával kezeli az egyes forrásadatok részleteit.

A Microsoft Sentinel számos adatforráshoz biztosít beépített, forrásspecifikus elemzőket. Ezeket a forrásspecifikus elemzőket a következő helyzetekben érdemes módosítani vagy fejleszteni:

  • Ha az eszköz olyan eseményeket biztosít, amelyek megfelelnek az ASIM-sémának, de az eszköz és a vonatkozó séma forrásspecifikus elemzője nem érhető el a Microsoft Sentinelben.

  • Ha az eszközhöz rendelkezésre állnak ASIM-forrásspecifikus elemzők, de az eszköz az ASIM-elemzők által várttól eltérő módszerrel vagy formátumban küldi el az eseményeket. Példa:

    • Előfordulhat, hogy a forráseszköz úgy van konfigurálva, hogy nem szabványos módon küldjön eseményeket.

    • Előfordulhat, hogy az eszköz verziója eltér az ASIM-elemző által támogatott verziótól.

    • Az eseményeket egy közvetítő rendszer gyűjtheti, módosíthatja és továbbíthatja.

Ha szeretné megtudni, hogy az elemzők hogyan illeszkednek az ASIM-architektúrába, tekintse meg az ASIM architektúradiagramot.

Fontos

Az ASIM jelenleg előzetes verzióban érhető el. Az Azure Előzetes verzió kiegészítő feltételei további jogi feltételeket tartalmaznak, amelyek a bétaverzióban, előzetes verzióban vagy más módon még nem általánosan elérhető Azure-funkciókra vonatkoznak.

Egyéni ASIM-elemző fejlesztési folyamat

Az alábbi munkafolyamat az egyéni ASIM- és forrásspecifikus elemzők fejlesztésének magas szintű lépéseit ismerteti:

  1. Mintanaplók gyűjtése.

  2. Azonosítsa a forrásból küldött események által képviselt sémákat vagy sémákat. További információ: Séma áttekintése.

  3. A forráseseménymezők leképezése az azonosított sémákra vagy sémákra.

  4. Fejlesszen ki egy vagy több ASIM-elemzőt a forráshoz. A forráshoz kapcsolódó összes sémához ki kell dolgoznia egy szűrőelemzőt és egy paraméter nélküli elemzőt.

  5. Tesztelje az elemzőt.

  6. Helyezze üzembe az elemzőket a Microsoft Sentinel-munkaterületeken.

  7. Frissítse a megfelelő ASIM-egyesítési elemzőt az új egyéni elemzőre való hivatkozáshoz. További információ: ASIM-elemzők kezelése.

  8. Az elemzőket az elsődleges ASIM-disztribúcióhoz is hozzá szeretné adni. A közreműködő elemzők az összes munkaterületen beépített elemzőként is elérhetővé tehetők.

Ez a cikk végigvezeti a folyamat fejlesztési, tesztelési és üzembe helyezési lépésein.

Tipp.

Tekintse meg a Mély merülés webináriumot a Microsoft Sentinel Normalizing Parsers és Normalized Content webhelyen, vagy tekintse át a kapcsolódó diacsomagot. További információ: Következő lépések.

Mintanaplók gyűjtése

A hatékony ASIM-elemzők létrehozásához reprezentatív naplókészletre van szükség, amely a legtöbb esetben megköveteli a forrásrendszer beállítását és a Microsoft Sentinelhez való csatlakoztatását. Ha nem érhető el a forráseszköz, a használatalapú felhőalapú szolgáltatások lehetővé teszik számos eszköz üzembe helyezését fejlesztési és tesztelési célokra.

Emellett a naplók szállítói dokumentációjának és mintáinak megkeresése segíthet felgyorsítani a fejlesztést és csökkenteni a hibákat a széles körű naplóformátum-lefedettség biztosításával.

A naplók reprezentatív készletének a következőket kell tartalmaznia:

  • Különböző eseményeredményeket tartalmazó események.
  • Események különböző válaszműveletekkel.
  • A felhasználónév, a gazdagépnév és az azonosítók, valamint az érték normalizálását igénylő egyéb mezők különböző formátumai.

Tipp.

Új egyéni elemző indítása ugyanahhoz a sémához egy meglévő elemzővel. A meglévő elemzők használata különösen fontos az elemzők szűréséhez, hogy biztosan elfogadják a séma által igényelt összes paramétert.

Tervezés leképezése

Az elemző fejlesztése előtt képezze le a forráseseményben vagy eseményekben elérhető információkat az azonosított sémára:

  • Képezz le minden kötelező mezőt, és lehetőleg az ajánlott mezőket is.
  • Próbálja meg a forrástól a normalizált mezőkre leképezni a rendelkezésre álló információkat. Ha a kiválasztott séma részeként nem érhető el, fontolja meg a más sémákban elérhető mezők leképezését.
  • A forrásmezők értékeinek leképezése az ASIM által engedélyezett normalizált értékekre. Az eredeti érték egy külön mezőben van tárolva, például EventOriginalResultDetails.

Elemzők fejlesztése

Szűrőt és paraméter nélküli elemzőt is fejleszthet az egyes releváns sémákhoz.

Az egyéni elemző a Microsoft Sentinel-naplók lapon kifejlesztett KQL-lekérdezés. Az elemző lekérdezés három részből áll:

Szűrőelemzendő>>mezők

Szűrés

A releváns rekordok szűrése

A Microsoft Sentinel táblái sok esetben több típusú eseményt is tartalmaznak. Példa:

  • A Syslog-tábla több forrásból származó adatokat tartalmaz.
  • Az egyéni táblák tartalmazhatnak egyetlen forrásból származó információkat, amelyek több eseménytípust is biztosítanak, és különböző sémákhoz illeszthetők.

Ezért az elemzőnek először csak a célséma szempontjából releváns rekordokat kell szűrnie.

A KQL-szűrés az where operátorral történik. Az 1. Sysmon-esemény például a folyamatlétrehozásról számol be, ezért normalizálva van a ProcessEvent sémával. A Sysmon event 1 esemény a Event táblázat része, ezért a következő szűrőt használná:

Event | where Source == "Microsoft-Windows-Sysmon" and EventID == 1

Fontos

Az elemző nem szűrhet idő szerint. Az elemzőt használó lekérdezés egy időtartományt alkalmaz.

Szűrés forrástípus szerint egy figyelőlista használatával

Bizonyos esetekben maga az esemény nem tartalmaz olyan információt, amely lehetővé tenné bizonyos forrástípusok szűrését.

Az Infoblox DNS-események például Syslog-üzenetekként lesznek elküldve, és nehezen különböztethetők meg a más forrásokból küldött Syslog-üzenetektől. Ilyen esetekben az elemző a releváns eseményeket meghatározó források listájára támaszkodik. Ez a lista a Sources_by_SourceType figyelőlistában van fenntartva.

Ha az ASimSourceType figyelőlistát szeretné használni az elemzőkben, használja a _ASIM_GetSourceBySourceType függvényt az elemzőszűrési szakaszban. Az Infoblox DNS-elemző például a következőt tartalmazza a szűrési szakaszban:

  | where Computer in (_ASIM_GetSourceBySourceType('InfobloxNIOS'))

A minta használata az elemzőben:

  • Cserélje le Computer annak a mezőnek a nevét, amely tartalmazza a forrás forrásadatait. Ezt ugyanúgy megtarthatja, mint Computer a Syslogon alapuló elemzők esetében.

  • Cserélje le a InfobloxNIOS jogkivonatot egy tetszőleges értékre az elemzőhöz. Tájékoztassa az elemző felhasználókat, hogy a kiválasztott érték használatával frissíteniük kell a ASimSourceType figyelőlistát, valamint az ilyen típusú eseményeket küldő források listáját.

Szűrés elemzési paraméterek alapján

A szűrőelemzők fejlesztésekor győződjön meg arról, hogy az elemző elfogadja a megfelelő séma szűrési paramétereit az adott séma referenciacikkében leírtak szerint. Ha egy meglévő elemzőt használ kiindulási pontként, az biztosítja, hogy az elemző tartalmazza a megfelelő függvény-aláírást. A legtöbb esetben a tényleges szűrési kód is hasonló ugyanahhoz a sémához tartozó elemzők szűréséhez.

Szűréskor győződjön meg arról, hogy:

  • Szűrés fizikai mezőkkel végzett elemzés előtt. Ha a szűrt eredmények nem elég pontosak, az elemzés után ismételje meg a tesztet az eredmények finomhangolásához. További információ: szűrésoptimalizálás.
  • Ne szűrjön, ha a paraméter nincs definiálva, és továbbra is az alapértelmezett értékkel rendelkezik.

Az alábbi példák bemutatják, hogyan valósíthat meg szűrést egy sztringparaméter esetében, ahol az alapértelmezett érték általában "*", és egy listaparaméter esetében, ahol az alapértelmezett érték általában egy üres lista.

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

További információ a Kusto dokumentációjának alábbi elemeiről:

Szűrés optimalizálása

Az elemző teljesítményének biztosításához vegye figyelembe a következő szűrési javaslatokat:

  • A mezők elemzése helyett mindig a beépített mezőkre szűrjön. Bár néha egyszerűbb az elemzési mezők használatával szűrni, ez jelentősen befolyásolja a teljesítményt.
  • Használjon optimalizált teljesítményt biztosító operátorokat. Különösen, ==, hasés startswith. Az olyan operátorok használata, mint például contains a teljesítmény, vagy matches regex az is jelentősen befolyásolja a teljesítményt.

Előfordulhat, hogy a teljesítményre vonatkozó javaslatok szűrése nem mindig könnyű követni. A használat has például kevésbé pontos, mint containsa . Más esetekben a beépített mező( például SyslogMessage) megfeleltetése kevésbé pontos, mint egy kinyert mező, például DvcActiona . Ilyen esetekben azt javasoljuk, hogy továbbra is előszűrje a teljesítményt optimalizáló operátort egy beépített mezőn, és ismételje meg a szűrőt pontosabb feltételekkel az elemzés után.

Például tekintse meg a következő Infoblox DNS-elemző kódrészletet. Az elemző először ellenőrzi, hogy a SyslogMessage mező a has szó client. A kifejezés azonban az üzenet egy másik helyén is használható, így a Log_Type mező elemzése után az elemző ismét ellenőrzi, hogy a szó client valóban a mező értéke volt-e.

Syslog | where ProcessName == "named" and SyslogMessage has "client"
…
      | extend Log_Type = tostring(Parser[1]),
      | where Log_Type == "client"

Feljegyzés

Az elemzők nem szűrhetők idő szerint, mivel az elemzőt használó lekérdezés már idő szerint szűr.

Elemzés

Miután a lekérdezés kiválasztotta a megfelelő rekordokat, előfordulhat, hogy elemeznie kell őket. Általában elemzésre van szükség, ha több eseménymezőt is közvetítenek egyetlen szövegmezőben.

Az elemzést végző KQL-operátorok alább láthatók, a teljesítményoptimalizálásuk szerint rendezve. Az első a legoptimalizáltabb teljesítményt nyújtja, míg az utolsó a legkevésbé optimalizált teljesítményt nyújtja.

Operátor/függvény() Leírás
split() függvény Tagolt értékek sztringjének elemzése.
parse_csv() függvény A CSV (vesszővel tagolt értékek) sorként formázott értékek sztringjének elemzése.
parse-kv operátor Kinyeri a strukturált információkat egy sztringkifejezésből, és egy kulcs/érték űrlapon jeleníti meg az információkat.
elemzési operátor Több értéket elemezhet egy tetszőleges sztringből egy minta használatával, amely egyszerűbb, jobb teljesítményű minta vagy reguláris kifejezés lehet.
extract_all() függvény Önálló értékeket elemez egy tetszőleges sztringből egy reguláris kifejezés használatával. extract_all hasonló teljesítménnyel rendelkezik, mint parse ha az utóbbi reguláris kifejezést használ.
extract() függvény Egyetlen érték kinyerése tetszőleges sztringből reguláris kifejezéssel.

A használat extract jobb teljesítményt nyújt, mint parse vagy extract_all ha egyetlen értékre van szükség. Ha azonban több aktiválást extract használ ugyanazon a forrássztringen, az kevésbé hatékony, mint egyetlen parse , vagy extract_all kerülni kell.
parse_json() függvény A JSON-ként formázott sztring értékeinek elemzése. Ha csak néhány értékre van szükség a JSON-ból, használjon parse, extractvagy extract_all jobb teljesítményt nyújtson.
parse_xml() függvény Az XML-ként formázott sztring értékeinek elemzése. Ha csak néhány értékre van szükség az XML-ből, használja parsea , extractvagy extract_all jobb teljesítményt nyújt.

Normalizáló

Mezőnevek leképezése

A normalizálás legegyszerűbb formája egy eredeti mező átnevezése a normalizált névre. Ehhez használja az operátort project-rename . A projekt átnevezése biztosítja, hogy a mező továbbra is fizikai mezőként legyen kezelve, és a mező kezelése hatékonyabb. Példa:

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

A mezők formátumának és típusának normalizálása

Sok esetben a kinyert eredeti értéket normalizálni kell. Az ASIM-ben például a MAC-címek kettőspontokat használnak elválasztóként, míg a forrás kötőjelekkel tagolt MAC-címet küldhet. Az értékek átalakításának elsődleges operátora a extendKQL-sztring, a numerikus és a dátumfüggvények széles halmaza mellett.

Emellett annak biztosítása, hogy az elemző kimeneti mezői megegyeznek a sémában meghatározott típussal, kritikus fontosságú az elemzők működése szempontjából. Előfordulhat például, hogy egy dátumot és időt ábrázoló sztringet dátum/idő mezővé kell konvertálnia. Ezekben az esetekben hasznos és hasznos todatetimetohex függvények.

Előfordulhat például, hogy az eredeti egyedi eseményazonosító egész számként lesz elküldve, de az ASIM megköveteli, hogy az érték sztring legyen, hogy az adatforrások széles körű kompatibilitást biztosítsanak. Ezért amikor a forrásmezőt rendeli hozzá, a tostring következő extend helyettproject-rename:

  | extend EventOriginalUid = tostring(ReportId),

Származtatott mezők és értékek

Előfordulhat, hogy a kinyerés után a forrásmező értékét le kell képezni a célsémamezőhöz megadott értékek készletére. A függvények iff, caseés lookup hasznos lehet az elérhető adatok célértékekhez való leképezéséhez.

A Microsoft DNS-elemző például egy utasítással iff rendeli hozzá a EventResult mezőt az eseményazonosító és a válaszkód alapján, az alábbiak szerint:

   extend EventResult = iff(EventId==257 and ResponseCode==0 ,'Success','Failure')

Több érték leképezéséhez definiálja a leképezést az datatable operátorral, és használja lookup a leképezés végrehajtásához. Egyes források például numerikus DNS-válaszkódokat és hálózati protokollt jelentenek, míg a séma mindkettőhöz a gyakoribb szövegfeliratok megjelenítését adja meg. Az alábbi példa bemutatja, hogyan származtathatja a szükséges értékeket a következők használatával 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

Figyelje meg, hogy a keresés akkor is hasznos és hatékony, ha a leképezés csak két lehetséges értékkel rendelkezik.

Ha a megfeleltetési feltételek összetettebbek, kombinálják iffaz caseés lookupa . Az alábbi példa bemutatja, hogyan kombinálható lookup és case. A lookup fenti példa üres értéket ad vissza a mezőben DnsResponseCodeName , ha a keresési érték nem található. Az case alábbi példa kibővíti a művelet eredményét lookup , ha elérhető, és egyéb további feltételeket határoz meg.

   | extend DnsResponseCodeName = 
      case (
        DnsResponseCodeName != "", DnsResponseCodeName,
        DnsResponseCode between (3841 .. 4095), 'Reserved for Private Use',
        'Unassigned'
      )

A Microsoft Sentinel hasznos függvényeket biztosít a gyakori keresési értékekhez. A fenti keresés például DnsResponseCodeName az alábbi függvények egyikével valósítható meg:


| extend DnsResponseCodeName = _ASIM_LookupDnsResponseCode(DnsResponseCode)

| invoke _ASIM_ResolveDnsResponseCode('DnsResponseCode')

Az első beállítás paraméterként elfogadja a keresendő értéket, és lehetővé teszi a kimeneti mező kiválasztását, ezért általános keresési függvényként hasznos. A második lehetőség jobban igazodik az elemzőkhöz, a forrásmező nevét adja meg, és ebben az esetben DnsResponseCodeNamefrissíti a szükséges ASIM-mezőt.

Az ASIM súgófüggvényeinek teljes listájáért tekintse meg az ASIM-függvényeket

Bővítési mezők

A forrásból elérhető mezők mellett az eredményként kapott ASIM-esemény olyan bővítési mezőket is tartalmaz, amelyeket az elemzőnek létre kell hoznia. Az elemzők sok esetben állandó értéket rendelhetnek a mezőkhöz, például:

  | extend                  
     EventCount = int(1),
     EventProduct = 'M365 Defender for Endpoint',
     EventVendor = 'Microsoft',
     EventSchemaVersion = '0.1.0',
     EventSchema = 'ProcessEvent'

Az elemzési mezők másik típusa a típusmezők, amelyek a kapcsolódó mezőben tárolt érték típusát jelölik. A mező például a SrcUsernameType mezőben tárolt SrcUsername érték típusát jelöli. A típusmezőkről az entitások leírásában talál további információt.

A legtöbb esetben a típusok állandó értéket is kapnak. Bizonyos esetekben azonban a típust a tényleges érték alapján kell meghatározni, például:

   DomainType = iif (array_length(SplitHostname) > 1, 'FQDN', '')

A Microsoft Sentinel hasznos funkciókat biztosít a bővítés kezeléséhez. Az alábbi függvény használatával például automatikusan hozzárendelheti a mezőket SrcHostname, SrcDomainSrcDomainType és SrcFQDN a mező Computerértéke alapján.

  | invoke _ASIM_ResolveSrcFQDN('Computer')

Ez a függvény a következőképpen állítja be a mezőket:

Számítógépmező Kimeneti mezők
server1 SrcHostname: server1
SrcDomain, SrcDomainType, SrcFQDN mind üres
server1.microsoft.com SrcHostname: server1
SrcDomain: microsoft.com
SrcDomainType: FQDN
SrcFQDN:server1.microsoft.com

A függvények _ASIM_ResolveDstFQDN és a kapcsolódó Dst mezőket _ASIM_ResolveDvcFQDNDvc feltöltő hasonló feladat végrehajtása. Az ASIM súgófüggvényeinek teljes listájáért tekintse meg az ASIM-függvényeket

Mezők kijelölése az eredményhalmazban

Az elemző opcionálisan kijelölhet mezőket az eredményhalmazban. A szükségtelen mezők eltávolítása javíthatja a teljesítményt, és egyértelműbbé teheti a normalizált mezők és a fennmaradó forrásmezők közötti félreértéseket.

Az eredményhalmaz mezőinek kiválasztásához a következő KQL-operátorok használhatók:

Operátor Leírás Mikor érdemes használni egy elemzőben?
projekteltávol Eltávolítja a mezőket. Olyan mezőkhöz használható project-away , amelyeket el szeretne távolítani az eredményhalmazból. Javasoljuk, hogy ne távolítsa el az eredeti mezőket, amelyek nem normalizáltak az eredményhalmazból, kivéve, ha zavart okoznak, vagy nagyon nagyok, és teljesítménybeli következményekkel járhatnak.
projekt Kijelöli a korábban létező vagy az utasítás részeként létrehozott mezőket, és eltávolítja az összes többi mezőt. Nem ajánlott elemzőben használni, mivel az elemző nem távolíthat el más, nem normalizált mezőket.

Ha el kell távolítania bizonyos mezőket, például az elemzés során használt ideiglenes értékeket, távolítsa project-away el őket az eredményekből.

Ha például egy egyéni naplótáblát elemez, az alábbiak használatával távolíthatja el a még mindig típusleíróval rendelkező eredeti mezőket:

    | project-away
        *_d, *_s, *_b, *_g

Elemzési változatok kezelése

Fontos

A különböző változatok különböző eseménytípusokat jelölnek, gyakran különböző sémákhoz rendelve, külön elemzőket fejlesztenek

Az eseménystreamek eseményei sok esetben különböző elemzési logikát igénylő változatokat tartalmaznak. A különböző variánsok egyetlen elemzőben való elemzéséhez használjon feltételes utasításokat, például iff és case, vagy használjon egyesítő struktúrát.

union Ha több változatot szeretne kezelni, hozzon létre egy külön függvényt minden egyes változathoz, és az egyesítő utasítással egyesítse az eredményeket:

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…

Az ismétlődő események és a túlzott feldolgozás elkerülése érdekében győződjön meg arról, hogy az egyes függvények szűréssel kezdődnek, natív mezők használatával, csak az elemezni kívánt eseményeket. Szükség esetén az egyes ágaknál, az egyesítő előtt használja a projekteltávolálást is.

Elemzők üzembe helyezése

Az elemzők manuális üzembe helyezéséhez másolja őket az Azure Monitor naplólapjára, és mentse a lekérdezést függvényként. Ez a módszer a teszteléshez hasznos. További információ: Függvény létrehozása.

Nagyszámú elemző üzembe helyezéséhez javasoljuk az elemző ARM-sablonok használatát az alábbiak szerint:

  1. Hozzon létre egy YAML-fájlt az egyes sémák megfelelő sablonja alapján, és foglalja bele a lekérdezést. Kezdje a sémához és az elemző típusához, szűréséhez vagy paraméter nélküli típusához kapcsolódó YAML-sablonnal .

  2. A YAML-fájl ARM-sablonkonverterré alakításához használja az ASIM YAML-sablonkonvertert .

  3. Frissítés telepítésekor törölje a függvények régebbi verzióit a portál vagy a függvény törlése PowerShell-eszközzel.

  4. A sablon üzembe helyezése az Azure Portal vagy a PowerShell használatával.

Összekapcsolt sablonok használatával több sablont is kombinálhat egyetlen üzembe helyezési folyamathoz

Tipp.

Az ARM-sablonok különböző erőforrásokat kombinálhatnak, így az elemzők az összekötők, elemzési szabályok vagy figyelőlisták mellett üzembe helyezhetők, hogy néhány hasznos lehetőséget említsünk. Az elemző például hivatkozhat egy mellette üzembe helyezett figyelőlistára.

Tesztelemzők

Ez a szakasz azt ismerteti, hogy az ASIM tesztelési eszközei lehetővé teszik az elemzők tesztelését. Ennek ellenére az elemzők kód, néha összetettek, és az automatizált tesztelés mellett ajánlott a standard minőségbiztosítási eljárások, például a kódellenőrzések.

Az ASIM tesztelési eszközeinek telepítése

Az ASIM teszteléséhez helyezze üzembe az ASIM tesztelési eszközt egy Microsoft Sentinel-munkaterületen, ahol:

  • Az elemző üzembe lett helyezve.
  • Az elemző által használt forrástábla elérhető.
  • Az elemző által használt forrástábla a releváns események változatos gyűjteményével van feltöltve.

A kimeneti séma ellenőrzése

Annak ellenőrzéséhez, hogy az elemző érvényes sémát állít-e elő, használja az ASIM-sématesztelőt az alábbi lekérdezés futtatásával a Microsoft Sentinel-naplók lapon:

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

Az eredmények kezelése az alábbiak szerint:

Hiba Művelet
Hiányzó kötelező mező [<Mező>] Adja hozzá a mezőt az elemzőhöz. Ez sok esetben származtatott vagy állandó érték lenne, és nem a forrásból már elérhető mező.
A hiányzó mező [<Mező>] kötelező, ha a kötelező [<Mező>] oszlop létezik Adja hozzá a mezőt az elemzőhöz. Ez a mező sok esetben a meglévő oszlop típusát jelöli.
A hiányzó mező [<Mező>] kötelező, ha a[<Mező>] oszlop létezik Adja hozzá a mezőt az elemzőhöz. Ez a mező sok esetben a meglévő oszlop típusát jelöli.
Hiányzó kötelező alias [<Mező>] alias a meglévő [Mező>] oszlopban< Alias hozzáadása az elemzőhöz
Hiányzó ajánlott alias [<Mező>] alias a meglévő [Mező>] oszlopban< Alias hozzáadása az elemzőhöz
Hiányzó választható alias [<Mező>] alias meglévő oszlopának aliasa [<Mező>] Alias hozzáadása az elemzőhöz
Hiányzó kötelező alias [<Mező>] alias hiányzó oszlopa [<Mező>] Ez a hiba az aliasos mezőhöz hasonló hibát eredményez. Javítsa ki az aliasos mezőhibát, és adja hozzá ezt az aliast az elemzőhöz.
Típuseltérés a[<Mező>] mezőhöz. Jelenleg [<Típus>], és [<Típus>] Győződjön meg arról, hogy a normalizált mező típusa helyes, általában egy olyan konverziós függvény használatával, mint a tostring.
Info Művelet
Hiányzó ajánlott mező [<Mező>] Vegye fontolóra, hogy hozzáadja ezt a mezőt az elemzőhöz.
Info Művelet
Hiányzó ajánlott alias [<Mező>] alias nem létező oszlop [<Mező>] Ha hozzáadja az aliasolt mezőt az elemzőhöz, ezt az aliast is vegye fel.
Hiányzó nem kötelező alias [<Mező>] alias nem létező oszlop [<Mező>] Ha hozzáadja az aliasolt mezőt az elemzőhöz, ezt az aliast is vegye fel.
Hiányzó választható mező [<Mező>] Bár az opcionális mezők gyakran hiányoznak, érdemes áttekinteni a listát annak megállapításához, hogy az opcionális mezők bármelyike leképezhető-e a forrásból.
Extra nemnormalizált mező [<Mező>] Bár a nemnormalizált mezők érvényesek, érdemes áttekinteni a listát annak megállapításához, hogy a nemnormalizált értékek bármelyike megfeleltethető-e választható mezőnek.

Feljegyzés

A hibák megakadályozzák, hogy az elemzőt használó tartalmak megfelelően működnének. A figyelmeztetések nem akadályozzák a tartalom működését, de csökkenthetik az eredmények minőségét.

A kimeneti értékek ellenőrzése

Annak ellenőrzéséhez, hogy az elemző érvényes értékeket állít-e elő, használja az ASIM-adattesztelőt az alábbi lekérdezés futtatásával a Microsoft Sentinel Naplók lapján:

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

A séma megadása nem kötelező. Ha nincs megadva séma, a mező azt a EventSchema sémát azonosítja, amelyet az eseménynek be kell tartania. Az Ig esemény nem tartalmaz EventSchema mezőt, csak a közös mezők lesznek ellenőrizve. Ha egy séma paraméterként van megadva, a rendszer ezzel a sémával teszteli az összes rekordot. Ez olyan régebbi elemzők esetében hasznos, amelyek nem állítják be a EventSchema mezőt.

Feljegyzés

Még ha nincs megadva séma, a függvény neve után üres zárójelekre van szükség.

Ez a teszt erőforrás-igényes, és nem feltétlenül működik a teljes adatkészleten. Állítsa az X értéket arra a legnagyobb számra, amelyre a lekérdezés nem fog időtúllépést végrehajtani, vagy állítsa be a lekérdezés időtartományát az időtartomány-választó használatával.

Az eredmények kezelése az alábbiak szerint:

Üzenet Művelet
(0) Hiba: a(z) [<Mező>] oszlop típuseltérési hibája. Jelenleg [<Típus>], és [<Típus>] Győződjön meg arról, hogy a normalizált mező típusa helyes, általában egy olyan konverziós függvény használatával, mint a tostring.
(0) Hiba: Érvénytelen érték(ek) (legfeljebb 10 felsorolt) a [Mező] típusú [<<Logikai> típus>] mezőhöz Győződjön meg arról, hogy az elemző megfelelteti a megfelelő forrásmezőt a kimeneti mezőnek. Ha megfelelően van megfeleltetve, frissítse az elemzőt, hogy a forrásértéket a megfelelő típusra, értékre vagy formátumra alakítsa át. Az egyes logikai típusok helyes értékeivel és formátumával kapcsolatos további információkért tekintse meg a logikai típusok listáját.

Vegye figyelembe, hogy a tesztelési eszköz csak 10 érvénytelen értéket tartalmazó mintát listáz.
(1) Figyelmeztetés: Üres érték a kötelező mezőben [<Mező>] A kötelező mezőket nem csak definiálni kell, hanem ki kell tölteni. Ellenőrizze, hogy a mező kitölthető-e más forrásokból olyan rekordok esetében, amelyeknél az aktuális forrás üres.
(2) Információ: Üres érték a javasolt mezőben [<Mező>] Az ajánlott mezőket általában ki kell tölteni. Ellenőrizze, hogy a mező kitölthető-e más forrásokból olyan rekordok esetében, amelyeknél az aktuális forrás üres.
(2) Információ: Üres érték az opcionális mezőben [<Mező>] Ellenőrizze, hogy az aliasált mező kötelező vagy ajánlott-e, és ha igen, más forrásokból is kitölthető-e.

Sok üzenet az üzenetet létrehozó rekordok számát és a teljes minta százalékos arányát is jelenti. Ez a százalék jó mutatója a probléma fontosságának. Például egy ajánlott mező esetén:

  • A 90%-os üres értékek általános elemzési problémát jelezhetnek.
  • A 25%-os üres értékek olyan eseményvariánst jelezhetnek, amely nem megfelelően lett elemezve.
  • Néhány üres érték elhanyagolható probléma lehet.

Feljegyzés

A hibák megakadályozzák, hogy az elemzőt használó tartalmak megfelelően működnének. A figyelmeztetések nem akadályozzák a tartalom működését, de csökkenthetik az eredmények minőségét.

Közreműködői elemzők

Előfordulhat, hogy hozzá szeretné adni az elemzőt az elsődleges ASIM-eloszláshoz. Ha elfogadják, az elemzők minden ügyfél számára elérhetők lesznek beépített ASIM-elemzőként.

Az elemzők közreműködése:

Elfogadott figyelmeztetések dokumentálása

Ha az ASIM-tesztelési eszközök által felsorolt figyelmeztetések érvényesnek minősülnek egy elemzőhöz, dokumentálja az elfogadott figyelmeztetéseket az elemzési YAML-fájlban a Kivételek szakasz használatával az alábbi példában látható módon.

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

A YAML-fájlban megadott figyelmeztetésnek a figyelmeztető üzenet egyedi azonosító rövid formájának kell lennie. Az érték a figyelmeztető üzeneteknek az automatikus tesztelések során való egyeztetésére és figyelmen kívül hagyására szolgál.

Minták beküldési útmutatója

Mintaadatokra van szükség az elemzési problémák elhárításához és annak biztosításához, hogy az elemző jövőbeli frissítései megfeleljenek a régebbi mintáknak. A beküldött mintáknak tartalmazniuk kell az elemző által támogatott eseményvariánsokat. Győződjön meg arról, hogy a mintaesemények tartalmazzák az összes lehetséges eseménytípust, eseményformátumot és változatot, például a sikeres és sikertelen tevékenységet képviselő eseményeket. Győződjön meg arról is, hogy az értékformátumok variációi jelennek meg. Ha például egy gazdagépnév teljes tartománynévként vagy egyszerű állomásnévként is megjeleníthető, a mintaesemények mindkét formátumot tartalmazzák.

Az eseményminták elküldéséhez kövesse az alábbi lépéseket:

  • Logs A képernyőn futtasson egy lekérdezést, amely csak az elemző által kiválasztott eseményeket fogja kinyerni a forrástáblából. Az Infoblox DNS-elemzőhöz például használja a következő lekérdezést:
    Syslog
    | where ProcessName == "named"
  • Exportálja az eredményeket az Exportálás CSV-be beállítással a Where EventProductEventProductnevű fájlba<EventVendor>_<EventProduct>_<EventSchema>_IngestedLogs.csv, és EventSchema ezekhez a mezőkhöz rendeli az elemző által hozzárendelt értékeket.

  • Logs A képernyőn futtasson egy lekérdezést, amely megjeleníti a sémát vagy az elemző bemeneti táblát. Ugyanahhoz az Infoblox DNS-elemzőhöz például a lekérdezés a következő:

    Syslog
    | getschema
  • Exportálja az eredményeket az Exportálás CSV-be beállítással egy nevesített <TableName>_schema.csvfájlba, ahol TableName az elemző által használt forrástábla neve található.

  • Adja meg mindkét fájlt a lekéréses kérelemben a mappába /Sample Data/ASIM. Ha a fájl már létezik, adja hozzá a GitHub-leírót a névhez, például: <EventVendor>_<EventProduct>_<EventSchema>_SchemaTest_<GitHubHandle>.csv

Teszteredmények beküldési irányelvei

A tesztelési eredmények fontosak az elemző helyességének ellenőrzéséhez és a jelentett kivétel megértéséhez.

A teszteredmények elküldéséhez kövesse az alábbi lépéseket:

  • Futtassa az elemző teszteket, és írja le a tesztelési szakaszban.

  • és exportálja a teszteredményeket az Exportálás CSV-be beállítással nevesített és <EventVendor>_<EventProduct>_<EventSchema>_DataTest.csv elnevezett <EventVendor>_<EventProduct>_<EventSchema>_SchemaTest.csv fájlokba.

  • Adja meg mindkét fájlt a lekéréses kérelemben a mappába /Parsers/ASim<schema>/Tests.

Következő lépések

Ez a cikk az ASIM-elemzők fejlesztését ismerteti.

További információk az ASIM-elemzőkről:

További információ az ASIM-ről általában: