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

ウォッチリストを結合または検索のためのテーブルとして扱うことで、ウォッチリストのデータを基にしてテーブルのデータのクエリを実行します。 ウォッチリストを作成するときは、SearchKey を定義します。 検索キーは、他のデータとの結合または頻繁に検索されるオブジェクトとして使用するウォッチリスト内の列の名前です。

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

重要

Microsoft Sentinel は、Microsoft Defender ポータルの統合セキュリティ オペレーション プラットフォームのパブリック プレビューの一部として利用できます。 詳しくは、「Microsoft Defender ポータルの Microsoft Sentinel」を参照してください。

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

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

  1. Azure portal の Microsoft Sentinel の場合、[構成] の下にある [ウォッチリスト] を選びます。
    Defender ポータルの Microsoft Sentinel の場合、[Microsoft Sentinel]>[構成]>[ウォッチリスト] を選びます。

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

  3. [ログに表示] を選びます。

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

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

    次の例では、NameIP Address フィールドの抽出結果が示されています。 SearchKey は、独自の列として表示されます。

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

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

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

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

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

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

    lookup というウォッチリストに対するクエリのスクリーンショット。

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

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

  1. [構成] の下の [Analytics] を選択します。

  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 ポータルで、[調査と応答]>[ハンティング]>[高度なハンティング] を選びます。

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

  3. [結果] タブで別名の一覧を確認します。

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

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