Gestire parser ASIM (Advanced Security Information Model) (anteprima pubblica)
Gli utenti di Advanced Security Information Model (ASIM) usano parser unificanti anziché nomi di tabelle nelle query per visualizzare i dati in un formato normalizzato e ottenere tutti i dati rilevanti per lo schema in una singola query. Ogni parser unificante usa più parser specifici dell’origine che gestiscono i dettagli specifici di ogni origine.
Per comprendere in che modo i parser rientrano nell’architettura ASIM, vedere il diagramma dell’architettura ASIM.
Potrebbe essere necessario gestire i parser specifici dell'origine usati da ogni parser unificante per:
Aggiungere un parser personalizzato specifico dell’origine a un parser unificante.
Sostituire un parser specifico dell’origine predefinito usato da un parser unificante con un parser personalizzato specifico dell’origine. Sostituire i parser predefiniti quando si vuole:
Usare una versione del parser predefinito diversa da quella usata per impostazione predefinita nel parser unificante.
Impedire gli aggiornamenti automatizzati mantenendo la versione del parser specifico dell’origine usata dal parser unificante.
Usare una versione modificata di un parser predefinito.
Configurare un parser specifico dell’origine, ad esempio per definire le origini che inviano informazioni pertinenti al parser.
Questo articolo illustra la gestione dei parser, indipendentemente dall’uso di parser ASIM predefiniti o di parser unificanti distribuiti nell’area di lavoro.
Importante
ASIM è attualmente in anteprima. Le condizioni aggiuntive per l'anteprima di Azure includono termini legali aggiuntivi che si applicano a funzionalità di Azure in versione beta, anteprima o diversamente non ancora disponibili a livello generale.
Le procedure descritte in questo articolo presuppongono che tutti i parser specifici dell’origine siano già stati distribuiti nell’area di lavoro di Microsoft Sentinel.
Per altre informazioni, vedere Sviluppare parser ASIM.
Gli utenti di Microsoft Sentinel non possono modificare parser unificanti predefiniti. Usare invece i meccanismi seguenti per modificare il comportamento dei parser unificanti predefiniti:
Per supportare l’aggiunta di parser specifici dell’origine, ASIM usa parser personalizzati e unificanti. Questi parser personalizzati sono distribuiti nell’area di lavoro e pertanto modificabili. I parser predefiniti e unificanti prelevano automaticamente questi parser personalizzati se esistenti.
È possibile distribuire parser personalizzati, iniziali, vuoti e unificanti nell’area di lavoro di Microsoft Sentinel per tutti gli schemi supportati o singolarmente per gli schemi specifici. Per altre informazioni, vedere Distribuire parser unificanti, personalizzati, vuoti, ASIM e iniziali nel repository GitHub di Microsoft Sentinel.
Per supportare l’esclusione di parser predefiniti specifici dell’origine, ASIM usa un watchlist. Distribuire la watchlist nell’area di lavoro di Microsoft Sentinel dal repository GitHub di Microsoft Sentinel.
Per definire il tipo di origine per parser predefiniti e personalizzati, ASIM usa un watchlist. Distribuire la watchlist nell’area di lavoro di Microsoft Sentinel dal repository GitHub di Microsoft Sentinel.
Per aggiungere un parser personalizzato, inserire una riga al parser unificante personalizzato per fare riferimento al nuovo parser personalizzato.
Assicurarsi di aggiungere sia un parser personalizzato di filtro sia un parser personalizzato senza parametri. Per altre informazioni su come modificare i parser, vedere il documento Funzioni in query di log di Monitoraggio di Azure.
La sintassi della riga da aggiungere è diversa per ogni schema:
Schema | Parser | Riga da aggiungere |
---|---|---|
DNS | Im_DnsCustom |
_parser_name_ (starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype) |
NetworkSession | Im_NetworkSessionCustom |
_parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, dstipaddr_has_any_prefix, dstportnumber, hostname_has_any, dvcaction, eventresult) |
WebSession | Im_WebSessionCustom |
_parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, url_has_any, httpuseragent_has_any, eventresultdetails_in, eventresult) |
Quando si aggiunge un parser aggiuntivo a un parser personalizzato unificante che fa già riferimento a parser, assicurarsi di aggiungere una virgola alla fine della riga precedente.
Ad esempio, il codice seguente mostra un parser unificante personalizzato dopo aver aggiunto added_parser
:
union isfuzzy=true
existing_parser(starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype),
added_parser(starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)
Per modificare un parser specifico dell’origine, predefinito ed esistente:
Creare un parser personalizzato in base al parser originale e aggiungerlo al parser predefinito.
Aggiungere un record alla watchlist
ASim Disabled Parsers
.Definire il valore
CallerContext
comeExclude<parser name>
, dove<parser name>
è il nome dei parser unificanti da cui si vuole escludere il parser.Definire il valore
SourceSpecificParser
comeExclude<parser name>
, dove<parser name>
è il nome del parser da escludere senza un identificatore di versione.
Ad esempio, per escludere il parser DNS di Firewall di Azure, aggiungere il record seguente alla watchlist:
CallerContext | SourceSpecificParser |
---|---|
Exclude_Im_Dns |
Exclude_Im_Dns_AzureFirewall |
Usare il processo seguente per impedire gli aggiornamenti automatici per parser predefiniti specifici dell'origine:
Aggiungere la versione predefinita del parser da usare, ad esempio
_Im_Dns_AzureFirewallV02
, al parser unificatore personalizzato. Per altre informazioni, vedere sopra, Aggiungere un parser personalizzato a un parser unificante predefinito.Aggiungere un'eccezione per il parser predefinito. Ad esempio, quando si vuole rifiutare esplicitamente gli aggiornamenti automatici ed escludere quindi un numero elevato di parser predefiniti, aggiungere:
- Record con
Any
come campoSourceSpecificParser
per escludere tutti i parser perCallerContext
. - Record per
Any
nei campi CallerContext eSourceSpecificParser
per escludere tutti i parser predefiniti.
Per altre informazioni, vedere Usare una versione modificata di un parser predefinito.
Per aggiungere un parser personalizzato, inserire una riga nell’istruzione union
nel parser unificante distribuito nell’area di lavoro che fa riferimento al nuovo parser personalizzato.
Assicurarsi di aggiungere sia un parser personalizzato di filtro sia un parser personalizzato senza parametri. La sintassi della riga da aggiungere è diversa per ogni schema:
Schema | Parser | Riga da aggiungere |
---|---|---|
Autenticazione | ImAuthentication |
_parser_name_ (starttime, endtime, targetusername_has) |
DNS | ImDns |
_parser_name_ (starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype) |
Evento di file | imFileEvent |
_parser_name_ |
Sessione di rete | imNetworkSession |
_parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, dstipaddr_has_any_prefix, dstportnumber, url_has_any, httpuseragent_has_any, hostname_has_any, dvcaction, eventresult) |
Evento di processo | - imProcess - imProcessCreate - imProcessTerminate |
_parser_name_ |
Evento di registro | imRegistry |
_parser_name_ |
Sessione Web | imWebSession |
_parser_name_ parser (starttime, endtime, srcipaddr_has_any, url_has_any, httpuseragent_has_any, eventresultdetails_in, eventresult) |
Quando si aggiunge un parser aggiuntivo a un parser unificante, assicurarsi di aggiungere una virgola alla fine della riga precedente.
Ad esempio, l’esempio seguente mostra il parser unificante del filtro DNS dopo aver aggiunto added_parser
personalizzato:
let Generic=(starttime:datetime=datetime(null), endtime:datetime=datetime(null) , srcipaddr:string='*' , domain_has_any:dynamic=dynamic([]) , responsecodename:string='*', response_has_ipv4:string='*' , response_has_any_prefix:dynamic=dynamic([]) , eventtype:string='lookup' ){
let DisabledParsers=materialize(_GetWatchlist('ASimDisabledParsers') | where SearchKey in ('Any', 'imDns') | extend SourceSpecificParser=column_ifexists('SourceSpecificParser','') | distinct SourceSpecificParser);
let imDnsBuiltInDisabled=toscalar('imDnsBuiltIn' in (DisabledParsers) or 'Any' in (DisabledParsers));
union isfuzzy=true
vimDnsEmpty
, vimDnsCiscoUmbrella ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsCiscoUmbrella' in (DisabledParsers) )))
, vimDnsInfobloxNIOS ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsInfobloxNIOS' in (DisabledParsers) )))
...
, vimDnsAzureFirewall ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsAzureFirewall' in (DisabledParsers) )))
, vimDnsMicrosoftNXlog ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsMicrosoftNXlog' in (DisabledParsers) ))),
added_parser ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)
};
Generic( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)
Gli utenti di Microsoft Sentinel possono modificare direttamente i parser distribuiti nell’area di lavoro. Creare un parser basato sull’originale, impostare come commento l’originale e quindi aggiungere la versione modificata al parser unificante distribuito nell’area di lavoro.
Ad esempio, il codice seguente mostra un parser unificante del filtro DNS dopo che ha sostituito il parser vimDnsAzureFirewall
con una versione modificata:
let Generic=(starttime:datetime=datetime(null), endtime:datetime=datetime(null) , srcipaddr:string='*' , domain_has_any:dynamic=dynamic([]) , responsecodename:string='*', response_has_ipv4:string='*' , response_has_any_prefix:dynamic=dynamic([]) , eventtype:string='lookup' ){
let DisabledParsers=materialize(_GetWatchlist('ASimDisabledParsers') | where SearchKey in ('Any', 'imDns') | extend SourceSpecificParser=column_ifexists('SourceSpecificParser','') | distinct SourceSpecificParser);
let imDnsBuiltInDisabled=toscalar('imDnsBuiltIn' in (DisabledParsers) or 'Any' in (DisabledParsers));
union isfuzzy=true
vimDnsEmpty
, vimDnsCiscoUmbrella ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsCiscoUmbrella' in (DisabledParsers) )))
, vimDnsInfobloxNIOS ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsInfobloxNIOS' in (DisabledParsers) )))
...
// , vimDnsAzureFirewall ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsAzureFirewall' in (DisabledParsers) )))
, vimDnsMicrosoftNXlog ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsMicrosoftNXlog' in (DisabledParsers) ))),
modified_vimDnsAzureFirewall ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)
};
Generic( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)
Alcuni parser richiedono di aggiornare l’elenco delle origini rilevanti per il parser. Ad esempio, un parser che usa dati Syslog potrebbe non essere in grado di determinare quali eventi Syslog sono rilevanti per il parser. Un parser di questo tipo può usare la watchlist Sources_by_SourceType
per determinare quali origini inviano informazioni pertinenti al parser. Per tali analisi, aggiungere un record per ogni origine pertinente all’elenco di controllo:
- Impostare il campo
SourceType
sul valore preciso del parser specificato nella documentazione del parser. - Impostare il campo
Source
sull’identificatore dell’origine usata negli eventi. Potrebbe essere necessario eseguire una query sulla tabella originale, ad esempio Syslog, per determinare il valore corretto.
Se la watchlist Sources_by_SourceType
non è stata distribuita nel sistema, distribuirla nell’area di lavoro di Microsoft Sentinel dal repository GitHub di Microsoft Sentinel.
Questo articolo illustra la gestione dei parser ASIM (Advanced Security Information Model).
Altre informazioni sui parser ASIM:
- Panoramica dei parser ASIM
- Usare i parser ASIM
- Sviluppare parser ASIM personalizzati
- Elenco dei parser ASIM
Altre informazioni su ASIM in generale:
- Guardare il webinar di approfondimento sui parser di normalizzazione e i contenuti normalizzati di Microsoft Sentinel o esaminare le diapositive
- Panoramica ASIM (Advanced Security Information Model)
- Schemi ASIM (Advanced Security Information Model)
- Contenuti ASIM (Advanced Security Information Model)