監控分析規則的健康狀況並審核其完整性

為確保您的 Microsoft Sentinel 服務能全面、不中斷且無竄改的威脅偵測,請持續追蹤分析規則的健康狀況與完整性。 透過監控 執行洞察、查詢健康與稽核日誌,以及 手動重跑來測試和優化規則,保持它們的最佳運作。

為相關利害關係人設置健康與稽核事件通知,讓他們能採取行動。 例如,定義並發送電子郵件或 Microsoft Teams 訊息,在工單系統中建立新工單,等等。

本文說明如何利用 Microsoft Sentinel 的稽核與健康監控功能,從 Microsoft Sentinel 內部追蹤分析規則的健康狀況與完整性。

如需了解規則洞察與手動重執行規則,請參閱 「監控並優化排程分析規則的執行」。

摘要

  • Microsoft Sentinel 分析規則健康日誌:

    • 這份日誌記錄了分析規則執行過程的事件,以及這些執行的最終結果——如果成功還是失敗,以及原因。
    • 日誌也記錄了每次執行分析規則的過程:
      • 規則查詢捕捉了多少事件。
      • 事件數量是否超過規則定義的門檻,導致規則觸發警報。

    這些日誌會被收集在 Log Analytics 的 SentinelHealth 表格中。

  • Microsoft Sentinel analytics rule audit logs:

    • 此日誌記錄了對任何分析規則所做的變更事件,包括以下細節:
      • 被更改的規則名稱。
      • 規則的哪些屬性被更改了。
      • 規則設定在變更前後的狀態。
      • 是那個做出改變的使用者或身份。
      • 來源 IP 以及變更的日期/時間。
      • ... 以及更多。

    這些日誌會被收集在 Log Analytics 的 SentinelAudit 表格中。

使用 SentinelHealth 和 SentinelAudit 的資料表

要從前述表格取得稽核與健康資料,您必須先在您的工作空間啟用 Microsoft Sentinel 健康功能。 欲了解更多資訊,請參閱「開啟 Microsoft Sentinel 的稽核與健康監控」。

一旦開啟健康功能, SentinelHealth 資料表會在自動化規則與操作手冊中產生的第一個成功或失敗事件時建立。

了解 SentinelHealth 與 SentinelAudit 桌事件

SentinelHealth 表格記錄以下類型的分析規則健康事件:

  • 排程執行分析規則
  • NRT 分析規則執行

欲了解更多資訊,請參閱 SentinelHealth 表格欄位結構

SentinelAudit 表格記錄以下類型的分析規則稽核事件:

  • 建立或更新分析規則
  • 分析規則已刪除

欲了解更多資訊,請參閱 SentinelAudit 表格欄位結構

執行查詢以偵測健康與完整性問題

為了達到最佳效果,建議先在 這些表格的預設函式_SentinelHealth () _SentinelAudit () 上建立查詢,而不是直接查詢資料表。 這些函式能在資料表結構有變動時,維持查詢的向下相容性。

第一步,篩選與分析規則相關的資料表。 使用參數 SentinelResourceType

_SentinelHealth()
| where SentinelResourceType == "Analytics Rule"

如果你願意,也可以進一步篩選特定類型的分析規則。 請使用這個 SentinelResourceKind 參數。

| where SentinelResourceKind == "Scheduled"

# OR

| where SentinelResourceKind == "NRT"

