你当前正在访问 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 安全事件以获取警报:
在 Log Analytics 工作区中,转到“日志”>“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;