Microsoft Sentinelでウォッチリストを使用してクエリまたは検出ルールを構築する

ウォッチリスト データを、joinlookupなどの Kusto 表形式演算子とMicrosoft Sentinelデータと関連付けます。 ウォッチリストを作成するときは、 SearchKey を定義します。 検索キーは、ウォッチリスト内の列の名前で、他のデータとの結合または頻繁な検索オブジェクトとして使用すると想定されます。

最適なクエリ パフォーマンスを得るには、クエリ内の結合のキーとして SearchKey を使用します。

重要

2027 年 3 月 31 日以降、Microsoft SentinelはAzure portalでサポートされなくなり、Microsoft Defender ポータルでのみ使用できるようになります。 Azure portalでMicrosoft Sentinelを使用しているすべてのお客様は、Defender ポータルにリダイレクトされ、Defender ポータルでのみMicrosoft Sentinelを使用します

Azure portalでMicrosoft Sentinelを引き続き使用している場合は、スムーズな移行を確保し、Microsoft Defenderによって提供される統合セキュリティ操作エクスペリエンスを最大限に活用するために、Defender ポータルへの移行の計画を開始することをお勧めします。

ウォッチリストを使用してクエリを構築する

検索クエリでウォッチリストを使用するには、_GetWatchlist('watchlist-name') 関数を使用し、結合のキーとして SearchKey を使用する Kusto クエリを記述します。

  1. Defender ポータルでMicrosoft Sentinelする場合は、[Microsoft Sentinel>Configuration>Watchlist] を選択します。 Azure portalの [Microsoft Sentinel] で、[構成] で [ウォッチリスト] を選択します。

  2. 使用するウォッチリストを選択します。

  3. [ ログで表示] を選択します

    クエリでウォッチリストを使用する方法を示すスクリーンショット。

  4. [ 結果 ] タブを確認します。ウォッチリスト内の項目は、クエリに対して自動的に抽出されます。

    次の例は 、[名前] フィールドと [ IP アドレス ] フィールドの抽出結果を示しています。 SearchKey は、独自の列として表示されます。

    ウォッチリスト フィールドを含むクエリを示すスクリーンショット。

    クエリのタイムスタンプは、クエリ UI とスケジュールされたアラートの両方で無視されます。

  5. _GetWatchlist('watchlist-name') 関数を使用し、結合のキーとして SearchKey を使用するクエリを記述します。

    たとえば、次のクエリ例では、Heartbeat テーブルのRemoteIPCountry列を、mywatchlist という名前のウォッチリストに対して定義された検索キーと結合します。

    Heartbeat
    | lookup kind=leftouter _GetWatchlist('mywatchlist') 
     on $left.RemoteIPCountry == $right.SearchKey
    

    次の図は、Log Analytics でのこのクエリ例の結果を示しています。

    ルックアップとしてのウォッチリストに対するクエリのスクリーンショット。

ウォッチリストを使用して分析ルールを作成する

分析ルールでウォッチリストを使用するには、クエリの _GetWatchlist('watchlist-name') 関数を使用してルールを作成します。

  1. [ 構成] で[分析] を選択 します

  2. [ 作成 ] を選択し、作成するルールの種類を選択します。

  3. [ 全般 ] タブで、適切な情報を入力します。

  4. [ ルール ロジックの設定 ] タブの [ ルール クエリ ] で、クエリで _GetWatchlist('<watchlist>') 関数を使用します。

    たとえば、次の値を持つ CSV ファイルから作成した ipwatchlist という名前のウォッチリストがあるとします。

    IPAddress,Location
    10.0.100.11,Home
    172.16.107.23,Work
    10.0.150.39,Home
    172.20.32.117,Work

    CSV ファイルは次の図のようになります。 ウォッチリストに使用される CSV ファイル内の 4 つの項目のスクリーンショット。

    この例で _GetWatchlist 関数を使用するには、クエリを _GetWatchlist('ipwatchlist')します。

    クエリがウォッチリストから 4 つの項目を返す様子を示すスクリーンショット。

    この例では、ウォッチリストに IP アドレスからのイベントのみを含めます。

    //Watchlist as a variable
    let watchlist = (_GetWatchlist('ipwatchlist') | project IPAddress);
    Heartbeat
    | where ComputerIP in (watchlist)
    

    次のクエリ例では、ウォッチリストをインラインで使用し、クエリとウォッチリストに対して定義された検索キーを使用します。

    //Watchlist inline with the query
    //Use SearchKey for the best performance
    Heartbeat
    | where ComputerIP in ( 
        (_GetWatchlist('ipwatchlist')
        | project SearchKey)
    )
    

    次の図は、ルール クエリで最後に使用されたクエリを示しています。

    分析ルールでウォッチリストを使用する方法を示すスクリーンショット。

  5. 分析ルール ウィザードの残りのタブを完了します。

ウォッチリストはワークスペースで 12 日ごとに更新され、 TimeGenerated フィールドが更新されます。 詳細については、「脅威を 検出するためのカスタム分析ルールを作成する」を参照してください。

ウォッチリストエイリアスの一覧を表示する

クエリまたは分析ルールで使用するウォッチリストを識別するために、ウォッチリストエイリアスの一覧を表示する必要がある場合があります。

  1. Azure portalの [Microsoft Sentinel] で、[全般] で [ログ] を選択します
    Defender ポータルで、調査 & 応答>Hunting>Advanced ハンティングを選択します

  2. [ 新しいクエリ] ページで 、次のクエリを実行します: _GetWatchlistAlias

  3. [結果] タブでエイリアスの一覧を 確認 します。

    ウォッチリストの一覧を示すスクリーンショット。

前の例で使用した次の項目の詳細については、Kusto のドキュメントを参照してください。

KQL の詳細については、「Kusto 照会言語 (KQL) の概要」を参照してください。

その他のリソース:

このドキュメントでは、Microsoft Sentinelでウォッチリストを使用してデータを強化し、調査を改善する方法について説明しました。 Microsoft Sentinelの詳細については、次の記事を参照してください。