你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

调查 OS 基线(基于 CIS 基准)建议

基于 OS 基线建议执行基本和高级调查。

基本 OS 基线安全建议调查

可以通过导航到 Azure 门户中的 Defender for IoT 来调查 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 工作区中,转到“日志”>“AzureSecurityOfThings”>“SecurityAlert”。

  2. 在右侧的查询编辑器中,输入 KQL 查询以显示要查看的警报。

  3. 选择“运行”以显示与查询匹配的警报。

例如:

带有 Defender for IoT 警报查询的 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;
    

后续步骤

调查安全建议