Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 agenta | imAgentEvent |
| Zdarzenie alarmowe | imAlertEvent |
| Jednostka zasobu | imAssetEntity |
| Zdarzenie inspekcji | imAuditEvent |
| Uwierzytelnianie | imAuthentication |
| Zdarzenie DHCP | imDhcpEvent |
| DNS | imDns |
| Zdarzenie e-mail | imEmailEvent |
| Zdarzenie dotyczące pliku | imFileEvent |
| Sesja sieciowa | imNetworkSession |
| Zdarzenie procesowe | imProcessEvent 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 |
|---|---|---|
| AgentEvent | imAgentEvent |
_parser_name_ (starttime=starttime, endtime=endtime, agentid_has_any=agentid_has_any, agentname_has_any=agentname_has_any, username_has_any=username_has_any, pack=pack) |
| AlertEvent | imAlertEvent |
_parser_name_ (starttime=starttime, endtime=endtime, ipaddr_has_any_prefix=ipaddr_has_any_prefix, hostname_has_any=hostname_has_any, username_has_any=username_has_any, attacktactics_has_any=attacktactics_has_any, attacktechniques_has_any=attacktechniques_has_any, threatcategory_has_any=threatcategory_has_any, alertverdict_has_any=alertverdict_has_any, eventseverity_has_any=eventseverity_has_any, pack=pack) |
| AssetEntity | imAssetEntity |
_parser_name_ (starttime=starttime, endtime=endtime, entityid_has_any=entityid_has_any, entityname_has_any=entityname_has_any, assettype_in=assettype_in, path_has_any=path_has_any, assetowner_has_any=assetowner_has_any, entitysource_has_any=entitysource_has_any, pack=pack) |
| Zdarzenie audytu | imAuditEvent |
_parser_name_ (starttime=starttime, endtime=endtime, srcipaddr_has_any_prefix=srcipaddr_has_any_prefix, actorusername_has_any=actorusername_has_any, operation_has_any=operation_has_any, eventtype_in=eventtype_in, eventresult=eventresult, object_has_any=object_has_any, newvalue_has_any=newvalue_has_any, pack=pack) |
| Uwierzytelnianie | imAuthentication |
_parser_name_ (starttime=starttime, endtime=endtime, username_has_any=username_has_any, targetappname_has_any=targetappname_has_any, srcipaddr_has_any_prefix=srcipaddr_has_any_prefix, srchostname_has_any=srchostname_has_any, eventtype_in=eventtype_in, eventresultdetails_in=eventresultdetails_in, eventresult=eventresult, pack=pack) |
| DhcpEvent | imDhcpEvent |
_parser_name_ (starttime=starttime, endtime=endtime, srcipaddr_has_any_prefix=srcipaddr_has_any_prefix, srchostname_has_any=srchostname_has_any, srcusername_has_any=srcusername_has_any, eventresult=eventresult, disabled=disabled, pack=pack) |
| DNS | imDns |
_parser_name_ (starttime=starttime, endtime=endtime, srcipaddr=srcipaddr, domain_has_any=domain_has_any, responsecodename=responsecodename, response_has_ipv4=response_has_ipv4, response_has_any_prefix=response_has_any_prefix, eventtype=eventtype, pack=pack) |
| EmailEvent | imEmailEvent |
_parser_name_ (starttime=starttime, endtime=endtime, ipaddr_has_any_prefix=ipaddr_has_any_prefix, emailfromaddress_has_any=emailfromaddress_has_any, emailrecipient_has_any=emailrecipient_has_any, emailsubject_has_any=emailsubject_has_any, emaildirection_in=emaildirection_in, emaildeliverylocation_in=emaildeliverylocation_in, eventresult=eventresult, pack=pack) |
| FileEvent | imFileEvent |
_parser_name_ (starttime=starttime, endtime=endtime, eventtype_in=eventtype_in, srcipaddr_has_any_prefix=srcipaddr_has_any_prefix, actorusername_has_any=actorusername_has_any, targetfilepath_has_any=targetfilepath_has_any, srcfilepath_has_any=srcfilepath_has_any, hashes_has_any=hashes_has_any, dvchostname_has_any=dvchostname_has_any, disabled=disabled, pack=pack) |
| NetworkSession | imNetworkSession |
_parser_name_ (starttime=starttime, endtime=endtime, srcipaddr_has_any_prefix=srcipaddr_has_any_prefix, dstipaddr_has_any_prefix=dstipaddr_has_any_prefix, ipaddr_has_any_prefix=ipaddr_has_any_prefix, dstportnumber=dstportnumber, hostname_has_any=hostname_has_any, dvcaction=dvcaction, eventresult=eventresult, pack=pack) |
| ProcessEvent | imProcessEvent |
_parser_name_ (starttime=starttime, endtime=endtime, commandline_has_any=commandline_has_any, commandline_has_all=commandline_has_all, commandline_has_any_ip_prefix=commandline_has_any_ip_prefix, actingprocess_has_any=actingprocess_has_any, targetprocess_has_any=targetprocess_has_any, parentprocess_has_any=parentprocess_has_any, actorusername_has=actorusername_has, targetusername_has=targetusername_has, dvcipaddr_has_any_prefix=dvcipaddr_has_any_prefix, dvchostname_has_any=dvchostname_has_any, hashes_has_any=hashes_has_any, eventtype=eventtype) |
| RegistryEvent | imRegistry |
_parser_name_ (starttime=starttime, endtime=endtime, eventtype_in=eventtype_in, actorusername_has_any=actorusername_has_any, registrykey_has_any=registrykey_has_any, registryvalue_has_any=registryvalue_has_any, registrydata_has_any=registrydata_has_any, dvchostname_has_any=dvchostname_has_any, disabled=disabled, pack=pack) |
| Zarządzanie użytkownikami | imUserManagement |
_parser_name_ (starttime=starttime, endtime=endtime, srcipaddr_has_any_prefix=srcipaddr_has_any_prefix, targetusername_has_any=targetusername_has_any, actorusername_has_any=actorusername_has_any, eventtype_in=eventtype_in, pack=pack) |
| WebSession | imWebSession |
_parser_name_ (starttime=starttime, endtime=endtime, srcipaddr_has_any_prefix=srcipaddr_has_any_prefix, ipaddr_has_any_prefix=ipaddr_has_any_prefix, url_has_any=url_has_any, httpuseragent_has_any=httpuseragent_has_any, eventresultdetails_in=eventresultdetails_in, eventresult=eventresult, eventresultdetails_has_any=eventresultdetails_has_any, disabled=disabled, pack=pack) |
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)