join や lookup などの 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 クエリ言語 (KQL) クエリを記述します。
Defender ポータルでMicrosoft Sentinelする場合は、[Microsoft Sentinel>Configuration>Watchlist] を選択します。 Azure portalの [Microsoft Sentinel] で、[構成] で [ウォッチリスト] を選択します。
使用するウォッチリストを選択します。
Logs で表示 を選択します。
[ 結果 ] タブを確認します。ウォッチリスト内の項目は、クエリに対して自動的に抽出されます。
次の例は 、[名前] フィールドと [ IP アドレス ] フィールドの抽出結果を示しています。 SearchKey は、独自の列として表示されます。
クエリのタイムスタンプは、クエリ UI とスケジュールされたアラートの両方で無視されます。
_GetWatchlist('watchlist-name') 関数を使用し、結合のキーとして SearchKey を使用するクエリを記述します。
たとえば、次のクエリ例では、
RemoteIPCountryテーブルのHeartbeat列を、mywatchlistという名前のウォッチリストに対して定義された検索キーと結合します。Heartbeat | lookup kind=leftouter _GetWatchlist('mywatchlist') on $left.RemoteIPCountry == $right.SearchKeyこの例クエリの結果は、以下のスクリーンショットのようにLog Analyticsに表示されています。
ウォッチリストを使用して分析ルールを作成する
_GetWatchlist('watchlist-name') 関数は、クエリでウォッチリスト データを直接参照できるように、指定されたウォッチリストの内容を返します。 分析ルールでウォッチリストを使用するには、ルール クエリにこの関数を含むルールを作成します。
構成 で、分析 を選択します。
[ 作成 ] を選択し、作成するルールの種類を選択します。
[ 全般 ] タブで、適切な情報を入力します。
[ ルール ロジックの設定 ] タブの [ ルール クエリ ] で、クエリで
_GetWatchlist('<watchlist>')関数を使用します。たとえば、次の値を持つ CSV ファイルから作成した
ipwatchlistという名前のウォッチリストがあるとします。IPAddress,Location10.0.100.11,Home172.16.107.23,Work10.0.150.39,Home172.20.32.117,WorkCSV ファイルは次の図のようになります。
この例で
_GetWatchlist関数を使用するには、クエリを_GetWatchlist('ipwatchlist')します。
この例では、ウォッチリストに 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) )次のスクリーンショットは、ルール クエリで使用されるインライン
_GetWatchlist('ipwatchlist')クエリを示しています。
分析ルール ウィザードの残りのタブを完了します。
ウォッチリストはワークスペースで 12 日ごとに更新され、 TimeGenerated フィールドが更新されます。 ウォッチリストを使用するカスタム分析ルールの作成については、「 脅威検出のためのカスタム分析ルール作成」をご覧ください。
ウォッチリスト エイリアスの一覧を表示する
ウォッチリストエイリアスは、クエリと分析ルールでウォッチリストを参照するために使用される一意の識別子です。 クエリまたは分析ルールで使用するウォッチリストを識別するために、ウォッチリストエイリアスの一覧を表示する必要がある場合があります。
Azure portalの [Microsoft Sentinel] で、[全般] で [ログ] を選択します。
Defender ポータルで、調査と応答>ハンティング>高度なハンティングを選択します。[ 新しいクエリ] ページで 、次のクエリを実行します:
_GetWatchlistAlias。[結果] タブでエイリアスの一覧を 確認 します。
このページの例で使用されている Kusto 演算子とステートメントの詳細については、Kusto のドキュメントを参照してください。
KQL の詳細については、「Kusto 照会言語 (KQL) の概要」を参照してください。
その他のリソース:
関連コンテンツ
ウォッチリストとMicrosoft Sentinelの詳細については、次の記事を参照してください。
- ウォッチリストを作成する
- 収集されたデータを視覚化します。
- 組み込みの分析ルールを使用して脅威を検出します。
- ワークブックを使用してデータを監視できます。