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ésekben szereplő táblanevek helyett, normalizált formátumban tekintik meg az adatokat, és a sémához kapcsolódó összes adatot belefoglalják a lekérdezésbe. Az elemzők egyesítése a forrásspecifikus elemzők használatával kezeli az egyes források konkrét 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 lehet módosítani vagy fejleszteni:

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

  • Ha az ASIM-forrásspecifikus elemzők elérhetők az eszközhöz, de az eszköz az ASIM-elemzők által várttól eltérő módon vagy formátumban küld eseményeket. Például:

    • 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úra diagramját.

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 folyamata

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

  1. Gyűjtse össze a mintanaplókat.

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

  3. Képezze le a forrásesemény-mezőket az azonosított sémára vagy sémákra.

  4. Fejlesszen ki egy vagy több ASIM-elemzőt a forráshoz. A forráshoz kapcsolódó minden sémához ki kell fejlesztenie 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, hogy az új egyéni elemzőre hivatkozzon. További információ: ASIM-elemzők kezelése.

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

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

Tipp

Tekintse meg a Mély merülés webináriumot a Microsoft Sentinel Normalizing Parsers és Normalized Content oldalán, 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 egy 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 rendelkezik elérhető forráseszközsel, a felhőalapú használatalapú fizetéses 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 a fejlesztés felgyorsításában és a hibák csökkentésében 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ényekkel rendelkező események.
  • Különböző válaszműveletekkel rendelkező események.
  • 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őt indíthat 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.

Leképezés tervezé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épezze le az összes kötelező mezőt, és lehetőleg az ajánlott mezőket is.
  • Próbálja meg leképezni a forrásból elérhető információkat a normalizált mezőkre. Ha a kiválasztott séma részeként nem érhető el, fontolja meg a más sémákban elérhető mezőkre való leképezést.
  • 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

Fejlesszen ki egy szűrőt és egy paraméter nélküli elemzőt az egyes releváns sémákhoz.

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

Szűrő>Elemez>Mezők előkészítése

Szűrés

A releváns rekordok szűrése

A Microsoft Sentinel táblái sok esetben többféle eseményt tartalmaznak. Például:

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

Ezért az elemzőnek először csak a célsémához kapcsolódó 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ára. A Sysmon event 1 esemény a Event tábla része, ezért a következő szűrőt kell használnia:

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

Fontos

Az elemzők nem szűrnek idő szerint. Az elemzőt használó lekérdezés 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 vannak 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. Ezt a listát a Sources_by_SourceType figyelőlista tartja karban.

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

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

A minta használata az elemzőben:

  • Cserélje le Computer a elemet annak a mezőnek a nevére, 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ő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 hasonló ugyanahhoz a sémához tartozó elemzők szűréséhez is.

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éterhez, ahol az alapértelmezett érték általában a "*", é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)

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:

  • Az elemzett mezők helyett mindig a beépített mezőkre szűrjön. Bár néha egyszerűbb elemezett mezőkkel 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 a contains vagy matches regex az is, jelentősen befolyásolják a teljesítményt.

A teljesítménnyel kapcsolatos javaslatok szűrése nem mindig könnyű követni. A használata has például kevésbé pontos, mint containsa . Más esetekben a beépített mező (például SyslogMessage) egyeztetése kevésbé pontos, mint egy kinyert mező, például DvcActiona összehasonlítása. Ilyen esetekben javasoljuk, hogy továbbra is előszűrjön egy teljesítményoptimalizálási operátorral egy beépített mezőn, és ismételje meg a szűrőt pontosabb feltételekkel az elemzés után.

Példaként tekintse meg az alábbi Infoblox DNS-elemző kódrészletet. Az elemző először ellenőrzi, hogy a SyslogMessage mezőben has szerepel-e a 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"

Megjegyzés

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

Elemzés

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

Az elemzést végző KQL-operátorok az alábbiakban láthatók, a teljesítményoptimalizálásuk szerint rendezve. Az első a legoptimalizáltabb teljesítményt biztosítja, az utolsó pedig a legkevésbé optimalizált teljesítményt.

Operátor Leírás
Split Tagolt értékek sztringjének elemzése.
parse_csv CsV -sorként (vesszővel tagolt értékekként) formázott értékek sztringjének elemzése.
parse-kv Kinyeri a strukturált információkat egy sztringkifejezésből, és egy kulcs/érték űrlapon jeleníti meg az információkat.
parse Több értéket elemezhet egy tetszőleges sztringből egy mintával, amely lehet egy egyszerűbb, jobb teljesítményű minta vagy egy reguláris kifejezés.
extract_all Egy tetszőleges sztring egyetlen értékének elemzése reguláris kifejezéssel. extract_all hasonló teljesítménnyel rendelkezik, mint parse ha az utóbbi reguláris kifejezést használ.
Kivonat Egyetlen érték kinyerése tetszőleges sztringből reguláris kifejezéssel.

A használata 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 el kell kerülni.
parse_json JSON formátumban formázott sztring értékeinek elemzése. Ha csak néhány értékre van szükség a JSON-ból, a , extractvagy extract_all jobb parseteljesítményt nyújt.
parse_xml Xml formátumban formázott sztring értékeinek elemzése. Ha csak néhány értékre van szükség az XML-ből, a , extractvagy extract_all jobb parseteljesítményt nyújt.

Normalizáló

Mezőnevek leképezése

A normalizálás legegyszerűbb formája az 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 nagyobb teljesítményű legyen. Például:

 | 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 egy MAC-cím kettőspontot használ 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 jelölő sztringet datetime mezővé kell konvertálnia. Az ilyen és hasonló todatetimetohex függvények ezekben az esetekben hasznosak.

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 az adatforrások közötti széles körű kompatibilitás érdekében. Ezért a forrásmező hozzárendelésekor a és extendtostring a helyett használja a következőt project-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ékkészletre. A , caseés lookup függvények iffhasznosak lehetnek az elérhető adatok célértékekhez való leképezéséhez.

A Microsoft DNS-elemző például az eseményazonosító és a válaszkód alapján rendeli hozzá a EventResult mezőt egy iff utasítással, 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 a használatával lookup végezze el a leképezést. 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 írja elő. Az alábbi példa bemutatja, hogyan származtathatja a szükséges értékeket a és lookupa használatávaldatatable:

   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 leképezési feltételek összetettebbek, kombinálja iffa , casea és lookupa elemet. Az alábbi példa bemutatja, hogyan kombinálhatja a és casea elemetlookup. 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 azt a művelet eredményével 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 fogadja el 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 inkább az elemzőkre van építve, a forrásmező nevét adja meg bemenetként, és frissíti a szükséges ASIM-mezőt, ebben az esetben DnsResponseCodeName.

Az ASIM súgófüggvényeinek teljes listáját az ASIM-függvények című témakörben találja.

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ők által beállítandó további bővítési mezők típusmezők, amelyek a kapcsolódó mezőben tárolt érték típusát jelölik ki. 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ípusokhoz állandó érték is hozzá van rendelve. 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 függvényeket biztosít a bővítés kezeléséhez. Az alábbi függvénnyel például automatikusan hozzárendelheti a mezőket, a és SrcFQDNSrcDomainSrcDomainType a mezőket SrcHostnamea 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ép mező Kimeneti mezők
kiszolgáló1 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 _ASIM_ResolveDvcFQDN egy hasonló feladatot hajtanak végre, amely feltölti a kapcsolódó Dst és Dvc a mezőket. Az ASIM súgófüggvényeinek teljes listáját az ASIM-függvények című témakörben találja.

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

Az elemző opcionálisan kijelölhet mezőket az eredményhalmazban. A felesleges mezők eltávolítása javíthatja a teljesítményt, és érthetőbbé teheti a normalizált mezők és a többi forrásmező közötti félreértések elkerülésével.

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?
project-away Eltávolítja a mezőket. Az eredményhalmazból eltávolítani kívánt mezőkhöz használható project-away . Javasoljuk, hogy ne távolítsa el a nem normalizált eredeti mezőket az eredményhalmazból, kivéve, ha zavart okoznak, vagy nagyon nagyok, és teljesítménybeli következményekkel járhatnak.
Projekt Kiválasztja azokat a mezőket, amelyek korábban léteztek, vagy amelyek az utasítás részeként lettek létrehozva, é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, a használatával project-away eltávolíthatja ő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 az eredeti mezőket, amelyek még rendelkeznek típusleíróval:

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

Az elemzési variánsok kezelése

Fontos

A különböző változatok különböző eseménytípusokat képviselnek, általában 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. Ha egyetlen elemzőben különböző variánsokat szeretne elemezni, használjon olyan feltételes utasításokat, mint a iff és casea, vagy használjon egyesítő struktúrát.

union Ha több variánst szeretne kezelni, hozzon létre egy külön függvényt minden egyes változathoz, és használja az union utasítást az eredmények kombinálásához:

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 minden függvény szűréssel kezdődik, natív mezők használatával, csak azokat az eseményeket, amelyeket elemezni kíván. Szükség esetén a projekteltávolítást is használja az egyes ágaknál, az egyesítő előtt.

Elemzők üzembe helyezése

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

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

  1. Hozzon létre egy YAML-fájlt az egyes sémák megfelelő sablonja alapján, és adja hozzá 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. Az ASIM Yaml-ből ARM-sablonkonverterbe konvertálhatja a YAML-fájlt ARM-sablonlá.

  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öz használatával.

  4. Helyezze üzembe a sablont a Azure Portal vagy a PowerShell használatával.

Összekapcsolt sablonokkal több sablont is kombinálhat egyetlen üzembe helyezési folyamattal

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 helyezhetők üzembe, hogy néhány hasznos lehetőséget említsünk. Az elemző például hivatkozhat egy mellette üzembe helyezett figyelőlistára.

Elemzők tesztelése

Ez a szakasz azt ismerteti, hogy az ASIM által biztosított tesztelési eszközök lehetővé teszik az elemzők tesztelését. Ez azt is jelzi, hogy az elemzők kód, néha összetettek, és az automatizált tesztelés mellett standard minőségbiztosítási eljárások, például a kódellenőrzések is ajánlottak.

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

Az ASIM teszteléséhez helyezze üzembe az ASIM-tesztelő 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 a következő lekérdezés futtatásával a Microsoft Sentinel-naplók lapon:

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

