OS ベースライン (CIS ベンチマークに基づく) の推奨事項を調査する
OS ベースラインの推奨事項に基づいて、基本的および高度な調査を行います。
基本的な OS ベースライン セキュリティに関する推奨事項の調査
Azure portal の 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 ベースライン リソースを調査するための便利なクエリ
Note
次の各クエリでは、<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;