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:
Mintanaplók gyűjtése.
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.
A forráseseménymezők leképezése az azonosított sémákra vagy sémákra.
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.
Tesztelje az elemzőt.
Helyezze üzembe az elemzőket a Microsoft Sentinel-munkaterületeken.
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.
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, mintComputer
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 aASimSourceType
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
ésstartswith
. Az olyan operátorok használata, mint példáulcontains
a teljesítmény, vagymatches 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 contains
a . Más esetekben a beépített mező( például SyslogMessage
) megfeleltetése kevésbé pontos, mint egy kinyert mező, például DvcAction
a . 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 , extract vagy 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 parse a , extract vagy 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 extend
KQL-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 todatetime
tohex
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 datatable
lookup
:
let NetworkProtocolLookup = datatable(Proto:real, NetworkProtocol:string)[
6, 'TCP',
17, 'UDP'
];
let DnsResponseCodeLookup=datatable(DnsResponseCode:int,DnsResponseCodeName:string)[
0,'NOERROR',
1,'FORMERR',
2,'SERVFAIL',
3,'NXDOMAIN',
...
];
...
| lookup DnsResponseCodeLookup on DnsResponseCode
| lookup NetworkProtocolLookup on Proto
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 iff
az case
és lookup
a . 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 DnsResponseCodeName
frissí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
, SrcDomain
SrcDomainType
é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_ResolveDvcFQDN
Dvc
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:
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 .
A YAML-fájl ARM-sablonkonverterré alakításához használja az ASIM YAML-sablonkonvertert .
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.
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:
- Fejlesszen ki egy szűrőelemzőt és egy paraméter nélküli elemzőt is.
- Hozzon létre egy YAML-fájlt az elemzőhöz a fenti Elemzések üzembe helyezése című cikkben leírtak szerint.
- Győződjön meg arról, hogy az elemzők hiba nélkül adják át az összes tesztet . Ha a figyelmeztetések megmaradnak, dokumentálja őket az elemző YAML-fájlban.
- Lekéréses kérelem létrehozása a Microsoft Sentinel GitHub-adattáron, beleértve a következőket:
- A YAML-fájlokat elemzi az ASIM-elemzőmappákban (
/Parsers/ASim<schema>/Parsers
) - Reprezentatív mintaadatok a minták beküldési irányelveinek megfelelően.
- Teszteredmények a teszteredmények beküldési irányelveinek megfelelően.
- A YAML-fájlokat elemzi az ASIM-elemzőmappákban (
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
EventProduct
EventProduct
nevű fájlba<EventVendor>_<EventProduct>_<EventSchema>_IngestedLogs.csv
, ésEventSchema
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.csv
fájlba, aholTableName
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:
- Az ASIM-elemzők áttekintése
- Az ASIM-elemzők használata
- ASIM-elemzők kezelése
- Az ASIM-elemzők listája
További információ az ASIM-ről általában:
- Tekintse meg a Mély merülés webináriumot a Microsoft Sentinel Normalizing Parsers és Normalized Content szolgáltatásban, vagy tekintse át a diákat
- Az Advanced Security Information Model (ASIM) áttekintése
- Advanced Security Information Model (ASIM) sémák
- Advanced Security Information Model (ASIM) tartalom