이 클래스는 MicrosoftSentinelProvider
Microsoft Sentinel 데이터 레이크와 상호 작용하는 방법을 제공하여 데이터베이스 나열, 테이블 읽기 및 데이터 저장과 같은 작업을 수행할 수 있습니다. 이 클래스는 Jupyter Notebook의 Spark 세션과 함께 작동하도록 설계되었으며 Microsoft Sentinel 데이터 레이크에 저장된 데이터에 액세스하고 조작하는 메서드를 제공합니다.
이 클래스는 모듈의 sentinel.datalake
일부이며 데이터 레이크와 상호 작용하는 메서드를 제공합니다. 이 클래스를 사용하려면 해당 클래스를 가져오고 세션을 사용하여 클래스의 인스턴스를 spark
만듭니다.
from sentinel_lake.providers import MicrosoftSentinelProvider
data_provider = MicrosoftSentinelProvider(spark)
데이터 읽기 및 쓰기와 같은 작업을 수행하는 데 필요한 권한이 있어야 합니다. 사용 권한에 대한 자세한 내용은 Microsoft Sentinel 데이터 레이크 사용 권한을 참조하세요.
Methods
이 클래스는 MicrosoftSentinelProvider
Microsoft Sentinel 데이터 레이크와 상호 작용하는 몇 가지 메서드를 제공합니다.
아래에 나열된 각 메서드는 클래스를 MicrosoftSentinelProvider
가져왔으며 다음과 같이 세션을 사용하여 인스턴스를 spark
만들었다고 가정합니다.
from sentinel_lake.providers import MicrosoftSentinelProvider
data_provider = MicrosoftSentinelProvider(spark)
list_databases
사용 가능한 모든 데이터베이스/Microsoft Sentinel 작업 영역을 나열합니다.
data_provider.list_databases()
Returns:
-
list[str]
: Microsoft Sentinel 데이터 레이크에서 사용할 수 있는 데이터베이스 이름(작업 영역) 목록입니다.
list_tables
지정된 데이터베이스의 모든 테이블을 나열합니다.
data_provider.list_tables([database],[id])
Parameters:
-
database
(str, optional): 테이블을 나열할 데이터베이스(작업 영역)의 이름입니다. 기본값은default
입니다. -
id
(str, 선택 사항): 작업 영역 이름이 고유하지 않은 경우 데이터베이스의 고유 식별자입니다.
Returns:
-
list[str]
: 지정된 데이터베이스의 테이블 이름 목록입니다.
Examples:
데이터베이스의 모든 테이블을 나열합니다 default
.
data_provider.list_tables()
특정 데이터베이스의 모든 테이블을 나열합니다.
id
작업 영역 이름이 고유하지 않은 경우 데이터베이스를 지정합니다.
data_provider.list_tables("workspace1", id="ab1111112222ab333333")
read_table
Lake의 테이블에서 DataFrame을 로드합니다.
data_provider.read_table({table}, [database], [id])
Parameters:
-
table_name
(str): 읽을 테이블의 이름입니다. -
database
(str, optional): 테이블을 포함하는 데이터베이스(작업 영역)의 이름입니다. 기본값은default
입니다. -
id
(str, 선택 사항): 작업 영역 이름이 고유하지 않은 경우 데이터베이스의 고유 식별자입니다.
Returns:
-
DataFrame
: 지정된 테이블의 데이터를 포함하는 DataFrame입니다.
Example:
df = data_provider.read_table("EntraGroups", "default")
save_as_table
DataFrame을 관리되는 테이블로 작성합니다. 테이블 이름에 접미사를 사용하여 _SPRK
레이크 계층에 쓰거나 접미사를 사용하여 _SPRK_CL
분석 계층에 쓸 수 있습니다.
data_provider.save_as_table({DataFrame}, {table_name}, [database], [id], [write_options])
Parameters:
-
DataFrame
(DataFrame): 테이블로 쓸 데이터 프레임입니다. -
table_name
(str): 만들거나 덮어쓸 테이블의 이름입니다. -
database
(str, optional): 테이블을 저장할 데이터베이스(작업 영역)의 이름입니다. 기본값은default
입니다. -
id
(str, 선택 사항): 작업 영역 이름이 고유하지 않은 경우 데이터베이스의 고유 식별자입니다. -
write_options
(받아쓰기, 선택 사항): 테이블을 작성하기 위한 옵션입니다. 지원되는 옵션: - 모드:append
또는overwrite
(기본값:append
) - partitionBy: 예제로 분할할 열 목록: {'mode': 'append', 'partitionBy': ['date']}
Returns:
-
str
: 쓰기 작업의 실행 ID입니다.
Note
분할 옵션은 데이터 레이크 계층의 기본 데이터베이스(작업 영역)에 있는 사용자 지정 테이블에만 적용됩니다. 분석 계층의 테이블이나 데이터 레이크 계층의 기본 데이터베이스가 아닌 데이터베이스의 테이블에 대해서는 지원되지 않습니다.
Examples:
작업 영역의 데이터 레이크 계층에 lakeworkspace
새 사용자 지정 테이블을 만듭니다.
data_provider.save_as_table(dataframe, "CustomTable1_SPRK", "lakeworkspace")
데이터 레이크 계층의 기본 작업 영역에 있는 테이블에 추가합니다.
write_options = {
'mode': 'append'
}
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 Monitor 로그에서 테이블 및 열 추가 또는 삭제를 참조하세요.
data_provider.delete_table({table_name}, [database], [id])
Parameters:
-
table_name
(str): 삭제할 테이블의 이름입니다. -
database
(str, optional): 테이블을 포함하는 데이터베이스(작업 영역)의 이름입니다. 기본값은default
입니다. -
id
(str, 선택 사항): 작업 영역 이름이 고유하지 않은 경우 데이터베이스의 고유 식별자입니다.
Returns:
-
dict
: 삭제 작업의 결과를 포함하는 사전입니다.
Example:
data_provider.delete_table("customtable_SPRK", "lakeworkspace")