Advanced Security Information Model (ASIM) パーサー (パブリック プレビュー) の管理
Advanced Security Information Model (ASIM) ユーザーは、クエリでテーブル名の代わりに統一パーサーを使用して、データを正規化された形式で表示し、単一のクエリでスキーマに関連するすべてのデータを取得します。 各統一パーサーは、各ソースの特定の詳細を処理する複数のソース固有のパーサーを使用します。
パーサーが ASIM アーキテクチャにどのように適合するかを理解するには、ASIM アーキテクチャの図を参照してください。
次の処理を行うために、各統一パーサーで使用されるソース固有のパーサーを管理しなければならない場合があります。
カスタムのソース固有のパーサーを統一パーサーに追加する。
統一パーサーによって使用される組み込みのソース固有のパーサーをカスタムのソース固有のパーサーに置き換える。 組み込みパーサーを置き換えるのは、次のような場合です。
統一パーサーで既定で使用されるパーサー以外のバージョンの組み込みパーサーを使用する。
統一パーサーによって使用されるソース固有のパーサーのバージョンを保持することによって自動更新を阻止する。
組み込みパーサーの修正バージョンを使用する。
ソース固有のパーサーを構成する。これによって、たとえば、パーサーに関連する情報を送信するソースを定義します。
この記事では、組み込みの統一 ASIM パーサーを使用するのか、ワークスペースにデプロイされた統一パーサーを使用するのかに関係なく、パーサーの管理方法を示します。
重要
現在、ASIM はプレビュー段階です。 Azure プレビューの追加使用条件には、ベータ版、プレビュー版、またはまだ一般提供されていない Azure 機能に適用される追加の法律条項が含まれています。
前提条件
この記事の手順では、ソース固有のすべてのパーサーが既に Microsoft Sentinel ワークスペースにデプロイされていることを前提とします。
詳細については、ASIM パーサーの開発に関する記事を参照してください。
組み込みの統一パーサーを管理する
ワークスペースのセットアップ
Microsoft Sentinel ユーザーは、組み込みの統一パーサーを編集できません。 代わりに、次のメカニズムを使用して、組み込みの統一パーサーの動作を変更します。
ソース固有のパーサーの追加をサポートするために、ASIM は統一カスタム パーサーを使用します。 このようなカスタム パーサーはワークスペースにデプロイされるため、編集可能です。 組み込みの統一パーサーにより、これらのカスタム パーサーが自動的に選択されます (存在する場合)。
サポートされているすべてのスキーマのために、初期の空の統一カスタム パーサーを Microsoft Sentinel ワークスペースにデプロイできます。あるいは、特定のスキーマのために個別に行うこともできます。 詳細については、Microsoft Sentinel GitHub リポジトリで「初期の空の ASIM カスタム統一パーサーをデプロイする」を参照してください。
組み込みのソース固有パーサーの除外をサポートするために、ASIM はウォッチリストを使用します。 Microsoft Sentinel GitHub リポジトリから、Microsoft Sentinel ワークスペースにウォッチリストをデプロイします。
組み込みパーサーとカスタム パーサーのソースの種類を定義するために、ASIM ではウォッチリストを使用します。 Microsoft Sentinel GitHub リポジトリから、Microsoft Sentinel ワークスペースにウォッチリストをデプロイします。
組み込みの統一パーサーにカスタム パーサーを追加する
カスタム パーサーを追加するには、カスタム統一パーサーに新しいカスタム パーサーを参照する行を挿入します。
必ず、フィルタリング カスタム パーサーとパラメーターレス カスタム パーサーの両方を追加してください。 パーサーを編集する方法の詳細については、Azure Monitor ログ クエリでの関数に関する記事を参照してください。
追加する行の構文は、スキーマごとに異なります。
スキーマ | パーサー | 追加する行 |
---|---|---|
DNS | Im_DnsCustom |
_parser_name_ (starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype) |
NetworkSession | Im_NetworkSessionCustom |
_parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, dstipaddr_has_any_prefix, dstportnumber, hostname_has_any, dvcaction, eventresult) |
WebSession | Im_WebSessionCustom |
_parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, url_has_any, httpuseragent_has_any, eventresultdetails_in, eventresult) |
既にパーサーを参照している統一カスタム パーサーに新たなパーサーを追加する場合は、必ず、前の行の末尾にコンマを追加してください。
たとえば、次のコードは、added_parser
を追加した後のカスタム統一パーサーを示しています。
union isfuzzy=true
existing_parser(starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype),
added_parser(starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)
組み込みパーサーの修正バージョンを使用する
既存の組み込みのソース固有のパーサーを修正するには:
オリジナルのパーサーに基づいてカスタム パーサーを作成し、それを組み込みパーサーに追加します。
レコードを
ASim Disabled Parsers
ウォッチリストに追加します。CallerContext
値をExclude<parser name>
と定義します。ここで<parser name>
はパーサーを除外する統一パーサーの名前です。SourceSpecificParser
値をExclude<parser name>
と定義します。ここで<parser name>
は除外するパーサーの名前で、バージョン指定子は使用しません。
たとえば、Azure Firewall DNS パーサーから除外するには、次のレコードをウォッチリストに追加します。
CallerContext | SourceSpecificParser |
---|---|
Exclude_Im_Dns |
Exclude_Im_Dns_AzureFirewall |
組み込みパーサーの自動更新を阻止する
組み込みのソース固有のパーサーの自動更新を阻止するには、次のプロセスを使用します。
_Im_Dns_AzureFirewallV02
など、使用する組み込みパーサーのバージョンをカスタム統一パーサーに追加します。 詳細については、前述の「組み込みの統一パーサーにカスタム パーサーを追加する」を参照してください。組み込みパーサーの例外を追加します。 たとえば、自動更新を完全にオプトアウトして、大量の組み込みパーサーを除外する場合は、次の項目を追加します。
CallerContext
のすべてのパーサーを除外する、SourceSpecificParser
フィールドとしてAny
を含むレコード。- すべての組み込みパーサーを除外する、CallerContext および
SourceSpecificParser
フィールド内のAny
に関するレコード。
詳細については、「組み込みパーサーの修正バージョンを使用する」を参照してください。
ワークスペースにデプロイされた統一パーサーを管理する
ワークスペースにデプロイされた統一パーサーにカスタム パーサーを追加する
カスタム パーサーを追加するには、ワークスペースにデプロイされた統一パーサーの union
ステートメントに新しいカスタム パーサーを参照する行を挿入します。
必ず、フィルタリング カスタム パーサーとパラメーターレス カスタム パーサーの両方を追加してください。 追加する行の構文は、スキーマごとに異なります。
スキーマ | パーサー | 追加する行 |
---|---|---|
認証 | ImAuthentication |
_parser_name_ (starttime, endtime, targetusername_has) |
DNS | ImDns |
_parser_name_ (starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype) |
ファイル イベント | imFileEvent |
_parser_name_ |
ネットワーク セッション | imNetworkSession |
_parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, dstipaddr_has_any_prefix, dstportnumber, url_has_any, httpuseragent_has_any, hostname_has_any, dvcaction, eventresult) |
プロセス イベント | - imProcess - imProcessCreate - imProcessTerminate |
_parser_name_ |
レジストリ イベント | imRegistry |
_parser_name_ |
Web セッション | imWebSession |
_parser_name_ parser (starttime, endtime, srcipaddr_has_any, 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)
ソース固有のパーサーに関連するソースを構成する
パーサーによっては、パーサーに関連するソースの一覧を更新する必要があります。 たとえば、Syslog データを使用するパーサーでは、どの Syslog イベントがパーサーに関連しているかを判別できない場合があります。 このようなパーサーでは、Sources_by_SourceType
ウォッチリストを使用して、パーサーに関連する情報をどのソースが送信するのかを判別できます。 このような解析では、関連するソースごとのレコードをウォッチリストに追加します。
SourceType
フィールドは、パーサーのドキュメントで指定されているパーサー固有の値に設定します。Source
フィールドは、イベントで使用されるソースの識別子に設定します。 場合によっては、Syslog などの元のテーブルに対してクエリを実行して、正しい値を判断する必要があります。
システムに Sources_by_SourceType
ウォッチリストがデプロイされていない場合は、Microsoft Sentinel GitHub リポジトリから Microsoft Sentinel ワークスペースにウォッチリストをデプロイします。
次のステップ
この記事では、Advanced Security Information Model (ASIM) パーサーの管理について説明します。
ASIM パーサーの詳細については、次を参照してください。
ASIM 全般の詳細については、次を参照してください。
- Microsoft Sentinel の正規化パーサーと正規化されたコンテンツに関する詳しいウェビナーをこちらでご視聴いただけます。スライドはこちらでご確認いただけます。
- Advanced Security Information Model (ASIM) の概要
- Advanced Security Information Model (ASIM) スキーマ
- Advanced Security Information Model (ASIM) コンテンツ