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:
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.
Képezze le a forrásesemény-mezőket az azonosított sémára vagy sémákra.
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.
Tesztelje az elemzőt.
Helyezze üzembe az elemzőket a Microsoft Sentinel-munkaterületeken.
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.
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, 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ő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
ésstartswith
. Az olyan operátorok használata, mint acontains
vagymatches 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 contains
a . Más esetekben a beépített mező (például SyslogMessage
) egyeztetése kevésbé pontos, mint egy kinyert mező, például DvcAction
a ö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 , extract vagy extract_all jobb parse teljesí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 , extract vagy extract_all jobb parse teljesí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 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 jelölő sztringet datetime mezővé kell konvertálnia. Az ilyen és hasonló todatetime
tohex
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 extend
tostring
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 iff
hasznosak 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 lookup
a 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 iff
a , case
a és lookup
a elemet. Az alábbi példa bemutatja, hogyan kombinálhatja a és case
a 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 SrcFQDN
SrcDomain
SrcDomainType
a mezőket SrcHostname
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é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 case
a, 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:
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 .
Az ASIM Yaml-ből ARM-sablonkonverterbe konvertálhatja a YAML-fájlt ARM-sablonlá.
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.
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:
- 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ű szakaszban leírtak szerint.
- Győződjön meg arról, hogy az elemzők hiba nélkül átjutnak az összes teszten . Ha a figyelmeztetések megmaradnak, dokumentálja őket az elemző YAML-fájlban.
- Hozzon létre egy lekéréses kérelmet a Microsoft Sentinel GitHub-adattáron, beleértve a következőket:
- Az ASIM-elemzőmappákban lévő YAML-fájlokat elemzi (
/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.
- Az ASIM-elemzőmappákban lévő YAML-fájlokat elemzi (
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
, aholEventProduct
,EventProduct
ésEventSchema
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.csv
fájlba, aholTableName
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:
- 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 oldalán, vagy tekintse át a diákat
- Az Advanced Security Information Model (ASIM) áttekintése
- Advanced Security Information Model- (ASIM-) sémák
- Az Advanced Security Information Model (ASIM) tartalma