다음을 통해 공유


Microsoft Sentinel 쿼리 및 작업 감사

이 문서에서는 보안 작업(SOC) 작업 영역에서 내/외부 규정 준수 요구 사항 등 Microsoft Sentinel 작업 영역에서 수행되는 쿼리 실행 및 작업에 대한 감사 데이터를 보는 방법을 설명합니다.

Microsoft Sentinel은 다음에 대한 액세스 권한을 제공합니다.

  • AzureActivity 테이블 - 경고 규칙 편집 등 Microsoft Sentinel에서 수행되는 모든 활동에 대한 세부 정보를 제공합니다. AzureActivity 테이블은 특정 쿼리 데이터를 기록하지 않습니다. 자세한 내용은 Azure 활동 로그를 사용하여 감사를 참조하세요.

  • LAQueryLogs 테이블 - Microsoft Sentinel에서 실행되는 쿼리를 포함하여 Log Analytics에서 실행되는 쿼리에 대한 세부 정보를 제공합니다. 자세한 내용은 LAQueryLogs를 사용하여 감사를 참조하세요.

이 문서에 설명된 수동 쿼리 외에도 SOC 환경의 활동을 감사하는 데 도움이 되는 기본 제공 작업 영역 감사 통합 문서를 사용하는 것이 좋습니다. 자세한 내용은 Microsoft Sentinel에서 통합 문서를 사용하여 데이터 시각화 및 모니터링을 참조하세요.

필수 조건

  • 이 문서의 샘플 쿼리를 성공적으로 실행하려면 Microsoft Sentinel 작업 영역에 관련 데이터가 있어야 Microsoft Sentinel을 쿼리하고 액세스할 수 있습니다.

    자세한 내용은 Microsoft Sentinel에서 Microsoft Sentinel 콘텐츠역할 및 권한 구성을 참조하세요.

Azure 활동 로그를 사용하여 감사

Microsoft Sentinel의 감사 로그는 Azure 활동 로그에서 유지 관리됩니다. 여기서 AzureActivity 테이블에는 Microsoft Sentinel 작업 영역에서 수행된 활동이 모두 포함됩니다.

Microsoft Sentinel을 사용하여 SOC 환경에서 활동을 감사할 때 AzureActivity 테이블을 사용합니다.

AzureActivity 테이블을 쿼리하려면 다음을 수행합니다.

  1. Sentinel 솔루션용 Azure 활동 솔루션을 설치하고 Azure 활동 데이터 커넥터를 연결하여 감사 이벤트 스트리밍을 새 테이블로 시작AzureActivity합니다.

  2. 다른 테이블과 마찬가지로 KQL(Kusto 쿼리 언어)을 사용하여 데이터를 쿼리합니다.

    • Azure Portal의 로그 페이지에서 이 테이블을 쿼리합니다.
    • Microsoft의 통합 보안 운영 플랫폼에서 조사 및 응답 > 헌팅 고급 헌팅> 페이지에서 이 테이블을 쿼리합니다.

    AzureActivity 테이블에는 Microsoft Sentinel을 포함한 많은 서비스의 데이터가 포함됩니다. Microsoft Sentinel의 데이터만 필터링하려면 다음 코드를 사용하여 쿼리를 시작합니다.

     AzureActivity
    | where OperationNameValue startswith "MICROSOFT.SECURITYINSIGHTS"
    

    예를 들어, 특정 분석 규칙을 편집하는 마지막 사용자를 확인하려면 다음 쿼리를 사용합니다(확인하려는 규칙의 규칙 ID로 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 대체).

    AzureActivity
    | where OperationNameValue startswith "MICROSOFT.SECURITYINSIGHTS/ALERTRULES/WRITE"
    | where Properties contains "alertRules/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    | project Caller , TimeGenerated , Properties
    

보고해야 하는 항목에 따라 더 많은 매개 변수를 쿼리에 추가하여 AzureActivities 테이블을 자세히 살펴보세요. 다음 섹션에서는 AzureActivity 테이블 데이터를 사용하여 감사할 때 사용할 다른 샘플 쿼리를 제공합니다.

자세한 내용은 Azure 활동 로그에 포함된 Microsoft Sentinel 데이터를 참조하세요.

지난 24시간 동안 특정 사용자가 수행한 모든 활동 찾기

다음 AzureActivity 테이블 쿼리는 지난 24시간 동안 특정 Microsoft Entra 사용자가 수행한 모든 활동을 나열합니다.

AzureActivity
| where OperationNameValue contains "SecurityInsights"
| where Caller == "[AzureAD username]"
| where TimeGenerated > ago(1d)

삭제 작업 모두 찾기

다음 AzureActivity 테이블 쿼리는 Microsoft Sentinel 작업 영역에서 수행된 삭제 작업을 모두 나열합니다.

AzureActivity
| where OperationNameValue contains "SecurityInsights"
| where OperationName contains "Delete"
| where ActivityStatusValue contains "Succeeded"
| project TimeGenerated, Caller, OperationName

Azure 활동 로그에 포함된 Microsoft Sentinel 데이터

Microsoft Sentinel의 감사 로그는 Azure 활동 로그에서 유지 관리되며, 다음과 같은 유형의 정보를 포함합니다.

연산 정보 유형
만들어짐 경고 규칙
사례 설명
인시던트 설명
저장된 검색
관심 목록
통합 문서
삭제됨 경고 규칙
책갈피
데이터 커넥터
인시던트
저장된 검색
설정
위협 인텔리전스 보고서
관심 목록
통합 문서
워크플로
업데이트됨 경고 규칙
책갈피
사례
데이터 커넥터
인시던트
인시던트 설명
위협 인텔리전스 보고서
통합 문서
워크플로

Azure 활동 로그를 이용하여 사용자 권한 부여 및 라이선스를 확인할 수도 있습니다. 예를 들어 다음 표에는 로그 데이터를 가져온 특정 리소스와 Azure 활동 로그에서 찾은 선택한 작업이 나열되어 있습니다.

작업 이름 리소스 종류
통합 문서 만들기 또는 업데이트 Microsoft.Insights/workbooks
통합 문서 삭제 Microsoft.Insights/workbooks
워크플로 설정 Microsoft.Logic/workflows
워크플로 삭제 Microsoft.Logic/workflows
저장된 검색 만들기 Microsoft.OperationalInsights/workspaces/savedSearches
저장된 검색 삭제 Microsoft.OperationalInsights/workspaces/savedSearches
경고 규칙 업데이트 Microsoft.SecurityInsights/alertRules
경고 규칙 삭제 Microsoft.SecurityInsights/alertRules
경고 규칙 응답 활동 업데이트 Microsoft.SecurityInsights/alertRules/actions
경고 규칙 응답 활동 삭제 Microsoft.SecurityInsights/alertRules/actions
책갈피 업데이트 Microsoft.SecurityInsights/bookmarks
책갈피 삭제 Microsoft.SecurityInsights/bookmarks
사례 업데이트 Microsoft.SecurityInsights/Cases
사례 조사 업데이트 Microsoft.SecurityInsights/Cases/investigations
사례 설명 만들기 Microsoft.SecurityInsights/Cases/comments
데이터 커넥터 업데이트 Microsoft.SecurityInsights/dataConnectors
데이터 커넥터 삭제 Microsoft.SecurityInsights/dataConnectors
업데이트 설정 Microsoft.SecurityInsights/settings

자세한 내용은 Azure 활동 로그 이벤트 스키마를 참조하세요.

LAQueryLogs를 사용하여 감사

LAQueryLogs 테이블은 Log Analytics에서 실행되는 로그 쿼리에 대한 세부 정보를 제공합니다. Log Analytics는 Microsoft Sentinel의 기본 데이터 저장소로 사용되므로, Microsoft Sentinel 작업 영역에서 LAQueryLogs 데이터를 수집하도록 시스템을 구성할 수 있습니다.

LAQueryLogs 데이터에 포함되는 정보는 다음과 같습니다.

  • 쿼리가 실행된 시기
  • Log Analytics에서 쿼리를 실행한 사람
  • Log Analytics에서 쿼리를 실행하는 데 사용된 도구(예: Microsoft Sentinel)
  • 쿼리 텍스트 자체
  • 각 쿼리 실행의 성능 데이터

참고 항목

  • LAQueryLogs 테이블에는 Microsoft Sentinel의 로그 블레이드에서 실행된 쿼리만 포함됩니다. 예약된 분석 규칙, 조사 그래프 사용, Microsoft Sentinel 헌팅 페이지 또는 Defender 포털의 고급 헌 페이지에서 실행되는 쿼리는 포함되지 않습니다.

  • 쿼리가 실행되는 시간 사이에 약간의 지연이 있을 수 있으며, 데이터가 LAQueryLogs 테이블에 채워집니다. 감사 데이터에 대한 LAQueryLogs 테이블을 쿼리하려면 5분 정도 대기하는 것이 좋습니다.

LAQueryLogs 테이블을 쿼리하려면 다음을 수행합니다.

  1. Log Analytics 작업 영역에서 LAQueryLogs 테이블은 기본적으로 사용하도록 설정되어 있지 않습니다. Microsoft Sentinel에서 감사할 때 LAQueryLogs 데이터를 사용하려면, 먼저 Log Analytics 작업 영역의 진단 설정 영역에서 LAQueryLogs를 사용하도록 설정합니다.

    자세한 내용은 Azure Monitor 로그의 쿼리 감사를 참조하세요.

  2. 그런 다음 다른 테이블과 같이 KQL을 사용하여 데이터를 쿼리합니다.

    예를 들어, 다음 쿼리는 지난 주에 실행된 쿼리 수를 날짜별로 보여 줍니다.

    LAQueryLogs
    | where TimeGenerated > ago(7d)
    | summarize events_count=count() by bin(TimeGenerated, 1d)
    

다음 섹션에서는 Microsoft Sentinel을 사용하여 SOC 환경에서 활동을 감사할 때 LAQueryLogs 테이블에서 실행할 다양한 샘플 쿼리를 보여 줍니다.

응답이 "OK"가 아닌 경우 실행되는 쿼리 수

다음 LAQueryLogs 테이블 쿼리는 200 OK의 HTTP 응답 이외의 다른 응답을 수신한, 실행된 쿼리 수를 보여 줍니다. 예를 들어 이 숫자에는 실행하지 못한 쿼리가 포함됩니다.

LAQueryLogs
| where ResponseCode != 200 
| count 

CPU를 많이 사용하는 쿼리에 대한 사용자 표시

다음 LAQueryLogs 테이블 쿼리는 사용한 CPU 및 쿼리 시간 길이를 기준으로 CPU를 가장 많이 사용하는 쿼리를 실행한 사용자를 나열합니다.

LAQueryLogs
|summarize arg_max(StatsCPUTimeMs, *) by AADClientId
| extend User = AADEmail, QueryRunTime = StatsCPUTimeMs
| project User, QueryRunTime, QueryText
| order by QueryRunTime desc

지난 주에 가장 많은 쿼리를 실행한 사용자 표시

다음 LAQueryLogs 테이블 쿼리는 지난 주에 가장 많은 쿼리를 실행한 사용자를 나열합니다.

LAQueryLogs
| where TimeGenerated > ago(7d)
| summarize events_count=count() by AADEmail
| extend UserPrincipalName = AADEmail, Queries = events_count
| join kind= leftouter (
    SigninLogs)
    on UserPrincipalName
| project UserDisplayName, UserPrincipalName, Queries
| summarize arg_max(Queries, *) by UserPrincipalName
| sort by Queries desc

Microsoft Sentinel 활동에 대한 경고 구성

Microsoft Sentinel 감사 리소스를 사용하여 사전 경고를 만들 수 있습니다.

예를 들어 Microsoft Sentinel 작업 영역에 중요한 테이블이 있는 경우 다음 쿼리를 사용하여 해당 테이블이 쿼리될 때마다 알림을 받을 수 있습니다.

LAQueryLogs
| where QueryText contains "[Name of sensitive table]"
| where TimeGenerated > ago(1d)
| extend User = AADEmail, Query = QueryText
| project User, Query

통합 문서, 규칙 및 플레이북을 사용하여 Microsoft Sentinel 모니터링

Microsoft Sentinel의 고유한 기능을 사용하여 Microsoft Sentinel 내에서 발생하는 이벤트 및 작업을 모니터링할 수 있습니다.

  • 통합 문서를 사용하여 모니터링 몇 가지 기본 제공 Microsoft Sentinel 통합 문서는 작업 영역에서 작업하는 사용자에 대한 정보, 사용 중인 분석 규칙, 가장 많이 다루는 MITRE 전술, 중단되거나 중지된 수집, SOC 팀 성능을 포함하여 작업 영역 활동을 모니터링하는 데 도움이 될 수 있습니다.

    자세한 내용은 Microsoft Sentinel 및 일반적으로 사용되는 Microsoft Sentinel 통합 문서의 통합 문서를 사용하여 데이터 시각화 및 모니터링을 참조하세요.

  • 수집 지연 감시 수집 지연에 대해 궁금한 사항이 있는 경우 분석 규칙에서 변수를 설정하여 지연을 나타냅니다.

    예를 들어 다음 분석 규칙은 결과에 중복이 포함되지 않도록 하고, 규칙을 실행할 때 로그가 누락되지 않도록 하는 데 도움이 될 수 있습니다.

    let ingestion_delay= 2min;let rule_look_back = 5min;CommonSecurityLog| where TimeGenerated >= ago(ingestion_delay + rule_look_back)| where ingestion_time() > (rule_look_back)
    - Calculating ingestion delay
      CommonSecurityLog| extend delay = ingestion_time() - TimeGenerated| summarize percentiles(delay,95,99) by DeviceVendor, DeviceProduct
    

    자세한 내용은 자동화 규칙을 사용하여 Microsoft Sentinel에서 인시던트 처리 자동화를 참조하세요.

  • 커넥터 상태 푸시 알림 솔루션 플레이북을 사용하여 데이터 커넥터 상태를 모니터링하여 중단 또는 중지된 수집을 감시하고, 커넥터가 데이터 수집을 중지하거나 머신에서 보고를 중지한 경우 알림을 보냅니다.

다음 단계

Microsoft Sentinel에서 작업 영역 감사 통합 문서를 사용하여 SOC 환경에서 활동을 감사합니다. 자세한 내용은 데이터 시각화 및 모니터링을 참조하세요.