Analyseurs déployés de l’espace de travail ASIM (Advanced Security Information Model)

Les analyseurs ASIM (Advanced Security Information Model) déployés dans l’espace de travail sont utilisés pour prendre en charge le développement et la modification des analyseurs ASIM.

Déployer des analyseurs d’espace de travail

ASIM prend également en charge le déploiement d’analyseurs dans des espaces de travail spécifiques à partir de GitHub, à l’aide d’un modèle ARM. Les analyseurs déployés par l’espace de travail sont utilisés pour le développement et la gestion de l’analyseur ASIM. Les analyseurs déployés par l’espace de travail sont fonctionnellement équivalents, mais ont des conventions d’affectation de noms légèrement différentes, ce qui permet aux deux jeux d’analyseurs de coexister avec des analyseurs intégrés dans le même Microsoft Sentinel’espace de travail.

Il est recommandé d’utiliser des analyseurs intégrés lors du développement de contenu ASIM. Les analyseurs déployés par l’espace de travail sont généralement utilisés pendant le processus de développement de l’analyseur ou pour fournir des versions modifiées des analyseurs intégrés, comme décrit dans Gestion des analyseurs

Utiliser des analyseurs d’espace de travail

Lorsque vous utilisez des analyseurs d’espace de travail dans vos requêtes, le nom de l’analyseur d’unification est im<schema>, où <schema> signifie le schéma spécifique qu’il sert.

Le tableau suivant répertorie les analyseurs d’unification disponibles :

Schéma Analyseur d’unification
Événement d’alerte imAlertEvent
Événement d’audit imAuditEvent
Authentification imAuthentication
Événement DHCP imDhcpEvent
Dns imDns
Événement de fichier imFileEvent
Session réseau imNetworkSession
Événement de processus imProcessCreate
imProcessTerminate
Événement de registre imRegistry
User Management imUserManagement
Web Session imWebSession

Gérer les analyseurs d’unification déployés par l’espace de travail

Ajouter un analyseur personnalisé à un analyseur d’unification déployé dans un espace de travail

Pour ajouter un analyseur personnalisé, insérez une ligne à l’instruction dans l’analyseur union d’unification déployé dans l’espace de travail qui fait référence au nouvel analyseur personnalisé.

Veillez à ajouter un analyseur personnalisé de filtrage et un analyseur personnalisé sans paramètre. La syntaxe de la ligne à ajouter est différente pour chaque schéma :

Schéma Analyseur Ligne à ajouter
Événement d’alerte 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)
Authentification 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)

Lorsque vous ajoutez un analyseur supplémentaire à un analyseur d’unification, veillez à ajouter une virgule à la fin de la ligne précédente.

Par exemple, l’exemple suivant montre l’analyseur d’unification de filtrage DNS, après avoir ajouté le personnalisé 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)

Utiliser une version modifiée d’un analyseur déployé dans un espace de travail

Microsoft Sentinel utilisateurs peuvent modifier directement les analyseurs déployés dans l’espace de travail. Créez un analyseur basé sur l’original, commentez l’original, puis ajoutez votre version modifiée à l’analyseur d’unification déployé dans l’espace de travail.

Par exemple, le code suivant montre un analyseur d’unification de filtrage DNS, après avoir remplacé l’analyseur vimDnsAzureFirewall par une version modifiée :

  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)

Pour plus d’informations, reportez-vous aux rubriques suivantes :