페더레이션된 데이터 커넥터를 설정한 후 Microsoft Sentinel 여러 인터페이스를 통해 페더레이션 테이블에 액세스할 수 있습니다. 페더레이션 테이블은 다른 데이터 레이크 테이블과 동일한 방식으로 사용됩니다. 이 문서에서는 페더레이션된 테이블을 보고, KQL(Kusto 쿼리 언어)을 사용하여 쿼리하고, Jupyter Notebook에서 작업하는 방법을 설명합니다.
필수 구성 요소
시작하기 전에 다음을 확인합니다.
- 테넌트는 Sentinel 데이터 레이크에 온보딩되어야 합니다. 자세한 내용은 데이터 레이크를 Microsoft Sentinel 온보딩을 참조하세요.
- Sentinel 데이터 레이크에서 데이터를 쿼리할 수 있는 적절한 권한이 있습니다. 자세한 내용은 Microsoft Sentinel 플랫폼의 역할 및 권한을 참조하세요.
페더레이션 테이블 명명 이해
페더레이션 테이블 이름은 패턴을 <tableName>_<connectorInstanceName>따릅니다. 예시:
| 원래 테이블 이름 | 커넥터 instance 이름 | 페더레이션 테이블 이름 |
|---|---|---|
widgets |
ADLS01 |
widgets_ADLS01 |
sales_data |
AzureDBX01 |
sales_data_AzureDBX01 |
inventory |
Fabric01 |
inventory_Fabric01 |
커넥터의 여러 테이블에 동일한 테이블 이름이 instance 경우 커넥터 instance 이름에 숫자 식별자가 추가됩니다(예: widgets_ADLS01_1 커넥터 instance 내 ADLS01 의 두 테이블이 호출widgets되는 경우).
Sentinel 데이터 레이크에서 데이터를 쿼리할 때 페더레이션 테이블 이름을 사용합니다.
테이블 관리에서 페더레이션 테이블 보기
테이블 관리 뷰는 페더레이션 테이블을 포함하여 Sentinel 데이터 레이크의 모든 테이블에 대한 개요를 제공합니다.
- Microsoft Sentinel>구성>테이블로 이동합니다.
- 형식 필터를 선택합니다.
- 페더레이션을 선택하고 적용을 선택합니다.
테이블 세부 정보 보기
테이블 행을 선택하여 세부 정보 패널을 엽니다. 패널에는 다음 세 개의 탭이 있습니다.
| Tab | 설명 |
|---|---|
| 개요 | 원본 형식 및 연결 상태 포함하여 페더레이션된 테이블에 대한 기본 정보입니다. |
| 데이터 원본 | 이 테이블에 대한 데이터를 제공하는 커넥터 인스턴스를 보여 줍니다. |
| 스키마 | 테이블의 열에 대한 열, 데이터 형식 및 설명을 표시합니다. 데이터 레이크 시스템 테이블에 쓸 수 있는 권한이 있는 사용자는 스키마 새로 고침 을 선택하여 원본에서 열 및 기타 스키마 메타데이터를 업데이트할 수 있습니다. |
KQL을 사용하여 페더레이션 테이블 쿼리
Microsoft Sentinel KQL 쿼리 페이지를 사용하면 네이티브 Sentinel 데이터와 함께 페더레이션 테이블을 쿼리할 수 있습니다. 페더레이션 테이블은 KQL 작업, 대화형 및 비동기 쿼리 및 MCP 도구에 대해 지원됩니다.
Microsoft Sentinel>데이트 레이크 탐색>KQL 쿼리로 이동합니다.
정보 표시 줄에서 선택한 작업 영역 단추를 선택합니다.
작업 영역 중 하나로 시스템 테이블을 선택합니다.
스키마 탭에서 시스템 테이블 섹션을 확장합니다.
페더레이션 테이블 섹션을 확장합니다.
Microsoft Fabric, Azure Databricks 또는 Azure Data Lake Storage Gen2 같은 데이터 원본에 대한 페더레이션 형식을 찾습니다.
페더레이션 형식을 확장하여 페더레이션 테이블을 확인합니다.
테이블을 확장하여 해당 열을 봅니다.
참고
KQL의 쿼리 성능 최적화로 인해 페더레이션 테이블의 새 데이터를 쿼리에 사용할 수 있게 되는 데 최대 15분이 걸릴 수 있습니다.
쿼리 작성 및 실행
페더레이션된 테이블에 대한 쿼리는 몇 가지 중요한 차이점이 있는 네이티브 레이크 테이블에 대한 쿼리처럼 작동합니다.
외부 원본에 있는 테이블의 스키마에 대한 변경이 발생할 수 있습니다. 이로 인해 열이 없음을 나타내는 쿼리 중에 오류가 발생할 수 있습니다. 페더레이션 테이블을 선택하고 스키마 탭을 선택하고 스키마 새로 고침을 선택하여 테이블 관리 페이지에서 열을 새로 고칩니다.
열이 없거나
TimeGenerated열에 잘못된 형식의 데이터가 있는TimeGenerated페더레이션 테이블은 데이터 레이크 탐색기에서 사용자 인터페이스의 시간 선택기를 사용하여 시간 범위를 선택하는 데 사용할 수 없습니다. 페더레이션 테이블의 날짜 형식과 일치하는 KQL 본문에 날짜 필터를 정의합니다.
페더레이션된 쿼리에서 KQL 작업 만들기
페더레이션 테이블을 사용하는 쿼리를 기반으로 KQL 작업을 만들 수 있습니다.
- 페더레이션 테이블을 사용하여 KQL 쿼리를 작성하고 테스트합니다.
- 쿼리 패널의 오른쪽 위 모서리에서 작업 만들기 단추를 선택합니다.
- 일정 및 출력 대상을 포함하여 작업 설정을 구성합니다.
- 작업을 저장합니다.
참고
페더레이션 테이블에 데이터를 쓰는 것은 지원되지 않습니다. KQL 출력은 KQL 작업을 만들 때 현재 사용되는 동일한 기준에 따라 만들어집니다. 여기서 선택한 대상에 따라 새 테이블 또는 기존 테이블에 쓸 수 있습니다.
페더레이션된 테이블에 열이 없거나
TimeGenerated출력에 각 행에 대해 올바르게 서식이 지정된 날짜 값이 있는 열이 없는TimeGenerated경우 KQL 쿼리는 레이크에서 만든 후에는 테이블에서 작동하지 않습니다.
페더레이션 테이블은 KQL 작업, 비동기 쿼리 및 MCP 도구에 대해 완전히 지원됩니다.
페더레이션 테이블 쿼리를 사용하여 MCP 도구 만들기
페더레이션 테이블을 사용하는 쿼리를 기반으로 MCP 도구를 만들 수 있습니다.
페더레이션 테이블을 사용하여 KQL 쿼리를 작성하고 테스트합니다.
쿼리 편집기 위에서 다른 이름으로 저장 도구 단추를 선택합니다.
필요에 따라 쿼리를 조정합니다(예: 값 매개 변수화).
페더레이션된 테이블에 대한 참조의 경우 테이블 이름
workspace("default").접두사를 로 지정해야 합니다. 예를 들어 테이블이 인widgets_ADLS01경우 해당 테이블에 대한 코드가 표시됩니다workspace("default").widgets_ADLS01.도구를 저장합니다.
Jupyter Notebook에서 페더레이션 테이블 사용
페더레이션 테이블은 Microsoft Sentinel VS Code 확장을 통해 Jupyter Notebook에서 액세스할 수 있습니다.
Microsoft Sentinel VS Code 확장에서 페더레이션 테이블은 레이크 테이블시스템 테이블>>페더레이션 테이블 아래에 표시됩니다.
Jupyter Notebook에서 페더레이션된 테이블을 사용하는 것은 네이티브 시스템 테이블과 동일한 패턴을 따릅니다.
-
형식을 사용하여 전체 테이블 이름: 참조 테이블을 사용합니다
<tableName>_<connectorInstance>. - 작업 영역 이름을 지정하지 마세요. 읽기 작업에는 작업 영역 사양이 필요하지 않습니다.
- 읽기 전용 액세스: 페더레이션 테이블은 읽기 전용입니다. 페더레이션된 원본에 데이터를 다시 쓸 수 없습니다.
참고
데이터 페더레이션을 처음 사용하도록 설정한 후 Jupyter Notebook 내에서 페더레이션 테이블을 보기까지 최대 24시간이 걸릴 수 있습니다.
Jupyter Notebook 작업
네이티브 데이터 레이크 테이블에 대한 Notebook 작업을 만드는 것과 동일한 방식으로 페더레이션 테이블을 활용하는 예약된 Jupyter Notebook 작업을 만들 수 있습니다.
- 페더레이션 테이블 쿼리를 사용하여 Notebook을 개발합니다.
- Notebook을 테스트하여 페더레이션된 쿼리가 올바르게 실행되는지 확인합니다.
- Notebook에서 작업을 만듭니다.
- 작업 일정 및 매개 변수를 구성합니다.
참고
Notebook 작업은 Sentinel 작업 영역 또는 시스템 테이블에 대상으로만 쓸 수 있습니다. 페더레이션 테이블에 데이터를 쓸 수 없습니다.
모범 사례
쿼리 최적화
- 필터를 조기에 적용: 가능한 경우 원본에서 데이터를 필터링하여 데이터 전송을 줄입니다.
-
결과 집합 제한: 개발 중에 또는
limit절을 사용합니다take. - 프로젝션 사용: 성능을 향상시키는 데 필요한 열만 선택합니다.
예: 최적화된 쿼리
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
조인 전략
-
적절한 조인 종류 사용: 필요에 따라 ,
leftouter또는rightouter를 선택합니다inner. - 조인하기 전에 필터링: 조인 작업 전에 데이터 볼륨을 줄입니다.
- 데이터 크기 고려: 조인의 오른쪽에 작은 테이블을 놓습니다.
오류 처리
- 연결 상태 확인: 쿼리하기 전에 페더레이션 커넥터 인스턴스가 연결되어 있는지 확인합니다.
-
null 값 처리: 외부 데이터에 예기치 않은 null이 포함될 수 있습니다.
isnull()또는 함수를 사용합니다coalesce(). - 쿼리 성능 모니터링: 페더레이션된 쿼리의 실행 시간을 추적하여 성능 문제를 식별합니다.
문제 해결
쿼리는 결과를 반환하지 않습니다.
- 커넥터 instance 연결된 상태인지 확인합니다.
- 쿼리의 대상 테이블과 함께 외부 데이터 원본을 사용할 수 있는지 확인합니다.
- 대상 데이터 원본에 따라 서비스 주체 또는 Sentinel 관리 ID에서 권한이 제거되지 않았는지 확인합니다.
- 올바른 페더레이션 테이블 이름 형식을 사용하고 있는지 확인합니다.
- KQL 쿼리 또는 Notebook 세션의 탐색 창에서 시스템 테이블을 사용할 수 있는지 확인합니다.
쿼리 속도가 느림
- 필터를 적용하여 외부 원본에서 쿼리된 데이터 볼륨을 줄입니다.
- 외부 원본의 성능 및 가용성을 확인합니다.
- 자주 액세스하는 데이터에 대한 요약 테이블을 만드는 것이 좋습니다.
스키마 불일치
- 테이블 관리 뷰에서 테이블 스키마를 검토합니다.
- 쿼리를 조정하여 스키마 차이를 처리합니다.
- 커넥터를 만든 후 외부 테이블 스키마가 변경되었는지 확인합니다.
페더레이션된 테이블에 대한 MCP 도구를 실행할 수 없음
MCP 도구 내에서 페더레이션 테이블을 참조할 때마다 테이블 이름 workspace("default"). 앞에 접두사를 지정했는지 확인합니다.