MicrosoftSentinelProvider クラスは、Microsoft Sentinel データ レイクと対話する方法を提供し、データベースの一覧表示、テーブルの読み取り、データの保存などの操作を実行できます。 このクラスは、Jupyter Notebook の Spark セッションを操作するように設計されており、Microsoft Sentinel データ レイクに格納されているデータにアクセスして操作するメソッドを提供します。
このクラスは、 sentinel.datalake モジュールの一部であり、データ レイクと対話するためのメソッドを提供します。 このクラスを使用するには、それをインポートし、 spark セッションを使用して クラスのインスタンスを作成します。
from sentinel_lake.providers import MicrosoftSentinelProvider
data_provider = MicrosoftSentinelProvider(spark)
データの読み取りと書き込みなどの操作を実行するために必要なアクセス許可が必要です。 アクセス許可の詳細については、「data lake のアクセス許可Microsoft Sentinel」を参照してください。
メソッド
MicrosoftSentinelProvider クラスには、Microsoft Sentinel データ レイクと対話するためのメソッドがいくつか用意されています。
次に示す各メソッドは、 MicrosoftSentinelProvider クラスがインポートされ、 spark セッションを使用してインスタンスが作成されていることを前提としています。
from sentinel_lake.providers import MicrosoftSentinelProvider
data_provider = MicrosoftSentinelProvider(spark)
list_databases
使用可能なすべてのデータベース/Microsoft Sentinelワークスペースを一覧表示します。
data_provider.list_databases()
戻り値:
-
list[str]: Microsoft Sentinel データ レイクで使用できるデータベース名 (ワークスペース) の一覧。
list_tables
特定のデータベース内のすべてのテーブルを一覧表示します。
data_provider.list_tables([database_name],[database_id])
パラメータ :
-
database_name(str、省略可能): テーブルを一覧表示するデータベース (ワークスペース) の名前。 IF が指定されていない場合は、システム テーブル データベースが使用されます。 -
database_id(str、省略可能): ワークスペース名が一意でない場合のデータベースの一意識別子。
戻り値:
-
list[str]: 指定したデータベース内のテーブル名の一覧。
例:
システム テーブル データベース内のすべてのテーブルを一覧表示します。
data_provider.list_tables()
特定のデータベース内のすべてのテーブルを一覧表示します。 ワークスペース名が一意でない場合は、データベースの database_id を指定します。
data_provider.list_tables("workspace1", database_id="ab1111112222ab333333")
read_table
Lake のテーブルから DataFrame を読み込みます。
data_provider.read_table({table}, [database_name], [database_id])
パラメータ :
-
table_name(str): 読み取るテーブルの名前。 -
database_name(str、省略可能): テーブルを含むデータベース (ワークスペース) の名前。 既定値はSystem tablesです。 -
database_id(str、省略可能): ワークスペース名が一意でない場合のデータベースの一意識別子。
戻り値:
-
DataFrame: 指定したテーブルのデータを含む DataFrame。
例:
df = data_provider.read_table("EntraGroups", "Workspace001")
save_as_table
DataFrame をマネージド テーブルとして書き込みます。 テーブル名に _SPRK サフィックスを使用してレイク層に書き込むか、 _SPRK_CL サフィックスを使用して分析層に書き込むことができます。
注:
分析レベルの場合、 save_as_table では append モードのみがサポートされます。
overwrite モードは、レイク層でのみサポートされます。
data_provider.save_as_table({DataFrame}, {table_name}, [database_name], [database_id], [write_options])
パラメータ :
-
DataFrame(DataFrame): テーブルとして書き込む DataFrame。 -
table_name(str): 作成または上書きするテーブルの名前。 -
database_name(str、省略可能): テーブルを保存するデータベース (ワークスペース) の名前。 既定値はSystem tablesです。 -
database_id(str、省略可能、分析レベルのみ): ワークスペース名が一意でない場合は、分析層内のデータベースの一意識別子。 -
write_options(dict、省略可能): テーブルを記述するためのオプション。 サポートされているオプション: - モード:appendまたはoverwrite(既定値:append)overwriteモードは、レイク層でのみサポートされます。 - partitionBy: 例によってパーティション分割する列の一覧: {'mode': 'append', 'partitionBy': ['date']}
戻り値:
-
str: 書き込み操作の実行 ID。
注:
パーティション分割オプションは、データ レイク層のシステム テーブル データベース (ワークスペース) のカスタム テーブルにのみ適用されます。 分析層のテーブルや、データ レイク層のシステム テーブル データベース以外のデータベースのテーブルではサポートされていません。
例:
System tables ワークスペースのデータ レイク層に新しいカスタム テーブルを作成します。
data_provider.save_as_table(dataframe, "CustomTable1_SPRK", "System tables")
データ レイク層のシステム テーブル データベース (ワークスペース) 内のテーブルを上書きします。
write_options = {
'mode': 'overwrite'
}
data_provider.save_as_table(dataframe, "CustomTable1_SPRK", write_options=write_options)
分析レベルで新しいカスタム テーブルを作成します。
data_provider.save_as_table(dataframe, "CustomTable1_SPRK_CL", "analyticstierworkspace")
分析レベルの既存のカスタム テーブルに追加します。
write_options = {
'mode': 'append'
}
data_provider.save_as_table(dataframe, "CustomTable1_SPRK_CL", "analyticstierworkspace", write_options)
TimeGenerated列にパーティション分割を使用して、システム テーブル データベースに追加します。
data_loader.save_as_table(dataframe, "table1", write_options: {'mode': 'append', 'partitionBy': ['TimeGenerated']})
delete_table
レイク層からテーブルを削除します。 テーブル名に _SPRK サフィックスを使用して、レイク層からテーブルを削除できます。 この関数を使用して分析レベルからテーブルを削除することはできません。 分析レベルでカスタム テーブルを削除するには、Log Analytics API 関数を使用します。 詳細については、「Azure モニター ログのテーブルと列を追加または削除する」を参照してください。
data_provider.delete_table({table_name}, [database_name], [database_id])
パラメータ :
-
table_name(str): 削除するテーブルの名前。 -
database_name(str、省略可能): テーブルを含むデータベース (ワークスペース) の名前。 既定値はSystem tablesです。 -
database_id(str、省略可能): ワークスペース名が一意でない場合のデータベースの一意識別子。
戻り値:
-
dict: 削除操作の結果を含むディクショナリ。
例:
data_provider.delete_table("customtable_SPRK", "System tables")