以下是一些範例問題,幫助你開始:

  • 尋找「自動停用」的規則:

    _SentinelHealth()
    | where SentinelResourceType == "Analytics Rule"
    | where Reason == "The analytics rule is disabled and was not executed."
    
  • 依原因數出成功或失敗的規則與跑法:

    _SentinelHealth()
    | where SentinelResourceType == "Analytics Rule"
    | summarize Occurrence=count(), Unique_rule=dcount(SentinelResourceId) by Status, Reason
    
  • 查找規則刪除活動:

    _SentinelAudit()
    | where SentinelResourceType =="Analytic Rule"
    | where Description =="Analytics rule deleted"
    
  • 依規則名稱和活動名稱查找規則上的活動:

    _SentinelAudit()
    | where SentinelResourceType =="Analytic Rule"
    | summarize Count= count() by RuleName=SentinelResourceName, Activity=Description
    
  • 依照來電者姓名 (執行該活動的身份,查找規則上的活動) :

    _SentinelAudit()
    | where SentinelResourceType =="Analytic Rule"
    | extend Caller= tostring(ExtendedProperties.CallerName)
    | summarize Count = count() by Caller, Activity=Description
    

請參閱 Kusto 文件中前述範例中使用的以下項目的更多資訊:

欲了解更多關於KQL的資訊,請參閱Kusto 查詢語言 (KQL) 概述

其他資源:

排定規則

當排程規則失敗時,會在同一個視窗內再重試五次。 只要六次嘗試中成功一次,規則不會跳過該視窗或錯過警報。

六次嘗試中若有一次失敗,則表示警報觸發延遲。 以下查詢計算精確延遲:

_SentinelHealth()
| where SentinelResourceType == @"Analytics Rule" 
| where SentinelResourceKind == "Scheduled"
| extend startTime = todatetime(ExtendedProperties["QueryStartTimeUTC"]), executionStart = todatetime(ExtendedProperties["executionStart"])
| extend delay = datetime_diff('minute', startTime, executionStart)

若要尋找完全失敗 (也就是跳過) 的視窗,請使用以下查詢:

_SentinelHealth()| where SentinelResourceType == @"Analytics Rule" 
| where SentinelResourceKind == "Scheduled"
| where Status != "Success"
| extend startTime = tostring(ExtendedProperties["QueryStartTimeUTC"])
| summarize failuresByStartTime = count() by startTime, SentinelResourceId
| where failuresByStartTime == 6
| summarize count() by SentinelResourceId

此查詢會尋找排程分析規則執行,但六次重試皆未成功的情況。 你可以透過看規則視窗的開始時間來辨識重試,因為重試總是看原始開始時間。 此查詢會給出每個分析規則跳過的視窗數量。 我們預期跳過的窗戶會很罕見。 如果你發現分析規則中跳過視窗,請利用查詢來了解這些規則的失敗原因,以及故障原因和解決方法的表格。

NRT規則

NRT 規則的重試機制與排程規則的行為不同。 若規則未執行,系統也會將下一輪失敗視窗視為一分鐘後 () 。 這種行為會持續多達60次故障 (一小時) 。

由於某次運行的一次失敗只反映一分鐘的延遲,所以不要只看單一故障。 相反地,請使用以下查詢來監控每個分析規則的延遲:

_SentinelHealth()
| where SentinelResourceKind == "NRT"
| extend startTime = todatetime(ExtendedProperties["QueryStartTimeUTC"]), endTime = todatetime(ExtendedProperties["QueryEndTimeUTC"]), alertsCreated = toint(ExtendedProperties["AlertsGeneratedAmount"])
| where alertsCreated == 0 
| extend ruleDelay = datetime_diff('minute', endTime, startTime)
| project TimeGenerated, ruleDelay, SentinelResourceId
| render timechart

你也可以定義分析規則,在重大延遲時觸發警報,例如當 NRT 規則延遲超過 10 分鐘) (。

狀態、錯誤與建議步驟

無論是排 程分析規則執行 還是 NRT 分析規則執行,你可能會看到以下任一狀態與描述:

  • 成功:規則成功執行,產生 <n> 警示。

  • 成功:規則執行成功,但未達到產生警報所需的 (<n>) 門檻。

  • 失敗:這些說明說明規則失敗及其可採取的措施。

    描述 補救
    執行查詢時發生內部伺服器錯誤。
    查詢執行時間過時了。
    查詢中提到的表格未被找到。 確認相關資料來源是否已連接。
    執行查詢時發生語意錯誤。 試著透過編輯並儲存分析規則來重設 (,但不改任何設定) 。
    查詢所呼叫的函式會以保留字命名。 移除或重新命名函式。
    執行查詢時發生語法錯誤。 試著透過編輯並儲存分析規則來重設 (,但不改任何設定) 。
    工作空間根本不存在。
    此查詢使用過多系統資源,導致無法執行。 檢視並調整分析規則。 請參閱我們的 Kusto 查詢語言概述最佳實務文件。
    查詢呼叫的函式找不到。 確認你工作空間中所有查詢呼叫的函式是否存在。
    查詢中使用的工作區找不到。 確認查詢中的所有工作空間都存在。
    你沒有執行這個查詢的權限。 試著透過編輯並儲存分析規則來重設 (,但不改任何設定) 。
    你沒有查詢中一個或多個資源的存取權限。
    查詢指向一條未被找到的儲存路徑。
    查詢被拒絕存取儲存路徑。
    此工作區定義多個同名函式。 移除或重新命名冗餘函式,並透過編輯並儲存來重置規則。
    這個查詢沒有回傳任何結果。
    此查詢不允許多個結果集。
    查詢結果中每列欄位數量不一致。
    由於資料擷取時間過長,該規則的執行被延遲。
    該規則的執行因暫時性問題而延遲。
    由於暫時性問題,警報未被加強。
    警報未被強化,是因為實體映射的問題。
    < 數量>由於警報大小限制,警報名稱>中的實體被刪除<。
    < 編號> 由於實體映射問題,警報 <名稱> 中的實體被刪除。
    查詢產生<事件數量>,超過<了規則類型>規則中每列事件分組警報設定中允許<的最大結果限制>。 每列警報為第一個 <限制-1> 事件產生,並產生額外的彙總警報以涵蓋所有事件。
    - <number> = 查詢回傳的事件數量
    - <限制> = 目前預定規則 150 次警報,NRT 規則 30 次
    - <規則類型> = 排程或 NRT

使用審計與健康監測工作手冊

  1. 要讓您的工作簿在工作區中可用,請安裝 Microsoft Sentinel 內容中心的工作簿解決方案:

    1. 從Microsoft Sentinel入口網站,從內容管理選單選擇內容中心 (預覽)

    2. 內容中心,搜尋欄輸入健康,並從獨立工作簿解決方案中選擇「Analytics Health & Audit」。

      Content Hub 分析健康工作簿選集截圖。

    3. 從細節欄選 「安裝 」,然後選擇「 儲存 」,取而代之。

  2. 當解決方案顯示已安裝時,請從威脅管理選單中選擇工作簿

    顯示分析健康工作簿解決方案已從內容中心安裝的截圖。

  3. 工作簿 畫廊中,選擇 範本 標籤,在搜尋欄輸入 健康 狀態,並從結果中選擇 分析健康 & 審核

    從範本畫廊中選擇分析健康工作簿的截圖。

  4. 在細節欄選 「儲存 」以建立可編輯且可用的工作簿副本。 當副本建立完成後,選擇 檢視已儲存的工作簿

  5. 進入工作簿後,先選擇你想查看的 訂閱工作區 (它們可能已經) 被選中,然後設定時間 範圍(TimeRange )來根據你的需求篩選資料。 使用 「Show 幫助 」切換,顯示工作簿的即時說明。

    分析規則健康工作簿總覽標籤的截圖。

這本工作簿有三個分頁區塊:

概觀索引標籤

概覽標籤顯示健康狀況與稽核摘要:

  • 分析規則執行狀態的健康摘要:執行次數、成功與失敗,以及失敗事件細節。
  • 在所選工作空間中,對分析規則的活動進行稽核摘要:隨時間變化的活動數量、按類型劃分的活動數量,以及依規則不同類型的活動數量。

健康標籤

健康分頁讓你探索特定的健康事件。

分析健康工作簿中健康分頁選擇的截圖。

  • 據狀態 (成功或失敗) 及 規則類型 (排程或 NRT) 來過濾整頁資料。
  • 根據狀態篩選) , (選取期間內成功與失敗規則執行的趨勢。 你可以「時間刷子」趨勢圖,看看原始時間範圍的子集。 分析健康工作簿中分析規則隨時間運行的截圖。
  • 請依 照理由篩選頁面的其他部分。
  • 請參閱所有分析規則的總跑數,依狀態比例顯示於圓餅圖中。
  • 接著是一張表格,顯示了執行過的獨特分析規則數量,依規則類型和狀態分類。
    • 選擇一個狀態以篩選該狀態的剩餘圖表。
    • 請選擇「清除選取」圖示, (圖表右上角看起來像是) 「復原」圖示即可清除篩選器。 分析健康工作簿中依狀態和類型執行規則數量的截圖。
  • 請參閱每個狀態,並列出可能的理由數量。 (僅展示在所選時間範圍內所代表的理由 )
    • 選擇一個狀態以篩選該狀態的剩餘圖表。
    • 請選擇「清除選取」圖示, (圖表右上角看起來像是) 「復原」圖示即可清除篩選器。 分析健康工作簿中依狀態列出的多個獨特原因截圖。
  • 接著,請參考這些原因的清單,包括總規則執行次數和執行的獨特規則數量。
    • 選擇一個理由來篩選以下圖表,正因如此。
    • 請選擇「清除選取」圖示, (圖表右上角看起來像是) 「復原」圖示即可清除篩選器。 分析健康工作簿中因獨特原因執行規則的截圖。
  • 接著是唯一執行的分析規則清單,並附有最新結果及成功與失敗趨勢, (依據選擇的狀態篩選) 。
    • 選擇一條規則深入挖掘,顯示一個新表格,列出該規則在所選時間範圍內的所有運行 () 。
    • 請選擇「清除選取」圖示, (圖表右上角看起來像是) 「復原」圖示來清除該表格。 分析健康工作簿中執行的獨特規則清單截圖,包含狀態與趨勢線。
  • 如果你在清單中選擇規則,會顯示一個新的表格,裡面有該規則的健康細節。 分析健康工作簿中選定分析規則執行清單的截圖。

稽核標籤

審計 分頁 可以讓你深入分析特定的審計事件。

分析健康工作簿中審計標籤選取的截圖。

  • 照審核規則類型 (排程/Fusion) 來過濾整頁資料。
  • 查看選定期間內分析規則中經審計活動的趨勢。 你可以「時間刷子」趨勢圖,看看原始時間範圍的子集。 分析健康工作簿中趨勢審計活動的截圖。
  • 查看依 活動規則類型劃分的審核事件數量。
    • 選擇一項活動以篩選該活動的以下圖表。
    • 請選擇「清除選取」圖示, (圖表右上角看起來像是) 「復原」圖示即可清除篩選器。 分析健康工作簿中依活動與類型統計稽核事件的截圖。
  • 請參閱規則 名稱下的審核事件數量。
    • 選擇規則名稱以篩選該規則的表格,並向下延伸顯示該規則在所選時間範圍內所有活動 (的新表格) 。 (請看下面的截圖。)
    • 請選擇「清除選取」圖示, (圖表右上角看起來像是) 「復原」圖示即可清除篩選器。 分析健康工作簿中依規則名稱和呼叫者整理的審核事件截圖。
  • 查看執行該活動) 的來 電者 (身份審核事件數量。
  • 如果您在前述圖表中選擇了規則名稱,會顯示另一張表格顯示該規則的審核 活動 。 選擇 ExtendedProperties 欄位中以連結出現的值,開啟側面板,顯示規則變更。 Analytics Health 工作簿中選定規則的稽核活動截圖。

後續步驟