Microsoft Sentinelでフェデレーション データ ソースを使用する

フェデレーション データ コネクタを設定した後、Microsoft Sentinel内の複数のインターフェイスを介してフェデレーション テーブルにアクセスできます。 フェデレーション テーブルは、他のデータ レイク テーブルと同じ方法で使用されます。 この記事では、フェデレーション テーブルを表示し、KQL (Kusto 照会言語) を使用してクエリを実行し、Jupyter Notebook でそれらを操作する方法について説明します。

前提条件

開始する前に、次のことを確認してください。

フェデレーション テーブルの名前付けについて

フェデレーション テーブル名は、パターン <tableName>_<connectorInstanceName>に従います。 例:

元のテーブル名 コネクタ インスタンス名 フェデレーション テーブル名
widgets ADLS01 widgets_ADLS01
sales_data AzureDBX01 sales_data_AzureDBX01
inventory Fabric01 inventory_Fabric01

コネクタ インスタンス内の複数のテーブルに同じテーブル名がある場合は、コネクタ インスタンス名に数値識別子が追加されます(たとえば、ADLS01 コネクタ インスタンス内の 2 つのテーブルがwidgets呼び出されたときにwidgets_ADLS01_1されます。

Sentinel データ レイクからデータを照会する場合は、フェデレーション テーブル名を使用します。

テーブル管理でフェデレーション テーブルを表示する

テーブル管理ビューには、フェデレーション テーブルを含む、Sentinel データ レイク内のすべてのテーブルの概要が表示されます。

  1. [Microsoft Sentinel>Configuration>Tables] に移動します。
  2. [種類] フィルターを選択します。
  3. [ フェデレーション] を選択し、[適用] を選択 します

フェデレーション テーブルを表示するようにフィルター処理されたテーブル管理ビューを示すスクリーンショット。

テーブルの詳細を表示する

テーブル行を選択して詳細パネルを開きます。 パネルには、次の 3 つのタブがあります。

タブ 説明
概要 ソースの種類や接続状態など、フェデレーション テーブルに関する基本情報。
データ ソース このテーブルのデータを提供するコネクタ インスタンスを示します。
Schema テーブルの列の列、データ型、および説明を表示します。 data lake システム テーブルに書き込むアクセス許可を持つユーザーは、[ スキーマの更新 ] を選択して、ソースから列やその他のスキーマ メタデータを更新できます。

概要、データ ソース、スキーマ タブを含むフェデレーション テーブルの詳細ポップアップを示すスクリーンショット。

KQL を使用してフェデレーション テーブルにクエリを実行する

Microsoft Sentinelの [KQL クエリ] ページでは、ネイティブ Sentinel データと共にフェデレーション テーブルに対してクエリを実行できます。 フェデレーション テーブルは、KQL ジョブ、対話型クエリと非同期クエリ、MCP ツールでサポートされています。

  1. [Microsoft Sentinel>Data lake exploration>KQL クエリに移動します。

  2. 情報バーの [ 選択したワークスペース ] ボタンを選択します。

  3. ワークスペースの 1 つとして [ システム テーブル] を選択します。

  4. [ スキーマ ] タブで、[ システム テーブル ] セクションを展開します。

  5. [ フェデレーション テーブル ] セクションを展開します。

  6. Microsoft Fabric、Azure Databricks、Azure Data Lake Storage Gen2など、データ ソースのフェデレーションの種類を見つけます。

  7. フェデレーションの種類を展開して、フェデレーション テーブルを表示します。

  8. テーブルを展開して、その列を表示します。

注:

KQL でのクエリ パフォーマンスの最適化により、フェデレーション テーブル内の新しいデータがクエリで使用できるようになるまで最大 15 分かかることがあります。

フェデレーション テーブルが展開された [KQL クエリ スキーマ] タブを示すスクリーンショット。

クエリの書き込みと実行

フェデレーション テーブルに対するクエリは、いくつかの重要な違いがあるネイティブ レイク テーブルに対するクエリと同様に機能します。

  • 外部ソース内のテーブルのスキーマに変更が発生する可能性があります。 これにより、列が存在しないことを示すクエリ中にエラーが発生する可能性があります。 [テーブル管理] ページの列を更新するには、フェデレーション テーブルを選択し、[ スキーマ ] タブを選択し、[ スキーマの更新] を選択します。

  • TimeGenerated列がないフェデレーション テーブル、またはTimeGenerated列に間違った形式のデータが存在する場合は、データ レイク エクスプローラーで使用して、ユーザー インターフェイスのタイム ピッカーを使用して時間範囲を選択することはできません。 フェデレーション テーブルの日付形式に一致する KQL の本文で日付フィルターを定義します。

フェデレーション クエリから KQL ジョブを作成する

フェデレーション テーブルを使用するクエリに基づいて KQL ジョブを作成できます。

  1. フェデレーション テーブルを使用して KQL クエリを記述してテストします。
  2. クエリ パネルの右上隅にある [ ジョブの作成 ] ボタンを選択します。
  3. スケジュールや出力先など、ジョブ設定を構成します。
  4. ジョブを保存します。

注:

  • フェデレーション テーブルへのデータの書き込みはサポートされていません。 KQL 出力は、KQL ジョブの作成時に現在使用されているのと同じ条件に基づいて作成されます。ここで、選択した宛先に基づいて新しいテーブルまたは既存のテーブルに書き出すことができます。

  • フェデレーション テーブルに TimeGenerated 列が含まれていない場合、または出力に行ごとに適切に書式設定された日付値を持つ TimeGenerated 列が含まれていない場合、KQL クエリは、レイクで作成されたテーブルでは機能しません。

フェデレーション テーブルは、KQL ジョブ、非同期クエリ、MCP ツールで完全にサポートされています。

フェデレーション テーブル クエリを使用して MCP ツールを作成する

フェデレーション テーブルを使用するクエリに基づいて MCP ツールを作成できます。

  1. フェデレーション テーブルを使用して KQL クエリを記述してテストします。

  2. クエリ エディターの上にある [ 名前を付けて保存] ツール ボタンを選択します。

  3. 必要に応じてクエリを調整します 。たとえば、値をパラメーター化します。

  4. フェデレーション テーブルの参照については、テーブル名の前に workspace("default").を付けてください。 たとえば、テーブルが widgets_ADLS01された場合、コードにはそのテーブルの workspace("default").widgets_ADLS01 が表示されます。

  5. ツールを保存します。

Jupyter ノートブックでフェデレーション テーブルを使用する

フェデレーション テーブルは、Microsoft Sentinel VS Code 拡張機能を使用して Jupyter ノートブックでアクセスできます。

Microsoft Sentinel VS Code 拡張機能では、フェデレーション テーブルが [Lake tables>System tables>Federated tables] の下に表示されます。

Microsoft Sentinel VS Code 拡張機能の [システム テーブル][ フェデレーション テーブル] の下のフェデレーション テーブルを示すスクリーンショット。

Jupyter Notebook でのフェデレーション テーブルの操作は、ネイティブ システム テーブルと同じパターンに従います。

  1. 完全なテーブル名を使用します。 <tableName>_<connectorInstance> 形式を使用してテーブルを参照します。
  2. ワークスペース名を指定しない: 読み取り操作にはワークスペースの指定は必要ありません。
  3. 読み取り専用アクセス: フェデレーション テーブルは読み取り専用です。フェデレーション ソースにデータを書き戻すことはできません。

注:

データフェデレーションを初めて有効にした後、Jupyter ノートブック内にフェデレーション テーブルが表示されるまでに最大で 24 時間かかることがあります。

Jupyter Notebook ジョブ

ネイティブ データ レイク テーブルのノートブック ジョブを作成するのと同じ方法で、フェデレーション テーブルを利用するスケジュールされた Jupyter ノートブック ジョブを作成できます。

  1. フェデレーション テーブル クエリを使用してノートブックを開発します。
  2. ノートブックをテストして、フェデレーション クエリが正しく実行されていることを確認します。
  3. ノートブックからジョブを作成します。
  4. ジョブ スケジュールとパラメーターを構成します。

注:

ノートブック ジョブは、Sentinelワークスペースまたはシステム テーブルにのみ書き込み先として書き込むことができます。 フェデレーション テーブルにデータを書き込むできません。

ベスト プラクティス

クエリの最適化

  • フィルターを早期に適用する: 可能な場合はソースでデータをフィルター処理して、データ転送を減らします。
  • 結果セットの制限: 開発中に take 句または limit 句を使用します。
  • プロジェクションを使用する: パフォーマンスを向上させるために必要な列のみを選択します。

例: 最適化されたクエリ

large_dataset_adls_connector
| where EventTime >= ago(1h)           // Filter early
| where EventType == "Login"           // Reduce data volume
| project EventTime, UserId, SourceIP  // Select needed columns
| take 10000                           // Limit results

結合戦略

  • 適切な結合の種類を使用する: ニーズに基づいて innerleftouter、または rightouter を選択します。
  • 結合前のフィルター: 結合操作の前にデータ ボリュームを減らします。
  • データ サイズを考慮する: 結合の右側に小さいテーブルを配置します。

エラー処理

  • 接続の状態を確認する: クエリを実行する前に、フェデレーション コネクタ インスタンスが接続されていることを確認します。
  • null 値を処理する: 外部データに予期しない null が含まれている可能性があります。 coalesce() 関数または isnull() 関数を使用します。
  • クエリのパフォーマンスを監視する: フェデレーション クエリの実行時間を追跡して、パフォーマンスの問題を特定します。

トラブルシューティング

クエリは結果を返しません

  • コネクタ インスタンスが接続状態であることを確認します。
  • クエリの対象となるテーブルと共に、外部データ ソースが使用可能であることを確認します。
  • 対象となるデータ ソースに基づいて、サービス プリンシパルまたはマネージド ID Sentinelアクセス許可が削除されていないことを確認します。
  • 正しいフェデレーション テーブル名の形式を使用していることを確認します。
  • KQL クエリまたはノートブック セッションのナビゲーション ウィンドウでシステム テーブルを使用できることを確認します。

クエリが遅い

  • フィルターを適用して、外部ソースからクエリを実行するデータ 量を減らします。
  • 外部ソースのパフォーマンスと可用性を確認します。
  • 頻繁にアクセスされるデータの概要テーブルを作成することを検討してください。

スキーマの不一致

  • テーブル管理ビューでテーブル スキーマを確認します。
  • スキーマの違いを処理するようにクエリを調整します。
  • コネクタの作成後に外部テーブル スキーマが変更されたかどうかを確認します。

フェデレーション テーブルに対して MCP ツールを実行できない

MCP ツール内でフェデレーション テーブルを参照する場合は、必ずテーブル名に workspace("default"). を付けてください。

次の手順