Анализ базовой (на основе эталона CIS) рекомендации ОС

Выполняйте базовый и расширенный анализ на основе базовых рекомендаций ОС.

Базовый анализ базовой рекомендации по безопасности ОС

Для анализа базовых рекомендаций ОС перейдите в раздел Defender для Интернета вещей на портале Azure. Дополнительные сведения см. в разделе Анализ рекомендаций по безопасности.

Расширенный анализ базовой рекомендации по безопасности ОС

Этот раздел содержит сведения о более глубоком понимании результатов базового теста ОС и запросе событий в Azure Log Analytics.

Необходимые условия:

Расширенный анализ базовых рекомендаций по безопасности ОС поддерживается только с помощью Azure Log Analytics, и для его проведения необходимо подключить Defender для Интернета вещей к рабочей области Log Analytics.

Дополнительные сведения см. в разделе Настройка решения на основе агента Microsoft Defender для Интернета вещей.

Чтобы запросить события безопасности Интернета вещей в Log Analytics для оповещений, выполните следующие действия:

  1. В рабочей области Log Analytics перейдите в раздел Logs>AzureSecurityOfThings>SecurityAlert.

  2. В редакторе запросов справа введите запрос KQL для отображения оповещений, которые вы хотите просмотреть.

  3. Нажмите кнопку Выполнить, чтобы отобразить оповещения, соответствующие вашему запросу.

Например:

Снимок экрана: рабочая область Log Analytics с запросом оповещения Интернета вещей.

Примечание.

Помимо оповещений, эту же процедуру можно использовать для запроса рекомендаций или необработанных данных о событиях.

Полезные запросы для анализа базовых ресурсов ОС

Примечание.

Обязательно замените <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;
    

Следующие шаги

Анализ рекомендаций по безопасности.