KQL ジョブは、Microsoft Sentinel データ レイク内のデータに対する 1 回限りの非同期 KQL クエリまたはスケジュールされた非同期 KQL クエリです。 ジョブは、調査や分析のシナリオにおいて役立つことが多く、例えば以下のような場合に使用されます。
- インシデント調査とインシデント対応 (IR) に対する実行時間の長い 1 回限りのクエリ
- 忠実度の低いログを使用したエンリッチメント ワークフローをサポートするデータ集計タスク
- 過去の脅威インテリジェンス (TI) 照合スキャンによる振り返り分析
- 複数のテーブル間で異常なパターンを識別する異常検出スキャン
KQL ジョブは、クエリが異なるデータセット間で結合または共用体を使用する場合に特に効果的です。
ジョブは、データ レイク層から分析層にデータを昇格させるためにも使用されます。 分析レベルに入ったら、高度なハンティング KQL エディターを使用してデータのクエリを実行します。 分析レベルへのデータの昇格には、次の利点があります。
- 分析層の現在のデータと履歴データを組み合わせて、データに対して高度な分析モデルと機械学習モデルを実行します。
- 分析レベルでクエリを実行することで、クエリ コストを削減します。
- 分析レベルで、複数のワークスペースのデータを 1 つのワークスペースに結合します。
- 分析レベルで Microsoft Entra ID、Microsoft 365、および Microsoft Resource Graph のデータを組み合わせて、データ ソース間で高度な分析を実行します。
注
分析レベルのストレージでは、Data Lake レベルよりも高い課金レートが発生します。 コストを削減するには、さらに分析する必要があるデータのみを昇格させます。 クエリで KQL を使用して、必要な列のみを射影し、データをフィルター処理して分析レベルに昇格するデータの量を減らします。
データを新しいテーブルに昇格させたり、分析レベルの既存のテーブルに結果を追加したりできます。 新しいテーブルを作成すると、テーブル名の末尾に _KQL_CL が付き、テーブルが KQL ジョブによって作成されたことを示します。
[前提条件]
Microsoft Sentinel データ レイクで KQL ジョブを作成および管理するには、次の前提条件が必要です。
データ レイクにオンボードする
Microsoft Sentinel データ レイクで KQL ジョブを作成および管理するには、まずデータ レイクにオンボードする必要があります。 Data Lake へのオンボードの詳細については、「 Microsoft Sentinel データ レイクへのオンボード」を参照してください。
権限
Microsoft Entra ID ロールは、データ レイク内のすべてのワークスペースに広範なアクセスを提供します。 すべてのワークスペースでテーブルを読み取り、分析層に書き込み、KQL クエリを使用してジョブをスケジュールするには、サポートされている Microsoft Entra ID ロールのいずれかが必要です。 ロールとアクセス許可の詳細については、「 Microsoft Sentinel Data Lake のロールとアクセス許可」を参照してください。
分析レベルで新しいカスタム テーブルを作成するには、Data Lake マネージド ID に Log Analytics ワークスペースの Log Analytics 共同作成者 ロールを割り当てる必要があります。
ロールを割り当てるには、次の手順に従います。
- Azure portal で、ロールを割り当てる Log Analytics ワークスペースに移動します。
- 左側のナビゲーション ペインで [アクセス制御 (IAM)] を選択します。
- [ロールの割り当ての追加] を選択します。
- [ロール] テーブルで 、[*Log Analytics 共同作成者] を選択し、[次へ] を選択します。
- [ マネージド ID] を選択し、[ メンバーの選択] を選択します。
- データレイクのマネージドアイデンティティは、システムが割り当てた `
msg-resources-<guid>
` という名前のマネージドアイデンティティです。マネージドアイデンティティを選択し、次に `選択` を選択してください。 - 「Review and assign」を選択します。
マネージド ID へのロールの割り当ての詳細については、 Azure portal を使用した Azure ロールの割り当てに関するページを参照してください。
ジョブの作成
スケジュールに従って実行するジョブまたは 1 回限り実行するジョブを作成できます。 ジョブを作成するときに、結果の宛先ワークスペースとテーブルを指定します。 結果は、新しいテーブルに書き込んだり、分析レベルの既存のテーブルに追加したりできます。
KQL クエリ エディターまたはジョブ管理ページからジョブ作成プロセスを開始します。
ジョブ名を入力します。 ジョブ名は、テナントに対して一意である必要があります。 ジョブ名には、最大 256 文字を含めることができます。 ジョブ名に
#
または-
を使用することはできません。ジョブのコンテキストと目的を指定するジョブの 説明 を入力します。
[ ワークスペースの選択 ] ドロップダウンから、移動先のワークスペースを選択します。 これは、クエリ結果を書き込む分析レベルのワークスペースです。
宛先テーブルを選択します。
新しいテーブルを作成するには、[ 新しいテーブルの作成 ] を選択し、テーブル名を入力します。 KQL ジョブによって作成されたテーブルには、テーブル名 _KQL_CL サフィックスが追加されます。
既存のテーブルに追加するには、[ 既存のテーブルに追加] を選択し、ドロップダウン リストからテーブル名を選択します。 既存のテーブルに追加する場合、クエリ結果は既存のテーブルのスキーマと一致する必要があります。
[クエリの準備] パネルで クエリ を確認または記述します。 日付範囲がクエリで指定されていない場合は、時刻ピッカーがジョブに必要な時間範囲に設定されていることを確認します。
[選択したワークスペース] ドロップダウンから、クエリを実行する ワークスペースを選択 します。 これらは、クエリを実行するテーブルを含むソース ワークスペースです。 選択したワークスペースによって、クエリに使用できるテーブルが決まります。 選択したワークスペースは、クエリ エディターのすべてのクエリ タブに適用されます。 複数のワークスペースを使用する場合、
union()
演算子は、異なるワークスペースの名前とスキーマが同じテーブルに既定で適用されます。workspace()
演算子を使用して、workspace("MyWorkspace").AuditLogs
など、特定のワークスペースのテーブルに対してクエリを実行します。注
既存のテーブルに書き込む場合、クエリは、コピー先のテーブル スキーマと一致するスキーマで結果を返す必要があります。 クエリが正しいスキーマの結果を返さない場合、ジョブの実行時に失敗します。
[次へ] を選択します。
[ クエリ ジョブのスケジュール ] ページで、ジョブを 1 回実行するかスケジュールに従って実行するかを選択します。 [1 回限り] を選択すると、ジョブ定義が完了するとすぐにジョブが実行されます。 [スケジュール] を選択した場合は、ジョブの実行日時を指定するか、定期的なスケジュールでジョブを実行できます。
1 回限りまたはスケジュールされたジョブを選択します。
注
1 回限りのジョブを編集すると、すぐに実行がトリガーされます。
[スケジュール] を選択した場合は、次の詳細を入力します。
- ドロップダウンから[ 繰り返し頻度 ]を選択します。 分 単位、 時間単位、 日単位、 週単位、または 月単位を選択できます。
- 繰り返す間隔値を、選択した頻度を基準にしてジョブが実行される頻度に設定します。
- [ スケジュールの設定] で、[ 開始日 ] の日付と時刻を入力します。 [From] フィールドのジョブの開始時刻は、ジョブ作成後少なくとも30分経過してからである必要があります。 ジョブは、[すべての実行] ドロップダウンで選択した頻度に従って、この日付と時刻から 実行 されます。
- To 日時を選択して、ジョブスケジュールがいつ終了するかを指定します。 スケジュールを無期限に続行する場合は、[ジョブを無 期限に実行するように設定] を選択します。
ジョブの開始時刻と時刻は、ユーザーのロケールに対して設定されます。
[ 次へ ] を選択してジョブの詳細を確認します。
ジョブの詳細を確認し、[ 送信] を選択してジョブを作成します。 ジョブが 1 回限りのジョブの場合は、[ 送信] を選択した後に実行されます。 ジョブがスケジュールされている場合は、[ジョブ ] ページの ジョブの一覧に追加され、開始データと時刻に従って実行されます。
考慮事項と制限事項
Microsoft Sentinel データ レイクでジョブを作成する場合は、次の制限事項とベスト プラクティスを考慮してください。
KQL
以下を除き、すべての KQL 演算子と関数がサポートされています。
adx()
arg()
externaldata()
ingestion_time()
ユーザー定義関数はサポートされていません。
仕事
- ジョブ名は、テナントに対して一意である必要があります。
- ジョブ名は最大 256 文字です。
- ジョブ名に
#
または-
を含めることはできません。 - ジョブの開始時刻は、ジョブの作成または編集後、少なくとも 30 分後である必要があります。
列名
次の標準列はエクスポートではサポートされていません。 これらの列は、インジェスト中にターゲット層で上書きされます。
テナント識別子
_TimeReceived
タイプ
ソースシステム
_ResourceId(リソース識別子)
_SubscriptionId(サブスクリプションID)
_ItemId
_請求額サイズ
_IsBillable // 請求可能かどうかを示す
_WorkspaceId
TimeGenerated
は、2日以上経過している場合は上書きされます。 元のイベント時間を保持するには、ソースタイムスタンプを別の列に書き込むことをお勧めします。
サービスの制限については、 Microsoft Sentinel Data Lake サービスの制限に関する説明を参照してください。
注
ジョブのクエリが1時間の制限を超えると、部分的な結果が優先扱いされる可能性があります。
KQL ジョブのサービスパラメーターおよび制限
次の表に、Microsoft Sentinel データ レイクの KQL ジョブのサービス パラメーターと制限を示します。
カテゴリ | パラメーター/制限 |
---|---|
テナントごとの同時ジョブ実行 | 3 |
ジョブ クエリの実行タイムアウト | 1 時間 |
テナントあたりのジョブ数 (有効なジョブ) | 100 |
ジョブあたりの出力テーブルの数 | 1 |
検索範囲 | 複数のワークスペース |
クエリの時間範囲 | 最大 12 年 |
トラブルシューティングのヒントとエラー メッセージについては、「 Microsoft Sentinel Data Lake の KQL クエリのトラブルシューティング」を参照してください。