Bereitgestellte Parser des Advanced Security Information Model (ASIM)-Arbeitsbereichs

Im Arbeitsbereich bereitgestellte ASIM-Parser (Advanced Security Information Model) werden verwendet, um das Entwickeln und Ändern von ASIM-Parsern zu unterstützen.

Bereitstellen von Arbeitsbereichsparsern

ASIM unterstützt auch die Bereitstellung von Parsern in bestimmten Arbeitsbereichen von GitHub mithilfe einer ARM-Vorlage. Im Arbeitsbereich bereitgestellte Parser werden für die Entwicklung und Verwaltung des ASIM-Parsers verwendet. Im Arbeitsbereich bereitgestellte Parser sind funktional äquivalent, weisen jedoch geringfügig unterschiedliche Namenskonventionen auf, sodass beide Parsersätze gleichzeitig mit integrierten Parsern im selben Microsoft Sentinel Arbeitsbereich vorhanden sind.

Es wird empfohlen, beim Entwickeln von ASIM-Inhalten integrierte Parser zu verwenden. Vom Arbeitsbereich bereitgestellte Parser werden in der Regel während des Parserentwicklungsprozesses oder zum Bereitstellen geänderter Versionen integrierter Parser verwendet, wie unter Verwalten von Parsern beschrieben.

Verwenden von Arbeitsbereichsparsern

Wenn Sie Arbeitsbereichsparser in Ihren Abfragen verwenden, lautet im<schema>der vereinheitlichende Parsername , wobei <schema> für das spezifische Schema steht, das er bedient.

In der folgenden Tabelle sind die verfügbaren vereinheitlichenden Parser aufgeführt:

Schema Vereinheitlichender Parser
Warnungsereignis imAlertEvent
Audit-Ereignis imAuditEvent
Authentifizierung ImAuthentication
DHCP-Ereignis imDhcpEvent
Dns imDns
Dateiereignis imFileEvent
Netzwerksitzung imNetworkSession
Prozessereignis imProcessCreate
imProcessTerminate
Registrierungsereignis imRegistry
User Management imUserManagement
Websitzung imWebSession

Verwalten von vom Arbeitsbereich bereitgestellten vereinheitlichenden Parsern

Hinzufügen eines benutzerdefinierten Parsers zu einem vom Arbeitsbereich bereitgestellten vereinheitlichenden Parser

Um einen benutzerdefinierten Parser hinzuzufügen, fügen Sie eine Zeile in die union -Anweisung im vom Arbeitsbereich bereitgestellten vereinheitlichenden Parser ein, der auf den neuen benutzerdefinierten Parser verweist.

Stellen Sie sicher, dass Sie sowohl einen benutzerdefinierten Filterparser als auch einen parameterlosen benutzerdefinierten Parser hinzufügen. Die Syntax der hinzuzufügenden Zeile unterscheidet sich für jedes Schema:

Schema Parser Hinzuzufügende Zeile
AlertEvent imAlertEvent _parser_name_ (starttime, endtime, ipaddr_has_any_prefix, hostname_has_any, username_has_any, attacktactics_has_any, attacktechniques_has_any, threatcategory_has_any, alertverdict_has_any, eventseverity_has_any)
AuditEvent imAuditEvent _parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, eventtype_in, eventresult, actorusername_has_any, operation_has_any, object_has_any, newvalue_has_any)
Authentifizierung imAuthentication _parser_name_ (starttime, endtime, targetusername_has_any, actorusername_has_any, srcipaddr_has_any_prefix, srchostname_has_any, targetipaddr_has_any_prefix, dvcipaddr_has_any_prefix, dvchostname_has_any, eventtype_in, eventresultdetails_in, eventresult)
DhcpEvent imDhcpEvent _parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, srchostname_has_any, srcusername_has_any, eventresult)
Dns imDns _parser_name_ (starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)
FileEvent imFileEvent _parser_name_ (starttime, endtime, eventtype_in, srcipaddr_has_any_prefix, actorusername_has_any, targetfilepath_has_any, srcfilepath_has_any, hashes_has_any, dvchostname_has_any)
Networksession imNetworkSession _parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, dstipaddr_has_any_prefix, ipaddr_has_any_prefix, dstportnumber, hostname_has_any, dvcaction, eventresult)
ProcessEvent imProcessCreate, imProcessTerminate _parser_name_ (starttime, endtime, commandline_has_any, commandline_has_all, commandline_has_any_ip_prefix, actingprocess_has_any, targetprocess_has_any, parentprocess_has_any, targetusername_has, actorusername_has, dvcipaddr_has_any_prefix, dvchostname_has_any, eventtype)
RegistryEvent imRegistry _parser_name_ (starttime, endtime, eventtype_in, actorusername_has_any, registrykey_has_any, registryvalue_has_any, registryvaluedata_has_any, dvchostname_has_any)
UserManagement imUserManagement _parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, targetusername_has_any, actorusername_has_any, eventtype_in)
WebSession imWebSession _parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, ipaddr_has_any_prefix, url_has_any, httpuseragent_has_any, eventresultdetails_in, eventresult)

Wenn Sie einem vereinheitlichenden Parser einen zusätzlichen Parser hinzufügen, stellen Sie sicher, dass Sie am Ende der vorherigen Zeile ein Komma hinzufügen.

Das folgende Beispiel zeigt z. B. den vereinheitlichenden Parser für die DNS-Filterung, nachdem der benutzerdefinierte added_parserhinzugefügt wurde:

  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)

Verwenden einer geänderten Version eines vom Arbeitsbereich bereitgestellten Parsers

Microsoft Sentinel Benutzer können im Arbeitsbereich bereitgestellte Parser direkt ändern. Erstellen Sie einen Parser basierend auf dem Original, kommentieren Sie das Original aus, und fügen Sie dann Ihre geänderte Version dem vom Arbeitsbereich bereitgestellten vereinheitlichenden Parser hinzu.

Der folgende Code zeigt z. B. einen vereinheitlichenden Parser für die DNS-Filterung, der den vimDnsAzureFirewall Parser durch eine geänderte Version ersetzt hat:

  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)

Weitere Informationen finden Sie unter: