다음을 통해 공유


OS 기준(CIS 벤치마크 기반) 권장 사항 조사

OS 기준 권장 사항을 기반으로 하는 기본 및 고급 조사를 수행합니다.

기본 OS 기준 보안 권장 사항 조사

Azure Portal에서 IoT용 Defender로 이동하여 OS 기준 권장 사항을 조사할 수 있습니다. 자세한 내용은 보안 권장 사항을 조사하는 방법을 참조하세요.

고급 OS 기준 보안 권장 사항 조사

이 섹션에서는 OS 기준 테스트 결과를 보다 잘 이해하고 Azure Log Analytics에서 이벤트를 쿼리하는 방법을 설명합니다.

필수 구성 요소:

고급 OS 기준 보안 권장 사항 조사는 Azure Log Analytics를 사용하는 경우에만 지원되며, Defender for IoT를 Log Analytics 작업 영역에 연결한 후 계속 진행해야 합니다.

자세한 내용은 Microsoft Defender for IoT 에이전트 기반 솔루션 구성을 참조하세요.

경고를 위해 Log Analytics에서 IoT 보안 이벤트를 쿼리하려면 다음을 수행합니다.

  1. Log Analytics 작업 영역에서 Logs>AzureSecurityOfThings>SecurityAlert로 이동합니다.

  2. 오른쪽의 쿼리 편집기에서 KQL 쿼리를 입력하여 확인하려는 경고를 표시합니다.

  3. 실행을 선택하여 쿼리와 일치하는 경고를 표시합니다.

예시:

Defender for I o T를 사용하는 Log Analytics 작업 영역의 스크린샷.

참고 항목

경고뿐만 아니라, 이 동일한 절차를 사용하여 권장 사항 또는 원시 이벤트 데이터도 쿼리할 수 있습니다.

OS 기준 리소스를 조사하는 데 유용한 쿼리는 다음과 같습니다.

참고 항목

다음 쿼리 각각에서 <device-id>를 디바이스에 제공한 이름으로 바꿔야 합니다.

최신 정보 검색

  • 디바이스 플릿 실패: 이 쿼리를 실행하여 디바이스 플릿에서 실패한 검사에 대한 최신 정보를 검색합니다.

    let lastDates = SecurityIoTRawEvent |
    where RawEventName == "Baseline" |
    summarize TimeStamp=max(TimeStamp) by DeviceId;
    lastDates | join kind=inner (SecurityIoTRawEvent) on TimeStamp, DeviceId |
    extend event = parse_json(EventDetails) |
    where event.BaselineCheckResult == "FAIL" |
    project DeviceId, event.BaselineCheckId, event.BaselineCheckDescription
    
  • 특정 디바이스 실패 - 이 쿼리를 실행하여 특정 디바이스에서 실패한 검사에 대한 최신 정보를 검색합니다.

    let id = SecurityIoTRawEvent | 
    extend IoTRawEventId = extractjson("$.EventId", EventDetails, typeof(string)) |
    where TimeGenerated <= now() |
    where RawEventName == "Baseline" |
    where DeviceId == "<device-id>" |
    summarize arg_max(TimeGenerated, IoTRawEventId) |
    project IoTRawEventId;
    SecurityIoTRawEvent |
    extend IoTRawEventId = extractjson("$.EventId", EventDetails, typeof(string)), extraDetails = todynamic(EventDetails) |
    where IoTRawEventId == toscalar(id) |
    where extraDetails.BaselineCheckResult == "FAIL" |
    project DeviceId, CceId = extraDetails.BaselineCheckId, Description = extraDetails.BaselineCheckDescription
    
  • 특정 디바이스 오류: 다음 쿼리를 실행하여 특정 디바이스에서 오류가 있는 검사에 대한 최신 정보를 검색합니다.

    let id = SecurityIoTRawEvent |
    extend IoTRawEventId = extractjson("$.EventId", EventDetails, typeof(string)) |
    where TimeGenerated <= now() |
    where RawEventName == "Baseline" |
    where DeviceId == "<device-id>" |
    summarize arg_max(TimeGenerated, IoTRawEventId) |
    project IoTRawEventId;
    SecurityIoTRawEvent |
    extend IoTRawEventId = extractjson("$.EventId", EventDetails, typeof(string)), extraDetails = todynamic(EventDetails) |
    where IoTRawEventId == toscalar(id) |
    where extraDetails.BaselineCheckResult == "ERROR" |
    project DeviceId, CceId = extraDetails.BaselineCheckId, Description = extraDetails.BaselineCheckDescription
    
  • 특정 검사에 실패한 디바이스 플릿의 디바이스 목록 업데이트 - 이 쿼리를 실행하여 (디바이스 플릿에서) 특정 검사에 실패한 디바이스의 업데이트된 목록을 검색합니다.

    let lastDates = SecurityIoTRawEvent |
    where RawEventName == "Baseline" |
    summarize TimeStamp=max(TimeStamp) by DeviceId;
    lastDates | join kind=inner (SecurityIoTRawEvent) on TimeStamp, DeviceId |
    extend event = parse_json(EventDetails) |
    where event.BaselineCheckResult == "FAIL" |
    where event.BaselineCheckId contains "6.2.8" |
    project DeviceId;
    

다음 단계

보안 권장 사항 조사