高度なセキュリティ情報モデル (ASIM) ワークスペースでデプロイされたパーサー

ワークスペースにデプロイされた高度なセキュリティ情報モデル (ASIM) パーサーは、ASIM パーサーの開発と変更をサポートするために使用されます。

ワークスペース パーサーをデプロイする

また、ASIM では、ARM テンプレートを使用して GitHub から特定のワークスペースにパーサーをデプロイすることもできます。 ワークスペースにデプロイされたパーサーは、ASIM パーサーの開発と管理に使用されます。 ワークスペースでデプロイされたパーサーは機能的には同等ですが、名前付け規則が若干異なります。これにより、両方のパーサー セットが同じMicrosoft Sentinel ワークスペース内の組み込みパーサーと共存できます。

ASIM コンテンツを開発するときは、組み込みのパーサーを使用することをお勧めします。 ワークスペースにデプロイされたパーサーは、通常、パーサー開発プロセス中に使用されるか、「パーサーの管理」で説明されているように、組み込みパーサーの変更されたバージョンを提供するために使用されます

ワークスペース パーサーを使用する

クエリでワークスペース パーサーを使用する場合、統一パーサー名は im<schema>されます。ここで、 <schema> は、それが提供する特定のスキーマを表します。

次の表に、使用可能な統合パーサーの一覧を示します。

Schema パーサーの統合
アラート イベント imAlertEvent
監査イベント imAuditEvent
認証 imAuthentication
DHCP イベント imDhcpEvent
Dns imDns
ファイル イベント imFileEvent
ネットワーク セッション imNetworkSession
プロセス イベント imProcessCreate
imProcessTerminate
レジストリ イベント imRegistry
User Management imUserManagement
Web セッション imWebSession

ワークスペースでデプロイされた統合パーサーを管理する

ワークスペースでデプロイされた統合パーサーにカスタム パーサーを追加する

カスタム パーサーを追加するには、新しいカスタム パーサーを参照するワークスペースでデプロイされた統合パーサーの union ステートメントに行を挿入します。

フィルター処理カスタム パーサーとパラメーターのないカスタム パーサーの両方を必ず追加してください。 追加する行の構文は、スキーマごとに異なります。

Schema パーサー 追加する行
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)
認証 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)

統合パーサーに追加のパーサーを追加する場合は、前の行の末尾にコンマを追加してください。

たとえば、次の例では、カスタム added_parserを追加した後の DNS フィルタリング統合パーサーを示します。

  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)

ワークスペースにデプロイされたパーサーの変更されたバージョンを使用する

Microsoft Sentinelユーザーは、ワークスペースにデプロイされたパーサーを直接変更できます。 元のに基づいてパーサーを作成し、元のをコメントアウトしてから、変更したバージョンをワークスペースでデプロイされた統合パーサーに追加します。

たとえば、次のコードは、 vimDnsAzureFirewall パーサーを変更されたバージョンに置き換えた、DNS フィルタリング統合パーサーを示しています。

  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)

詳細については、以下を参照してください: