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 보안 이벤트를 쿼리하려면 다음을 수행합니다.
Log Analytics 작업 영역에서 Logs>AzureSecurityOfThings>SecurityAlert로 이동합니다.
오른쪽의 쿼리 편집기에서 KQL 쿼리를 입력하여 확인하려는 경고를 표시합니다.
실행을 선택하여 쿼리와 일치하는 경고를 표시합니다.
예시:
참고 항목
경고뿐만 아니라, 이 동일한 절차를 사용하여 권장 사항 또는 원시 이벤트 데이터도 쿼리할 수 있습니다.
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;