Kehittyneen suojaustietomallin (ASIM) jäsennysten kehittäminen

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:

  1. Kerää mallilokeja.

  2. Tunnista ne rakenteet tai rakenteet, joita lähteestä lähetetyt tapahtumat edustavat. Lisätietoja on kohdassa Rakenteen yleiskatsaus.

  3. Yhdistä lähdetapahtumakentät tunnistettuun rakenteeseen tai rakenteisiin.

  4. 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.

  5. Testaa jäsennin.

  6. Ota jäsentimet käyttöön Microsoft Sentinel työtiloissasi.

  7. Päivitä asianmukainen ASIM-yhtenäistämisen jäsennin viittaamaan uuteen mukautettuun jäsennykseen. Lisätietoja on artikkelissa ASIM-jäsentimien hallinta.

  8. 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.

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 Computer sen kentän nimellä, joka sisältää lähteen lähdetiedot. Voit säilyttää tämän kuten Computer kaikkien Syslog-pohjaisten jäsennysten kohdalla.

  • Korvaa tunnus InfobloxNIOS valitsemallasi jäsennysarvolla. Ilmoita jäsentimen käyttäjille, että heidän on päivitettävä ASimSourceType katseluluettelo 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 , ==hasja startswith. Operaattoreiden, kuten contains tai matches regex myö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:

  1. Luo YAML-tiedosto kullekin rakenteen asianmukaiselle mallille ja sisällytä kyselysi siihen. Aloita rakenteen ja jäsentimen tyypin, suodatuksen tai parametrittoman YAML-mallin avulla.

  2. MUUNNA YAML-tiedosto ARM-mallimuuntimeksi ASIM YAML -mallimuuntimen avulla.

  3. Jos otat päivityksen käyttöön, poista funktioiden vanhemmat versiot portaalin tai funktion avulla poista PowerShell-työkalu.

  4. 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:

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:

  • Logs Suorita 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 , jossa EventProduct, EventProductja EventSchema ovat jäsentimen kyseisiin kenttiin määrittämiä arvoja.

  • Logs Suorita 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 TableName nimi <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.csv ja <EventVendor>_<EventProduct>_<EventSchema>_DataTest.csv vastaavasti.

  • 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ä:

Lue lisätietoja ASIM:stä yleisesti: