Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
ASIM (Advanced Security Information Model) -käyttäjät käyttävät kyselyissään jäsentäjien yhtenäistämistä taulukoiden nimien sijaan, jotta he voivat tarkastella tietoja normalisoidussa muodossa ja sisällyttää kyselyyn kaikki rakenteeseen liittyvät tiedot. Jäsennysten yhtenäistäminen puolestaan käsittelee kunkin lähteen tarkat tiedot lähdekohtaisilla jäsennyksillä .
Microsoft Sentinel tarjoaa sisäisiä lähdekohtaisia jäsennyksiä monille tietolähteille. Saatat haluta muokata tai kehittää näitä lähdekohtaisia jäsentimiä seuraavissa tilanteissa:
Kun laitteesi tarjoaa TAPAHTUMIA, jotka sopivat ASIM-rakenteeseen, mutta laitteesi lähdekohtainen jäsennin ja asianmukainen rakenne ei ole käytettävissä Microsoft Sentinel.
Kun ASIM-lähdekohtaiset jäsennykset ovat käytettävissä laitteessasi, mutta laitteesi lähettää tapahtumia tavalla tai muodossa, joka on eri kuin ASIM-jäsentimet ovat odottaneet. Esimerkki:
Lähdelaite voidaan määrittää lähettämään tapahtumia epästandardilla tavalla.
Laitteesi versio voi olla eri kuin ASIM-jäsentimen tukema versio.
Välittäjäjärjestelmä voi kerätä, muokata ja välittää tapahtumia.
Jos haluat tietää, miten jäsentimet mahtuvat ASIM-arkkitehtuuriin, tutustu ASIM-arkkitehtuurikaavioon.
Mukautettu ASIM-jäsentimen kehitysprosessi
Seuraavassa työnkulussa kuvataan mukautetun LÄHDEKOHTAISEN ASIM-jäsentimen kehittämisen ylätason vaiheet:
Tunnista ne rakenteet tai rakenteet, joita lähteestä lähetetyt tapahtumat edustavat. Lisätietoja on kohdassa Rakenteen yleiskatsaus.
Yhdistä lähdetapahtumakentät tunnistettuun rakenteeseen tai rakenteisiin.
Kehitä yksi tai useampi ASIM-jäsennin lähteellesi. Sinun on kehitettävä suodatuksen jäsennin ja parametrittomampi jäsennin kullekin lähteelle olennaiselle rakenteelle.
Testaa jäsennin.
Ota jäsentimet käyttöön Microsoft Sentinel työtiloissasi.
Päivitä asianmukainen ASIM-yhtenäistämisen jäsennin viittaamaan uuteen mukautettuun jäsennykseen. Lisätietoja on artikkelissa ASIM-jäsentimien hallinta.
Haluat ehkä myös lisätä jäsennyksesi ensisijaiseen ASIM-jakaumaan. Osa jäsennykset voidaan myös määrittää käytettäväksi kaikissa työtiloissa sisäisinä jäsennyksinä.
Tässä artikkelissa kerrotaan prosessin kehitys-, testaus- ja käyttöönottovaiheista.
Vihje
Katso myös syväsukellus-verkkoseminaari Microsoft Sentinel Jäsennysten ja normalisoidun sisällön normalisointi tai katso aiheeseen liittyvä diapino. Lisätietoja on kohdassa Seuraavat vaiheet.
Mallilokien kerääminen
Jotta voit luoda tehokkaita ASIM-jäsennyksiä, tarvitset edustavan lokijoukon, joka useimmissa tapauksissa edellyttää lähdejärjestelmän määrittämistä ja liittämistä Microsoft Sentinel. Jos lähdelaitetta ei ole käytettävissä, pilvipalveluissa käytön mukaan laskutetessa voit ottaa käyttöön monia laitteita kehitystä ja testausta varten.
Lisäksi toimittajan dokumentaation ja lokien mallien löytäminen voi nopeuttaa kehitystä ja vähentää virheitä varmistamalla laajan lokimuodon kattavuuden.
Edustavaan lokijoukkoon olisi kuuluttava seuraavat:
- Tapahtumat, joilla on eri tapahtumatulokset.
- Tapahtumat, joilla on erilaisia vastaustoimintoja.
- Eri muodot käyttäjänimelle, isäntänimelle ja tunnuksille sekä muille kentille, jotka edellyttävät arvon normalisointia.
Vihje
Käynnistä uusi mukautettu jäsennin käyttämällä aiemmin luotua jäsennintä samalle rakenteelle. Aiemmin luodun jäsentimen käyttäminen on erityisen tärkeää jäsentimien suodattamisessa sen varmistamiseksi, että ne hyväksyvät kaikki rakenteen edellyttämät parametrit.
Kartoituksen suunnittelu
Ennen kuin luot jäsentimen, yhdistä lähdetapahtumassa tai -tapahtumissa käytettävissä olevat tiedot tunnistamaasi rakenteeseen:
- Yhdistä kaikki pakolliset kentät ja mieluiten myös suositellut kentät.
- Yritä yhdistää kaikki lähteessä käytettävissä olevat tiedot normalisoituihin kenttiin. Jos se ei ole käytettävissä osana valittua rakennetta, harkitse yhdistämistä muissa rakenteissa käytettävissä oleviin kenttiin.
- Yhdistä lähteen kenttien arvot ASIM:n sallimiin normalisoituihin arvoihin. Alkuperäinen arvo tallennetaan erilliseen kenttään, kuten
EventOriginalResultDetails.
Jäsennysten kehittäminen
Kehitä kullekin olennaiselle rakenteelle sekä suodatustoiminto että parametritta -jäsennin.
Mukautettu jäsennin on Microsoft Sentinel Logs -sivulla kehitetty KQL-kysely. Jäsennyskyselyssä on kolme osaa:
Suodatin>Jäsentää>Valmistele kentät
Suodatus
Asianmukaisten tietueiden suodattaminen
Monissa tapauksissa Microsoft Sentinel taulukko sisältää useita tapahtumatyyppejä. Esimerkki:
- Syslog-taulukossa on tietoja useista lähteistä.
- Mukautetut taulukot voivat sisältää tietoja yhdestä lähteestä, joka tarjoaa useamman kuin yhden tapahtumatyypin ja sopii eri rakenteisiin.
Siksi jäsentimen tulisi ensin suodattaa vain kohderakenteeseen liittyvät tietueet.
KQL-suodatus tehdään -operaattorin where avulla. Esimerkiksi Sysmon-tapahtuma 1 raportoi prosessin luonnin, joten se normalisoidaan ProcessEvent-rakenteen mukaan.
Sysmon-tapahtuman 1 tapahtuma on osa taulukkoaEvent, joten käytät seuraavaa suodatinta:
Event | where Source == "Microsoft-Windows-Sysmon" and EventID == 1
Tärkeää
Jäsennintä ei saa suodattaa ajan mukaan. Jäsennintä käyttävien kyselyiden aikaväli on käytössä.
Suodattaminen lähdetyypin mukaan katseluluettelon avulla
Joissakin tapauksissa tapahtuma itsessään ei sisällä tietoja, jotka sallisivat suodatuksen tietyille lähdetyypeille.
Esimerkiksi Infoblox DNS -tapahtumat lähetetään Syslog-viesteinä, ja niitä on vaikea erottaa muista lähteistä lähetetyistä Syslog-viesteistä. Tällaisissa tapauksissa jäsennin käyttää lähteiden luetteloa, joka määrittää olennaiset tapahtumat. Tätä luetteloa ylläpidetään Sources_by_SourceType katseluluettelossa.
Jos haluat käyttää ASimSourceType-katseluluetteloa jäsennyksissäsi, käytä jäsenninsuodatusosion _ASIM_GetSourceBySourceType funktiota. Esimerkiksi Infoblox DNS -jäsennin sisällyttää suodatusosioon seuraavan:
| where Computer in (_ASIM_GetSourceBySourceType('InfobloxNIOS'))
Jos haluat käyttää tätä mallia jäsentimessä:
Korvaa
Computersen kentän nimellä, joka sisältää lähteen lähdetiedot. Voit säilyttää tämän kutenComputerkaikkien Syslog-pohjaisten jäsennysten kohdalla.Korvaa tunnus
InfobloxNIOSvalitsemallasi jäsennysarvolla. Ilmoita jäsentimen käyttäjille, että heidän on päivitettäväASimSourceTypekatseluluettelo käyttämällä valitsemaasi arvoa sekä luetteloa lähteistä, jotka lähettävät tämän tyyppisiä tapahtumia.
Jäsennysparametrien perusteella suodattaminen
Kun kehität suodatus jäsentäjiä, varmista, että jäsennin hyväksyy asianmukaisen rakenteen suodatusparametrit, kuten kyseisen rakenteen viiteartikkelissa on dokumentoitu. Käyttämällä aiemmin luotua jäsennintä aloituspisteenä varmistat, että jäsennin sisältää oikean funktion allekirjoituksen. Useimmissa tapauksissa todellinen suodatuskoodi on samanlainen myös saman rakenteen jäsentimien suodattamisessa.
Kun suodatat, varmista, että:
- Suodata ennen jäsennystä fyysisten kenttien avulla. Jos suodatetut tulokset eivät ole riittävän tarkkoja, voit hienosäätää tuloksia toistamalla testin jäsentämisen jälkeen. Lisätietoja on kohdassa Suodatuksen optimointi.
- Älä suodata, jos parametria ei ole määritetty ja sillä on edelleen oletusarvo.
Seuraavissa esimerkeissä näytetään, miten otetaan käyttöön suodatus merkkijonoparametrille, jossa oletusarvo on yleensä *, ja luetteloparametrille, jossa oletusarvo on yleensä tyhjä luettelo.
srcipaddr=='*' or ClientIP==srcipaddr
array_length(domain_has_any) == 0 or Name has_any (domain_has_any)
Katso lisätietoja kusto-dokumentaation seuraavista kohteista:
Suodatuksen optimointi
Voit varmistaa jäsentimen suorituskyvyn huomioimalla seuraavat suodatussuositukset:
- Suodata aina sisäänrakennetut kentät jäsennyskenttien sijaan. Vaikka suodattaminen jäsennyskenttien avulla on joskus helpompaa, se vaikuttaa suorituskykyyn huomattavasti.
-
Käytä operaattoreita, jotka tarjoavat optimoidun suorituskyvyn. Erityisesti ,
==hasjastartswith. Operaattoreiden, kutencontainstaimatches regexmyös, käyttö vaikuttaa suorituskykyyn huomattavasti.
Suorituskykysuositusten suodattaminen ei välttämättä ole aina helppoa. Esimerkiksi -käyttö has ei ole yhtä tarkka kuin contains. Muissa tapauksissa sisäänrakennetun kentän, kuten SyslogMessage, vastaavuus ei ole yhtä tarkkaa kuin poimitun kentän, kuten DvcAction. Tällaisissa tapauksissa suosittelemme, että edelleen esisuodatat käyttämällä suorituskyvyn optimointioperaattoria sisäänrakennetun kentän päällä ja toistat suodattimen käyttämällä tarkempia ehtoja jäsentämisen jälkeen.
Katso esimerkiksi seuraava Infoblox DNS - jäsennyskatkelma. Jäsennin tarkistaa ensin, että SyslogMessage sisältää has sanan client. Termiä voidaan kuitenkin käyttää toisessa paikassa viestissä, joten jäsennyksen Log_Type jälkeen jäsennin tarkistaa uudelleen, että sana client oli todellakin kentän arvo.
Syslog | where ProcessName == "named" and SyslogMessage has "client"
…
| extend Log_Type = tostring(Parser[1]),
| where Log_Type == "client"
Huomautus
Jäsennystoiminnot eivät saa suodattaa ajan mukaan, sillä jäsennintä käyttävä kysely suodattuu jo ajan mukaan.
Jäsennys
Kun kysely valitsee tarvittavat tietueet, se saattaa joutua jäsentämään ne. Yleensä jäsennystä tarvitaan, jos yksittäisessä tekstikentässä on useita tapahtumakenttiä.
Jäsennystä suorittavat KQL-operaattorit on lueteltu alla suorituskyvyn optimoinnin mukaan järjestettynä. Ensimmäinen tarjoaa optimoiduimman suorituskyvyn, kun taas viimeinen tarjoaa vähiten optimoidun suorituskyvyn.
| Operaattori/funktio() | Kuvaus |
|---|---|
| split() -funktio | Jäsennä eroteltujen arvojen merkkijono. |
| parse_csv() -funktio | Jäsennä CSV-riviksi (pilkuin eroteltuina arvoina) muotoiltu arvomerkkijono. |
| parse-kv-operaattori | Poimii jäsennettyjä tietoja merkkijonolausekkeesta ja edustaa avain-arvo-lomakkeen tietoja. |
| jäsennysoperaattori | Jäsennä useita arvoja satunnaisesta merkkijonosta käyttämällä kaavaa, joka voi olla yksinkertaistettu muoto, jolla on parempi suorituskyky, tai säännöllinen lauseke. |
| extract_all() -funktio | Jäsennä yksittäiset arvot mielivaltaisista merkkijonoista käyttämällä tavallista lauseketta.
extract_all on samanlainen suorituskyky kuin parse jos jälkimmäinen käyttää säännöllistä lauseketta. |
| extract() -funktio | Poimi yksittäinen arvo satunnaisesta merkkijonosta käyttäen säännöllistä lauseketta. Käyttö extract tarjoaa paremman suorituskyvyn kuin parse tai extract_all tarvitaanko yksittäistä arvoa. Jos samaan lähdemerkkijonoon käytetään useita aktivointeja extract , se ei kuitenkaan ole yhtä tehokas kuin yksittäinen parse tai extract_all , ja sitä tulisi välttää. |
| parse_json() -funktio | Jäsennä JSON-muotoon muotoillun merkkijonon arvot. Jos JSON-tiedostossa tarvitaan vain muutama arvo, käyttämällä parse, extracttai extract_all tarjoaa paremman suorituskyvyn. |
| parse_xml() -funktio | Jäsennä XML-muotoon muotoillun merkkijonon arvot. Jos XML-koodissa tarvitaan vain muutama arvo, käyttämällä parse, extract-, - tai extract_all -funktiota, se tarjoaa paremman suorituskyvyn. |
Normalisoi
Kenttien nimien yhdistäminen
Yksinkertaisin normalisoinnin muoto on alkuperäisen kentän nimeäminen uudelleen normalisoituun nimeen. Käytä operaattoria project-rename tätä varten. Projektin uudelleennimeämisen käyttäminen varmistaa, että kenttää hallitaan yhä fyysisenä kenttänä ja että kentän käsittely on suorituskykyisempiä. Esimerkki:
| project-rename
ActorUserId = InitiatingProcessAccountSid,
ActorUserAadId = InitiatingProcessAccountObjectId,
ActorUserUpn = InitiatingProcessAccountUpn,
Normalisoidaan kenttien muotoa ja tyyppiä
Monissa tapauksissa poimittu alkuperäinen arvo on normalisoitava. Esimerkiksi ASIM-muodossa MAC-osoite käyttää kaksoispisteitä erottimena, kun taas lähde voi lähettää yhdysmerkillä erotellun MAC-osoitteen. Arvojen muunnon ensisijainen operaattori on extendKQL-merkkijonojen, numeeristen ja päivämääräfunktioiden laajan joukon rinnalla.
Lisäksi sen varmistaminen, että jäsentimen tulostekentät vastaavat rakenteessa määritettyä tyyppiä, on tärkeää, jotta jäsentimet toimivat. Saatat esimerkiksi joutua muuntamaan päivämäärää ja aikaa edustavan merkkijonon datetime-kentäksi. Funktiot, kuten todatetime ja tohex ovat hyödyllisiä näissä tapauksissa.
Esimerkiksi alkuperäinen yksilöivä tapahtumatunnus voidaan lähettää kokonaislukuna, mutta ASIM edellyttää, että arvo on merkkijono, jotta voidaan varmistaa laaja yhteensopivuus tietolähteiden välillä. Sen vuoksi lähdekenttää määrittäessäsi käytetään extend ja tostring sen sijaan project-rename:
| extend EventOriginalUid = tostring(ReportId),
Johdetut kentät ja arvot
Lähdekentän arvo, joka on poimittu, on ehkä yhdistettävä kohderakennekenttään määritettyyn arvojoukkoon. Funktiot iff, caseja lookup voivat olla hyödyllisiä käytettävissä olevien tietojen yhdistämisessä kohdearvoihin.
Esimerkiksi Microsoft DNS -jäsennin määrittää EventResult kentän tapahtumatunnuksen ja vastauskoodin perusteella seuraavan lausekkeen iff avulla:
extend EventResult = iff(EventId==257 and ResponseCode==0 ,'Success','Failure')
Jos haluat yhdistää useita arvoja, määritä yhdistämismääritys -operaattorin datatable avulla ja suorita yhdistäminen - lookup toiminnolla. Jotkin lähteet esimerkiksi raportoivat numeerisia DNS-vastauskoodeja ja verkkoprotokollaa, kun taas rakenne määrittää yleisimmät tekstiotsikoiden esityksen kummallekin. Seuraavassa esimerkissä näytetään, miten tarvittavat arvot johdetaan käyttämällä ja datatablelookup:
let NetworkProtocolLookup = datatable(Proto:real, NetworkProtocol:string)[
6, 'TCP',
17, 'UDP'
];
let DnsResponseCodeLookup=datatable(DnsResponseCode:int,DnsResponseCodeName:string)[
0,'NOERROR',
1,'FORMERR',
2,'SERVFAIL',
3,'NXDOMAIN',
...
];
...
| lookup DnsResponseCodeLookup on DnsResponseCode
| lookup NetworkProtocolLookup on Proto
Huomaa, että haku on hyödyllinen ja tehokas myös silloin, kun yhdistämismäärityksessä on vain kaksi mahdollista arvoa.
Kun yhdistämisehdot ovat monimutkaisempia, yhdistä iff, caseja lookup. Alla olevassa esimerkissä näytetään, miten yhdistät lookup ja case. Yllä oleva lookup esimerkki palauttaa tyhjän arvon kentässä DnsResponseCodeName , jos hakuarvoa ei löydy.
case Alla oleva esimerkki laajentaa sitä käyttämällä toiminnon tulostalookup, jos se on käytettävissä, ja määrittämällä muussa tapauksessa lisäehtoja.
| extend DnsResponseCodeName =
case (
DnsResponseCodeName != "", DnsResponseCodeName,
DnsResponseCode between (3841 .. 4095), 'Reserved for Private Use',
'Unassigned'
)
Microsoft Sentinel tarjoaa kätevät funktiot yleisille hakuarvoille. Esimerkiksi yllä oleva DnsResponseCodeName haku voidaan toteuttaa jollakin seuraavista funktioista:
| extend DnsResponseCodeName = _ASIM_LookupDnsResponseCode(DnsResponseCode)
| invoke _ASIM_ResolveDnsResponseCode('DnsResponseCode')
Ensimmäinen asetus hyväksyy parametrina etsittävän arvon ja antaa sinun valita tulostekentän ja siten hyödyllinen yleisenä hakufunktiona. Toinen vaihtoehto on kohdistettu paremmin jäsennyksiin, ottaa syötteeksi lähdekentän nimen ja päivittää tarvittavan ASIM-kentän, tässä tapauksessa DnsResponseCodeName.
Täydellinen luettelo ASIM-ohjefunktioista on asim-funktioissa
Lisäyskentät
Lähteestä käytettävissä olevien kenttien lisäksi tuloksena oleva ASIM-tapahtuma sisältää lisäyksen kenttiä, jotka jäsentimen tulisi luoda. Monissa tapauksissa jäsentimet voivat määrittää kentille vakioarvon, esimerkiksi:
| extend
EventCount = int(1),
EventProduct = 'M365 Defender for Endpoint',
EventVendor = 'Microsoft',
EventSchemaVersion = '0.1.0',
EventSchema = 'ProcessEvent'
Jäsennyskenttien tyypin määrittävät myös tyyppikentät, jotka määrittävät liittyvään kenttään tallennetun arvon tyypin. Kenttä määrittää esimerkiksi SrcUsernameType kenttään tallennetun SrcUsername arvon tyypin. Lisätietoja tyyppikentistä on entiteettien kuvauksessa.
Useimmissa tapauksissa tyypeille määritetään myös vakioarvo. Joissakin tapauksissa tyyppi on kuitenkin määritettävä todellisen arvon perusteella, esimerkiksi:
DomainType = iif (array_length(SplitHostname) > 1, 'FQDN', '')
Microsoft Sentinel tarjoaa hyödyllisiä funktioita täydennysten käsittelyyn. Käytä esimerkiksi seuraavaa funktiota määrittämään kentät SrcHostnameautomaattisesti , SrcDomainja SrcDomainTypeSrcFQDN -kentän Computerarvon perusteella.
| invoke _ASIM_ResolveSrcFQDN('Computer')
Tämä funktio määrittää kentät seuraavasti:
| Tietokonekenttä | Tulostekentät |
|---|---|
| palvelin1 | SrcHostname: palvelin1 SrcDomain, SrcDomainType, SrcFQDN kaikki tyhjiä |
| server1.microsoft.com | SrcHostname: palvelin1 SrcDomain: microsoft.com SrcDomainType: FQDN SrcFQDN:server1.microsoft.com |
Funktiot _ASIM_ResolveDstFQDN ja _ASIM_ResolveDvcFQDN suorittavat samanlaisen tehtävän, joka täyttää liittyvät Dst ja Dvc kentät. Täydellinen luettelo ASIM-ohjefunktioista on asim-funktioissa
Valitse tulosjoukon kentät
Jäsennin voi halutessaan valita kenttiä tulosjoukosta. Tarpeettomien kenttien poistaminen voi parantaa suorituskykyä ja selkeyttää sitä, ettei normalisoitujen kenttien ja jäljelle jäävien lähdekenttien välillä ole sekaannusta.
Seuraavia KQL-operaattoreita käytetään kenttien valitsemiseen tulosjoukossa:
| Operaattori | Kuvaus | Milloin käyttää jäsennystilassa |
|---|---|---|
| projekti pois | Poistaa kentät. | Käytä project-away tietyissä kentissä, jotka haluat poistaa tulosjoukosta. Suosittelemme, että et poista alkuperäisiä kenttiä, joita ei ole normalisoitu tulosjoukosta, elleivät ne aiheuta sekaannusta tai jos ne ovat hyvin suuria ja niillä voi olla vaikutuksia suorituskykyyn. |
| Projektin | Valitsee kentät, jotka olivat olemassa aiemmin tai jotka luotiin osana lauseketta, ja poistaa kaikki muut kentät. | Ei suositella käytettäväksi jäsennykseen, koska jäsennin ei saa poistaa muita kenttiä, joita ei ole normalisoitu. Jos sinun on poistettava tietyt kentät, kuten jäsennysvaiheessa käytetyt väliaikaiset arvot, poista ne tuloksista - project-away toiminnolla. |
Kun esimerkiksi jäsennät mukautettua lokitaulukkoa, poista seuraavat tiedot alkuperäisistä kentistä, joilla on vielä tyyppikuvain:
| project-away
*_d, *_s, *_b, *_g
Käsittele jäsennysvariantteja
Tärkeää
Eri variantit edustavat eri tapahtumatyyppejä, jotka on yleensä yhdistetty eri rakenteisiin, kehittävät erilliset jäsennykset
Monissa tapauksissa eventstream-tapahtumat sisältävät variantteja, jotka edellyttävät erilaista jäsennyslogiikkaa. Jos haluat jäsentää eri variantteja yhdessä jäsennykseen, käytä joko ehdollisia lausekkeita, kuten iff ja case, tai käytä yhdistämisrakennetta.
Jos haluat käsitellä union useita variantteja, luo kullekin variantille erillinen funktio ja yhdistä tulokset yhdistämällä yhdistämislausekkeen avulla:
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…
Jos haluat välttää päällekkäiset tapahtumat ja liiallisen käsittelyn, varmista, että kukin funktio alkaa suodattamalla alkuperäisten kenttien avulla vain tapahtumat, jotka on tarkoitettu jäsennettäväksi. Käytä tarvittaessa myös project-away-toimintoa kussakin haarassa ennen liittoa.
Jäsennysten käyttöönotto
Ota jäsentimet käyttöön manuaalisesti kopioimalla ne Azure Valvontaloki-sivulle ja tallentamalla kysely funktiona. Tästä menetelmästä on hyötyä testauksessa. Lisätietoja on kohdassa Funktion luominen.
Jos haluat ottaa käyttöön suuren määrän jäsentimiä, suosittelemme jäsentämään ARM-malleja seuraavasti:
Luo YAML-tiedosto kullekin rakenteen asianmukaiselle mallille ja sisällytä kyselysi siihen. Aloita rakenteen ja jäsentimen tyypin, suodatuksen tai parametrittoman YAML-mallin avulla.
MUUNNA YAML-tiedosto ARM-mallimuuntimeksi ASIM YAML -mallimuuntimen avulla.
Jos otat päivityksen käyttöön, poista funktioiden vanhemmat versiot portaalin tai funktion avulla poista PowerShell-työkalu.
Ota mallisi käyttöön Azure-portaali tai PowerShellin avulla.
Voit myös yhdistää useita malleja yhteen käyttöönottoprosessiin linkitettyjen mallien avulla
Vihje
ARM-mallit voivat yhdistää eri resursseja, joten jäsentimet voidaan ottaa käyttöön liittimien, analyysisääntöjen tai katseluluetteloiden rinnalla. Jäsennin voi esimerkiksi viitata sen rinnalla käyttöön otettuun katseluluetteloon.
Testaa jäsennys
Tässä osiossa kuvataan, että ASIM-testaustyökalujen avulla voit testata jäsennyksiä. Jäsentimet ovat kuitenkin koodia, joskus monimutkaisia, ja automatisoidun testauksen lisäksi suositellaan vakiomuotoisia laadunvarmistuskäytäntöjä, kuten kooditarkistuksia.
ASIM-testaustyökalujen asentaminen
Jos haluat testata ASIM-testaustyökalua, ota ASIM-testaustyökalu käyttöön Microsoft Sentinel työtilassa, jossa:
- Jäsennin on otettu käyttöön.
- Jäsentimen käyttämä lähdetaulukko on käytettävissä.
- Jäsentimen käyttämä lähdetaulukko sisältää monipuolisen valikoiman olennaisia tapahtumia.
Tulostusrakenteen vahvistaminen
Varmista, että jäsennin tuottaa kelvollisen rakenteen, käyttämällä ASIM-rakenteen testaajaa suorittamalla seuraava kysely Microsoft Sentinel Lokit-sivulla:
<parser name> | getschema | invoke ASimSchemaTester('<schema>')
Käsittele tulokset seuraavasti:
| Error | Toiminta |
|---|---|
| Pakollinen kenttä puuttuu [<Kenttä>] | Lisää kenttä jäsennykseen. Monissa tapauksissa kyseessä on jo johdettu arvo tai vakioarvo, ei lähdettä jo käytettävissä oleva kenttä. |
| Puuttuva kenttä [<Kenttä>] on pakollinen, kun pakollinen sarake [<Field>] on olemassa | Lisää kenttä jäsennykseen. Monissa tapauksissa tämä kenttä tarkoittaa sen olemassa olevan sarakkeen tyyppejä, johon se viittaa. |
| Puuttuva kenttä [<Kenttä>] on pakollinen, kun sarake [<Field>] on olemassa | Lisää kenttä jäsennykseen. Monissa tapauksissa tämä kenttä tarkoittaa sen olemassa olevan sarakkeen tyyppejä, johon se viittaa. |
| Puuttuva pakollinen tunnus [<Kenttä>] olemassa olevan sarakkeen tunnus [<Kenttä>] | Lisää tunnus jäsennykseen |
| Suositeltu tunnus [<Kentän>] olemassa olevan sarakkeen tunnus puuttuu [<Kenttä>] | Lisää tunnus jäsennykseen |
| Puuttuva valinnainen tunnus [<Kenttä>] olemassa olevan sarakkeen tunnus [<Kenttä>] | Lisää tunnus jäsennykseen |
| Puuttuva pakollinen tunnus [<Kentän>] tunnus puuttuu sarakkeesta [<Kenttä>] | Tämä virhe liittyy samanlaiseen virheeseen aliaskentässä. Korjaa tunnuskentän virhe ja lisää tämä tunnus jäsennykseen. |
| Kentän [<Field>] tyyppiristiriita. Se on tällä hetkellä [<Type>] ja sen tulee olla [<type>] | Varmista, että normalisoidun kentän tyyppi on oikein, yleensä käyttämällä muunnosfunktiota , kuten tostring. |
| Info | Toiminta |
|---|---|
| Suositeltu kenttä puuttuu [<Kenttä>] | Harkitse tämän kentän lisäämistä jäsennykseen. |
| Info | Toiminta |
|---|---|
| Suositeltu alias [<Field>]-tunnus puuttuu, jos saraketta ei ole [<Field>] | Jos lisäät jäsennyskenttään, muista lisätä myös tämä alias. |
| Puuttuva valinnainen tunnus [<Field>]-tunnus, jota ei ole olemassa [<Field>] | Jos lisäät jäsennyskenttään, muista lisätä myös tämä alias. |
| Valinnainen kenttä puuttuu [<Kenttä>] | Vaikka valinnaisia kenttiä puuttuu usein, on syytä tarkistaa luettelo sen määrittämiseksi, voidaanko jokin valinnaisista kentistä yhdistää lähteestä. |
| Erittäinnormalisoimaton kenttä [<Kenttä>] | Vaikka määrittämättömät kentät ovat kelvollisia, on syytä tarkistaa luettelo sen määrittämiseksi, voidaanko jokin muuntamattomista arvoista yhdistää valinnaisiin kenttiin. |
Huomautus
Virheet estävät jäsennintä käyttävän sisällön oikean toiminnan. Varoitukset eivät estä sisällön toimimista, mutta ne saattavat heikentää tulosten laatua.
Tarkista tulostearvot
Varmista, että jäsennin tuottaa kelvolliset arvot, käyttämällä ASIM-tietojen testaajaa suorittamalla seuraava kysely Microsoft Sentinel Lokit-sivulla:
<parser name> | limit <X> | invoke ASimDataTester ('<schema>')
Rakenteen määrittäminen on valinnaista. Jos rakennetta ei määritetä, EventSchema kenttää käytetään tunnistamaan rakenne, jota tapahtuman tulee noudattaa. Jos tapahtuma ei sisällä EventSchema kenttää, vain yleiset kentät tarkistetaan. Jos rakenne määritetään parametriksi, tätä rakennetta käytetään kaikkien tietueiden testaamiseen. Tästä on hyötyä vanhemmille jäsennyksille, jotka eivät määritä EventSchema kenttää.
Huomautus
Vaikka rakennetta ei määritetä, funktion nimen jälkeen tarvitaan tyhjiä sulkeita.
Tämä testi vaatii paljon resursseja, eikä se välttämättä toimi koko tietojoukon kanssa. Määritä X-arvoksi suurin luku, jonka aikaväliä kysely ei aikakatkaistiin, tai määritä kyselyn aika-alue aikavälivalitsimen avulla.
Käsittele tulokset seuraavasti:
| Viesti | Toiminta |
|---|---|
| (0) Virhe: sarakkeen [<Field>] tyyppiristiriita. Se on tällä hetkellä [<Type>] ja sen tulee olla [<type>] | Varmista, että normalisoidun kentän tyyppi on oikein, yleensä käyttämällä muunnosfunktiota , kuten tostring. |
| (0) Virhe: Virheellisiä arvoja (luettelossa enintään 10) kentälle [<Kenttä>], jonka tyyppi on [<Looginen tyyppi>] | Varmista, että jäsennin yhdistää oikean lähdekentän tuloskenttään. Jos se on yhdistetty oikein, päivitä jäsennin muuntaaksesi lähdearvon oikeaan tyyppiin, arvoon tai muotoon. Katso loogisten tyyppien luettelosta lisätietoja kunkin loogisen tyypin oikeista arvoista ja muodoista. Huomaa, että testaustyökalu näyttää vain 10 virheellisen arvon mallin. |
| (1) Varoitus: Tyhjä arvo pakollisessa kentässä [<Kenttä>] | Pakolliset kentät tulee täyttää, ei vain määrittää. Tarkista, voidaanko kenttä täyttää muista lähteistä tietueille, joiden nykyinen lähde on tyhjä. |
| (2) Tiedot: Tyhjä arvo suositellussa kentässä [<Kenttä>] | Suositellut kentät on yleensä täytettävä. Tarkista, voidaanko kenttä täyttää muista lähteistä tietueille, joiden nykyinen lähde on tyhjä. |
| (2) Tiedot: Tyhjä arvo valinnaisessa kentässä [<Kenttä>] | Tarkista, onko aliaskenttä pakollinen vai suositeltava, ja jos on, voidaanko se täyttää muista lähteistä. |
Monet sanomat ilmoittavat myös viestin luoneiden tietueiden määrän ja niiden prosenttiosuuden otoksen kokonaismäärästä. Tämä prosenttiosuus on hyvä osoitus ongelman tärkeydestä. Esimerkiksi suositellulle kentälle:
- 90 % tyhjät arvot voivat olla merkki yleisestä jäsennysongelmasta.
- 25 % tyhjät arvot saattavat ilmaista tapahtuman varianttia, jota ei jäsennetty oikein.
- Kourallinen tyhjiä arvoja voi olla vähäpätöinen kysymys.
Huomautus
Virheet estävät jäsennintä käyttävän sisällön oikean toiminnan. Varoitukset eivät estä sisällön toimimista, mutta ne saattavat heikentää tulosten laatua.
Osallistu jäsennyksiin
Haluat ehkä osallistua jäsennykseen ensisijaiseen ASIM-jakaumaan. Jos ne hyväksytään, jäsennykset ovat jokaisen asiakkaan käytettävissä ASIM:n sisäisinä jäsennyksinä.
Jäsentimien osallistuminen:
- Kehitä sekä suodatuksen jäsennin että parametritta -jäsennin.
- Luo jäsennykseen YAML-tiedosto kohdan Jäsennysten käyttöönotto edellä kuvatulla tavalla.
- Varmista, että jäsentimet läpäisevät kaikki testaukset ilman virheitä. Jos varoituksia jää jäljelle, dokumentoi ne jäsennin YAML-tiedostoon.
- Luo pull-pyyntö Microsoft Sentinel GitHub-säilöön, mukaan lukien:
- Jäsennys-YAML-tiedostot ASIM-jäsennyskansioissa (
/Parsers/ASim<schema>/Parsers) - Edustavat mallitiedot näytteiden lähettämisen ohjeiden mukaisesti.
- Testitulokset testitulosten lähettämisen ohjeiden mukaisesti.
- Jäsennys-YAML-tiedostot ASIM-jäsennyskansioissa (
Hyväksyttyjen varoitusten dokumentointi
Jos ASIM-testaustyökalujen luetteloimia varoituksia pidetään kelvollisina jäsennykseen, dokumentoi jäsentimen YAML-tiedoston hyväksytyt varoitukset käyttämällä Poikkeukset-osaa alla olevan esimerkin mukaisesti.
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
YAML-tiedostossa määritetyn varoituksen on oltava lyhyt varoitussanoma, joka yksilöidään. Arvoa käytetään vastaamaan varoitussanomia automaattisia testejä suoritettaessa ja ohittamaan ne.
Mallien lähettämisen ohjeet
Esimerkkitietoja tarvitaan jäsennysongelmien vianmäärityksessä ja sen varmistamiseksi, että jäsentimen tulevat päivitykset ovat vanhempien mallien mukaisia. Lähettämissasi näytteissä pitäisi olla mikä tahansa tapahtumamuunnos, jota jäsennin tukee. Varmista, että mallitapahtumat sisältävät kaikki mahdolliset tapahtumatyypit, tapahtumamuodot ja variaatiot, kuten onnistuneen ja epäonnistuneen toiminnan tapahtumat. Varmista myös, että arvomuotojen variaatiot ovat edustettuina. Jos isäntänimi voidaan esittää esimerkiksi täydellisenä toimialuenimenä tai yksinkertaisena isäntänimenä, esimerkkitapahtumien tulee sisältää molemmat muodot.
Voit lähettää tapahtumamalleja seuraavien vaiheiden avulla:
-
LogsSuorita näytössä kysely, joka poimii lähdetaulukosta vain jäsentimen valitsemat tapahtumat. Käytä esimerkiksi Infoblox DNS -jäsennystä varten seuraavaa kyselyä:
Syslog
| where ProcessName == "named"
Vie tulokset Vie CSV-tiedostoon -toiminnolla tiedostoon, jonka nimi
<EventVendor>_<EventProduct>_<EventSchema>_IngestedLogs.csvon , jossaEventProduct,EventProductjaEventSchemaovat jäsentimen kyseisiin kenttiin määrittämiä arvoja.LogsSuorita näytössä kysely, joka tulostaa rakenteen tai jäsentimen syötetaulukon. Esimerkiksi samalle Infoblox DNS -jäsentimelle kysely on:
Syslog
| getschema
Vie tulokset Vie CSV-tiedostoon -toiminnolla tiedostoon, jonka
TableNamenimi<TableName>_schema.csvon jäsentimen käyttämä lähdetaulukko.Sisällytä molemmat tiedostot pull-pyyntöön kansioon
/Sample Data/ASIM. Jos tiedosto on jo olemassa, lisää nimeen GitHub-kahvasi, esimerkiksi:<EventVendor>_<EventProduct>_<EventSchema>_SchemaTest_<GitHubHandle>.csv
Testitulosten lähettämisen ohjeet
Testituloksilla on tärkeää varmistaa jäsentimen oikeellisuus ja ymmärtää mahdolliset raportoidut poikkeukset.
Voit lähettää testitulokset seuraavien vaiheiden avulla:
Suorita jäsennystestit ja kuvaile ne testausosiossa .
ja vie testitulokset käyttämällä Vie CSV-tiedostoon -asetusta tiedostoihin, jotka on nimetty
<EventVendor>_<EventProduct>_<EventSchema>_SchemaTest.csvja<EventVendor>_<EventProduct>_<EventSchema>_DataTest.csvvastaavasti.Sisällytä molemmat tiedostot pull-pyyntöön kansioon
/Parsers/ASim<schema>/Tests.
Seuraavat vaiheet
Tässä artikkelissa käsitellään ASIM-jäsennysten kehittämistä.
Lisätietoja ASIM-jäsennyksistä:
- ASIM-jäsennysten yleiskatsaus
- ASIM-jäsennysten käyttäminen
- ASIM-jäsennysten hallinta
- ASIM-jäsennysluettelo
Lue lisätietoja ASIM:stä yleisesti: