Freigeben über


Advanced Security Information Model (ASIM)-Arbeitsbereich bereitgestellte Parser

Im Workspace bereitgestellte Parser des Advanced Security Information Model (ASIM) werden verwendet, um die Entwicklung und Änderung von ASIM-Parsern zu unterstützen.

Bereitstellen von Arbeitsbereichsparsern

ASIM unterstützt außerdem die Bereitstellung von Parsern für bestimmte Arbeitsbereiche von GitHub mithilfe einer ARM-Vorlage. Parser, die im Arbeitsbereich bereitgestellt werden, werden für die Entwicklung und Verwaltung von ASIM-Parsern verwendet. Vom Arbeitsbereich bereitgestellte Parser sind funktional gleichwertig, weisen jedoch geringfügig unterschiedliche Benennungskonventionen auf, sodass beide Parsersätze mit integrierten Parsern im selben Microsoft Sentinel-Arbeitsbereich koexistieren können.

Es wird empfohlen, integrierte Parser beim Entwickeln von ASIM-Inhalten zu verwenden. Vom Arbeitsbereich bereitgestellte Parser werden in der Regel während des Parser-Entwicklungsprozesses verwendet oder um geänderte Versionen von integrierten Parsern bereitzustellen, wie in der Verwaltung von Parsern beschrieben.

Verwenden von Arbeitsbereichsparsern

Bei der Verwendung von Arbeitsbereichsparsern in Ihren Abfragen lautet im<schema> der vereinheitlichende Parsername, wobei <schema> für das spezifische Schema steht, dem es dient.

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

Schema Vereinheitlichen des Parsers
Alert-Ereignis imAlertEvent
Überwachungsereignis imAuditEvent
Authentifizierung imAuthentication
DHCP-Ereignis imDhcpEvent
DNS imDns
Dateiereignis imFileEvent
Netzwerksitzung imNetworkSession
Prozessereignis imProcessCreate
imProcessTerminate
Registrierungsereignis imRegistry
Benutzerverwaltung imUserManagement
Websitzung imWebSession

Verwalten von im Arbeitsbereich bereitgestellten vereinheitlichenden Parsern

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

Wenn Sie einen benutzerdefinierten Parser hinzufügen möchten, fügen Sie der union-Anweisung in dem im Arbeitsbereich bereitgestellten vereinheitlichenden Parser eine Zeile hinzu, die auf den neuen benutzerdefinierten Parser verweist.

Fügen Sie sowohl einen benutzerdefinierten Filterparser als auch einen parameterlosen benutzerdefinierten Parser hinzu. Die Syntax der hinzuzufügenden Zeile variiert je nach 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)
Audit-Ereignis 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)
Benutzerverwaltung 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 weiteren Parser hinzufügen, muss am Ende der vorherigen Zeile ein Komma hinzugefügt werden.

Das folgende Beispiel zeigt den vereinheitlichenden DNS-Filterparser nach dem Hinzufügen des benutzerdefinierten zusätzlichen Parsers (added_parser):

  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 modifizierten Version eines im Arbeitsbereich bereitgestellten Parsers

Im Arbeitsbereich bereitgestellte Parser können von Microsoft Sentinel-Benutzern direkt geändert werden. Erstellen Sie einen Parser auf der Grundlage des ursprünglichen Parsers, kommentieren Sie den ursprünglichen Parser aus, und fügen Sie dann Ihre modifizierte Version dem im Arbeitsbereich bereitgestellten vereinheitlichenden Parser hinzu.

Der folgende Code zeigt beispielsweise einen vereinheitlichenden DNS-Filterparser, nachdem der Parser vimDnsAzureFirewall durch eine modifizierte Version ersetzt 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) ))),
    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: