高度なセキュリティ情報モデル (ASIM) パーサーを管理する

高度なセキュリティ情報モデル (ASIM) ユーザーは、クエリでテーブル名ではなく 統合パーサーを 使用して、正規化された形式でデータを表示し、スキーマに関連するすべてのデータを 1 つのクエリで取得します。 各統合パーサーでは、各ソースの特定の詳細を処理する複数のソース固有のパーサーが使用されます。

パーサがASIMアーキテクチャ内でどのように位置づけられるかを理解するには、 ASIMアーキテクチャ図のASIMコンポーネントセクションを参照してください。

各統合パーサーで使用されるソース固有のパーサーを、次の目的で管理する必要がある場合があります。

  • 統合パーサーに、ソース固有のカスタム パーサーを追加します。

  • 統合パーサーによって使用される組み込みのソース固有パーサーを、カスタムのソース固有パーサーに置き換えます。 組み込みパーサーを置き換えるのは、次のような場合です。

    • 統合パーサーで既定で使用されるパーサー以外の組み込みパーサーのバージョンを使用します。

    • 統合パーサーで使用されるソース固有のパーサーのバージョンを保持することで、自動更新を防止します。

    • 組み込みパーサーの変更されたバージョンを使用します。

  • ソース固有のパーサーを構成します。たとえば、パーサーに関連する情報を送信するソースを定義します。

この記事では、パーサーを統合することによって使用されるソース固有のパーサーを管理する手順について説明します。

前提条件

この記事の手順では、ソース固有のすべてのパーサーが既に Microsoft Sentinel ワークスペースにデプロイされていることを前提としています。

展開手順については、「 Develop ASIM parsers」の「Deploy parsers」セクションをご覧ください。

組み込みの統合パーサーを管理する

組み込みの統合パーサーは直接編集できないため、カスタム統合パーサーをデプロイし、ソース固有のパーサーを追加または除外し、ウォッチリストを使用してパーサーの動作を制御することで、パーサーを管理します。

ワークスペースを設定する

Microsoft Sentinelユーザーは組み込みの統合パーサーを編集できません。 代わりに、次のメカニズムを使用して、組み込みの統合パーサーの動作を変更します。

組み込みの統合パーサーにカスタム パーサーを追加する

カスタム パーサーを追加するには、カスタム統合パーサーに行を挿入して、新しいカスタム パーサーを参照します。

フィルタリングのカスタムパーサー(フィルタリングパラメータを受け入れてパフォーマンスを最適化するもの)と、パラメータレスのカスタムパーサー(フィルタリングパラメータなしですべての結果を返すもの)の両方を追加してください。 パーサーを編集する方法の詳細については、「ログ クエリの監視Azure関数」を参照してください。

追加する行の構文はスキーマごとに異なります。 以下の表は、Microsoft Sentinelリポジトリ内の対応するParsers/ASim<SchemaName>/Parsers/im<SchemaName>.yamlファイルで定義されたパラメータParserParamsを使用しています。 _parser_name_をフィルタリングソース固有のパーサー関数名に置き換えてください。 宣言の順序が異なる場合、値を間違ったパラメータに割り当てないように、名前付き引数を使用してください。

行を追加する前に、カスタムの統一関数が参照パラメータを宣言し、ソース固有のパーサーがそれを受け入れているかを確認してください。 ソース固有のパーサーが対応している場合にのみ pack=pack 転送してください。 テーブルで disabled=false を設定し、カスタム パーサーを有効にします。 パーサーを無効化または再有効化するには、カスタム統合関数内のソース固有のパーサー呼び出しで disabled 引数を true または false に変更してください。

スキーマ パーサー 追加する行
エージェントイベント Im_AgentEventCustom _parser_name_ (starttime=starttime, endtime=endtime, agentid_has_any=agentid_has_any, agentname_has_any=agentname_has_any, username_has_any=username_has_any, disabled=false, pack=pack)
アラートイベント Im_AlertEventCustom _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, disabled=false, pack=pack)
アセットエンティティ Im_AssetEntityCustom _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, disabled=false, pack=pack)
AuditEvent Im_AuditEventCustom _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, disabled=false, pack=pack)
認証 Im_AuthenticationCustom _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, disabled=false, pack=pack)
DhcpEvent Im_DhcpEventCustom _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=false, pack=pack)
DNS Im_DnsCustom _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, disabled=false, pack=pack)
EmailEvent Im_EmailEventCustom _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, disabled=false, pack=pack)
FileEvent Im_FileEventCustom _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=false, pack=pack)
NetworkSession Im_NetworkSessionCustom _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, disabled=false, pack=pack)
ProcessEvent Im_ProcessEventCustom _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, disabled=false)
レジストリ イベント Im_RegistryEventCustom _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=false, pack=pack)
ユーザー管理 Im_UserManagementCustom _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, disabled=false, pack=pack)
WebSession Im_WebSessionCustom _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=false, pack=pack)

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

例えば、以下のコードはadded_parserを加えた後のIm_DnsCustomを示しています。 この例のソース固有のパーサーは disabled と packの両方を受け入れ、カスタム統合関数は両方のパラメータを宣言します。 union isfuzzy=true文は既存パーサと新しいパーサの結果を組み合わせたものです。 別のソースが解決した際にユニオンソースの欠落を許容できますが、すべてのクエリエラーを抑制したりパラメータ転送の検証を行うわけではありません。

union isfuzzy=true
existing_parser(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, disabled=disabled, pack=pack),
added_parser(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, disabled=disabled, pack=pack)

組み込みパーサーの変更されたバージョンを使用する

既存の組み込みのソース固有パーサーを変更するには:

  1. 元のパーサーに基づいてカスタム パーサーを作成し、 組み込みの統合パーサーにカスタム パーサーを追加します。 ワークスペースでデプロイされた ASIM パーサー バージョンのパーサーを開始点として使用できます。

  2. レコードを ASim Disabled Parsers ウォッチリストに追加します。

  3. CallerContext値をExclude<parser name>として定義します。ここで、<parser name>はパーサーを除外する統合パーサーの名前です。

  4. SourceSpecificParser値Exclude<parser name>を定義します。ここで、<parser name>は、バージョン指定子を指定せずに、除外するパーサーの名前です。

たとえば、Azure Firewall DNS パーサーを除外するには、ウォッチリストに次のレコードを追加します。

パーサーのデプロイ CallerContext SourceSpecificParser
読み取り専用の組み込み _ASim_Dns Exclude_ASim_Dns Exclude_ASim_Dns_AzureFirewall
読み取り専用の組み込み _Im_Dns Exclude_Im_Dns Exclude_Im_Dns_AzureFirewall
ワークスペースにデプロイ済み ASimDns ExcludeASimDns ExcludeASimASimDnsAzureFirewall

アンダースコアなしのタイトル-ケース除外キーは、ワークスペースでデプロイされたパーサー専用です。

組み込みパーサーの自動更新を防止する

組み込みのソース固有パーサーを特定のバージョンにピン留めし、自動更新を防止するには、次の手順を実行します。

  1. _Im_Dns_AzureFirewallV02など、使用する組み込みのパーサー バージョンをカスタム統合パーサーに追加します。 詳細については、「 組み込みの統合パーサーにカスタム パーサーを追加する」を参照してください。

  2. 組み込みパーサーの例外を追加します。 たとえば、自動更新から完全にオプトアウトし、多数の組み込みパーサーを除外する場合は、次のように追加します。

  • Any フィールドに SourceSpecificParser を持ち、CallerContext のすべてのパーサーを除外するレコード。
  • 組み込みパーサーをすべて除外するための、CallerContext の Any と SourceSpecificParser フィールド内のレコード。

ウォッチリストを使った組み込みパーサーの除外については、「 組み込みパーサーの修正版を使用する 」セクションを参照してください。

ソース固有のパーサーに関連するソースを構成する

一部のパーサーでは、パーサーに関連するソースの一覧を更新する必要があります。 たとえば、Syslog データを使用するパーサーでは、パーサーに関連する Syslog イベントを特定できない場合があります。 このようなパーサーは、 Sources_by_SourceType ウォッチリストを使用して、パーサーに関連する情報を送信するソースを決定できます。 このような解析では、関連する各ソースのレコードをウォッチリストに追加します。

  • SourceType フィールドを、パーサー ドキュメントで指定されたパーサー固有の値に設定します。
  • Source フィールドを、イベントで使用されるソースの識別子に設定します。 Syslog などの元のテーブルに対してクエリを実行して、正しい値を判断する必要がある場合があります。

Sources_by_SourceTypeウォッチリストがシステムにデプロイされていない場合は、GitHubの ASIM ウォッチリストデプロイ テンプレートからMicrosoft Sentinel ワークスペースにウォッチリストをデプロイします。

ASIM パーサーの詳細については、以下を参照してください。

一般的な ASIM の詳細については、次を参照してください。