Az eredményeket a következőképpen kezelheti:

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 létezik a kötelező [<Mező>] oszlop 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 meglévő oszlopa [<Mező>] Alias hozzáadása az elemzőhöz
Hiányzó ajánlott alias [<Mező>] alias a meglévő [Mező>] oszlophoz< Alias hozzáadása az elemzőhöz
Hiányzó nem kötelező alias [<Mező>] alias meglévő oszlopa [<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 aliasolt mező hibáját, és adja hozzá ezt az aliast az elemzőhöz.
Írja be a [Mező>] mező< eltérését. Jelenleg [<Type>] típusú, és [<Típus>] értékűnek kell lennie. 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.
Információ Művelet
Hiányzó ajánlott mező [<Mező>] Érdemes lehet hozzáadni ezt a mezőt az elemzőhöz.
Információ Művelet
Hiányzó ajánlott alias [<Mező>] alias nem létező oszlop [<Mező>] Ha hozzáadja az aliasként megadott 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 aliasként megadott mezőt az elemzőhöz, ezt az aliast is vegye fel.
Hiányzik a nem kötelező mező [<Mező>] Bár a választható 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 egy választható mezőnek.

Megjegyzés

A hibák megakadályozzák az elemzőt használó tartalom megfelelő működését. A figyelmeztetések nem akadályozzák meg 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 a következő lekérdezés futtatásával a Microsoft Sentinel-naplók lapon:

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

A séma megadása nem kötelező. Ha nincs megadva séma, a EventSchema mező azonosítja azt a sémát, 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.

Megjegyzé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 előfordulhat, hogy nem működik a teljes adatkészleten. Állítsa az X értékét arra a legnagyobb számra, amelyre a lekérdezés nem fog időtúllépést beállítani, vagy állítsa be a lekérdezés időtartományát az időtartomány-választóval.

Az eredményeket a következőképpen kezelheti:

Üzenet Művelet
(0) Hiba: típuseltérés a(z) [<Mező>] oszlophoz. Jelenleg [<Type>] típusú, és [<Típus>] értékűnek kell lennie. 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 (legfeljebb 10 felsorolt) érték a[<Mező>] típusú [<Logikai típus>] mezőhöz Győződjön meg arról, hogy az elemző a megfelelő forrásmezőt képezi le a kimeneti mezőre. 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. A logikai típusok listájában további információt talál az egyes logikai típusokhoz tartozó helyes értékekről és formátumokról.

Vegye figyelembe, hogy a tesztelési eszköz csak 10 érvénytelen értékből álló 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 azon rekordok esetében, amelyeknél az aktuális forrás üres.
(2) Információ: Üres érték az ajánlott mezőben [<Mező>] Az ajánlott mezőket általában fel kell tölteni. Ellenőrizze, hogy a mező kitölthető-e más forrásokból azon rekordok esetében, amelyeknél az aktuális forrás üres.
(2) Információ: Üres érték a nem kötelező [Mező>] mezőben< Ellenőrizze, hogy az aliasos mező kötelező vagy ajánlott-e, és ha igen, más forrásokból is kitölthető-e.

Számos ü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ékos arány jól jelzi a probléma fontosságát. Például egy ajánlott mező esetében:

  • 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 lett megfelelően elemezve.
  • Néhány üres érték elhanyagolható probléma lehet.

Megjegyzés

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

Elemzők közreműködése

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

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

Elfogadott figyelmeztetések dokumentálása

Ha az ASIM-teszteszközök által felsorolt figyelmeztetések érvényesnek minősülnek egy elemzőhöz, dokumentálja az elfogadott figyelmeztetéseket az elemző 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ására szolgáló rövid formájának kell lennie. Az érték arra szolgál, hogy az automatikus tesztelések végrehajtásakor és figyelmen kívül hagyásakor egyezzen a figyelmeztető üzenetekkel.

Minták beküldési irányelvei

Mintaadatokra van szükség az elemző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 jelképező eseményeket. Győződjön meg arról is, hogy az értékformátumok variációi szerepelnek. Ha például egy állomásnév teljes tartománynévként vagy egyszerű állomásnévként is megjeleníthető, a mintaeseménynek mindkét formátumot tartalmaznia kell.

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 lehetőséggel egy nevű fájlba <EventVendor>_<EventProduct>_<EventSchema>_IngestedLogs.csv, ahol EventProduct, EventProductés EventSchema az elemző által ezekhez a mezőkhöz rendelt értékek.

  • Logs A képernyőn futtasson egy lekérdezést, amely megjeleníti a sémát vagy az elemző bemeneti táblájá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 nevű <TableName>_schema.csvfájlba, ahol TableName az elemző által használt forrástábla neve.

  • 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_<GitHubHanlde>.csv

Teszteredmények beküldési irányelvei

A teszteredmények fontosak az elemző helyességének ellenőrzéséhez és a jelentett kivételek 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 leírtakat .

  • és exportálja a teszteredményeket az Exportálás CSV-be beállítással a és <EventVendor>_<EventProduct>_<EventSchema>_DataTest.csv a nevű <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: