Parsery wdrożone w obszarze roboczym zaawansowanego modelu informacji o zabezpieczeniach (ASIM)

Analizatory składni ASIM wdrożone w obszarze roboczym służą do tworzenia i modyfikowania analizatorów składni ASIM.

Wdrażanie analizatorów obszaru roboczego

ASIM obsługuje również wdrażanie parserów do określonych obszarów roboczych z serwisu GitHub przy użyciu szablonu ARM. Parsery wdrożone w obszarze roboczym są używane do tworzenia parserów ASIM i zarządzania nimi. Analizatory wdrożone w obszarze roboczym są równoważne pod względem funkcjonalnym, ale mają nieco inne konwencje nazewnictwa, co pozwala obu zestawom analizatorów współistnieć z wbudowanymi analizatorami w tym samym obszarze roboczym Microsoft Sentinel.

Zaleca się używanie wbudowanych analizatorów podczas tworzenia zawartości ASIM. Analizatory wdrożone w obszarze roboczym są zwykle używane podczas procesu opracowywania analizatora lub do udostępniania zmodyfikowanych wersji wbudowanych analizatorów zgodnie z opisem w sekcji zarządzanie analizatorami

Użyj analizatorów obszaru roboczego

W przypadku używania parserów obszaru roboczego w zapytaniach ujednolicona nazwa parsera to im<schema>, gdzie <schema> oznacza konkretny obsługiwany schemat.

W poniższej tabeli wymieniono dostępne analizatory ujednolicenia:

Schemat Parser ujednolicający
Zdarzenie alarmowe imAlertEvent
Zdarzenie inspekcji imAuditEvent
Uwierzytelnianie imAuthentication
Zdarzenie DHCP imDhcpEvent
DNS imDns
Zdarzenie dotyczące pliku imFileEvent
Sesja sieciowa imNetworkSession
Zdarzenie procesowe imProcessCreate
imProcessTerminate
Zdarzenie w rejestrze imRegistry
Zarządzanie użytkownikami imUserManagement
Sesja internetowa imWebSession

Zarządzanie analizatorami ujednolicenia wdrożonymi w obszarze roboczym

Dodaj niestandardowy parser do parsera ujednolicającego wdrożonego w obszarze roboczym

Aby dodać analizator niestandardowy, wstaw wiersz do instrukcji union we wdrożonym w obszarze roboczym ujednolicającym analizatorze, który odwołuje się do nowego analizatora niestandardowego.

Pamiętaj, aby dodać zarówno niestandardowy parser filtrujący, jak i niestandardowy parser bez parametrów. Składnia wiersza do dodania jest inna dla każdego schematu:

Schemat Parser Linia do dodania
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)
Zdarzenie audytu imAuditEvent _parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, eventtype_in, eventresult, actorusername_has_any, operation_has_any, object_has_any, newvalue_has_any)
Uwierzytelnianie 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)
Zarządzanie użytkownikami 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)

Podczas dodawania dodatkowego analizatora do analizatora ujednolicenia upewnij się, że na końcu poprzedniego wiersza dodano przecinek.

Na przykład poniższy przykład pokazuje parser ujednolicający filtrowanie DNS po dodaniu niestandardowego 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)

Używanie zmodyfikowanej wersji analizatora wdrożonego w obszarze roboczym

Użytkownicy Microsoft Sentinel mogą bezpośrednio modyfikować parsery wdrożone w obszarze roboczym. Utwórz parser na podstawie oryginału, zakomentuj oryginał, a następnie dodaj zmodyfikowaną wersję do parsera unifikującego wdrożonego w obszarze roboczym.

Na przykład poniższy kod pokazuje parser ujednolicający filtrowanie DNS po zastąpieniu parsera vimDnsAzureFirewall jego zmodyfikowaną wersją:

  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)