共用方式為


監視狀況,並稽核分析規則的完整性

若要確保 Microsoft Sentinel 服務中全面、不中斷且無竄改的威脅偵測,請追蹤分析規則的健康情況和完整性。 透過監控其 執行見解、查詢運作狀態和稽核日誌,以及 使用手動重新執行來測試和最佳化規則,讓它們保持最佳運作。

為相關利害關係人設定健康情況和稽核事件的通知,這些相關利害關係人就可以採取行動。 例如,定義和傳送電子郵件或 Microsoft Teams 訊息、在票證系統中建立新票證等。

本文說明如何使用 Microsoft Sentinel 的稽核與狀況監控功能 (部分內容可能是機器或 AI 翻譯),在 Microsoft Sentinel 內部追蹤分析規則的健康情況與完整性。

如需規則深入解析和手動重新執行規則的資訊,請參閱監視並優化排程分析規則的執行 (部分內容可能是機器或 AI 翻譯) 的執行。

摘要

  • Microsoft Sentinel 分析規則健康情況記錄:

    • 此記錄會擷取記錄分析自動化規則執行的事件,以及這些執行的最終結果——如果成功或失敗,以及如果失敗,原因為何。
    • 記錄也會針對每個執行的分析規則記錄:
      • 規則的查詢擷取了多少事件。
      • 事件數目是否通過規則中定義的閾值,導致規則引發警示。

    這些記錄會收集在 Log Analytics 的 SentinelHealth 資料表中。

  • Microsoft Sentinel 分析規則稽核記錄:

    • 此記錄會擷取記錄對任何分析規則所做之變更的事件,包括下列詳細資料:
      • 已變更之規則的名稱。
      • 規則的哪些屬性已變更。
      • 變更前後的規則設定狀態。
      • 進行變更的使用者或身分識別。
      • 變更的來源 IP 和日期/時間。
      • 等等。

    這些記錄會收集在 Log Analytics 的 SentinelAudit 資料表中。

使用 SentinelHealth 和 SentinelAudit 運算列表

若要從稍早所述的資料表取得稽核和健康情況資料,您必須先開啟工作區的 Microsoft Sentinel 健康情況功能。 如需詳細資訊,請參閱開 啟Microsoft Sentinel 的稽核和狀況監控 (部分內容可能是機器或 AI 翻譯)。

開啟健康情況功能後,自動化規則和劇本產生第一個成功或失敗事件時會建立 SentinelHealth 資料表。

了解 SentinelHealth 和 SentinelAudit 資料表事件

SentinelHealth 資料表會記錄下列類型的分析規則健康事件:

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

如需詳細資訊,請參閱 SentinelHealth 資料表資料行結構描述

SentinelAudit 資料表會記錄下列類型的分析規則稽核事件:

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

如需詳細資訊,請參閱 SentinelAudit 資料表資料行結構描述 (部分內容可能是機器或 AI 翻譯)。

執行查詢以偵測健康情況和完整性問題

為獲得最佳結果,請在這些資料表的 預先建置函數_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 查詢語言概觀 (部分內容可能是機器或 AI 翻譯) 和最佳做法 (部分內容可能是機器或 AI 翻譯) 文件。
    找不到查詢所呼叫的函式。 請確認您的工作區中是否存在查詢所呼叫的所有函式。
    找不到查詢中使用的工作區。 確認查詢中的所有工作區都存在。
    您沒有執行此查詢的權限。 請編輯並儲存分析規則,嘗試重設分析規則 (而不變更任何設定)。
    您沒有查詢中一或多個資源的存取權限。
    查詢所指的是一個找不到的儲存路徑。
    查詢遭拒存取儲存體路徑。
    在此工作區中定義了多個具有相同名稱的函式。 移除備援函式或加以重新命名,並藉由編輯並儲存規則來重設規則。
    此查詢未傳回任何結果。
    此查詢中不允許多個結果集。
    查詢結果包含每個資料列的欄位數目不一致。
    規則的執行因擷取時間長而延遲。
    規則的執行因暫時性問題而發生延遲。
    由於暫時性問題,警示未擴充。
    由於實體對應問題,警示未擴充。
    共有 <number> 個實體在警示 <name> 中遭捨棄,因警示大小限制為 32 KB。
    共有 <number> 個實體在警示 <name> 中遭移除,因實體映射問題。
    查詢結果產生了 <number> 個事件,此數量超過了 <rule type> 規則在「每行一則警示」事件群組設定下允許的最大結果數 <limit>。 每行警示針對前 <limit-1> 個事件產生,並額外產生一則彙總警示以涵蓋所有事件。
    - <number> = 查詢所傳回的事件數目
    - <limit> = 目前排程規則的 150 個警示,NRT 規則為 30 個
    - <rule type> = 已排程或 NRT

使用稽核和狀況監控監視活頁簿

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

    1. 從 Microsoft Sentinel 入口網站,從 [內容管理] 功能表中選取 [內容中樞 (預覽)]

    2. 在 [內容中樞] 中,於搜尋列輸入「健康情況」,並從結果中「獨立」類別下的「活頁簿」解決方案中,選取 [分析健康情況與稽核]

      從內容中樞選取分析健康情況活頁簿的螢幕擷取畫面。

    3. 從詳細資料窗格中選取 [安裝],然後選取出現在其位置的 [儲存]

  2. 當解決方案指出已安裝時,請從 [威脅管理] 功能選取 [Workbooks]

    顯示分析健康情況活頁簿解決方案已從內容中樞安裝的螢幕擷取畫面。

  3. 在 [活頁簿] 資源庫中,選取 [範本] 索引標籤,在搜尋列中輸入「健康情況」,然後從結果中選取 [分析健康情況與稽核]

    從範本資源庫選取分析健康情況活頁簿的螢幕擷取畫面。

  4. 在詳細資料窗格中選取 [儲存],以建立活頁簿的可編輯和可用複本。 建立複本時,選取 [檢視已儲存的活頁簿]

  5. 進入活頁簿之後,請先選取您要檢視的 訂用帳戶工作區 (可能已選取),然後定義 TimeRange 以根據您的需求篩選資料。 使用 [顯示說明] 切換來顯示活頁簿的原有說明。

    分析規則健康情況活頁簿概觀索引標籤的螢幕擷取畫面。

此活頁簿有三個索引標籤區段:

概觀索引標籤

[概觀] 索引標籤會顯示健康情況和稽核摘要:

  • 選取工作區中分析規則執行狀態的健康情況摘要:執行次數、成功和失敗數,以及失敗事件的詳細資料。
  • 所選取工作區中分析規則活動的稽核摘要:隨時間變化的活動數、活動類型分布,以及各種規則下不同類型的活動數。

[健康情況] 索引標籤

「健康情況」索引標籤可讓您探索特定的健康情況事件。

分析健康情況活頁簿中選取項目健康情況索引標籤的螢幕擷取畫面。

  • 狀態 (成功或失敗) 和 規則型別 (排程或 NRT) 篩選整個頁面資料。
  • 查看所選時段內成功和失敗的規則執行趨勢 (取決於狀態篩選器)。 您可以對趨勢圖進行「時間刷選」,以檢視原始時間範圍的子集。 分析健康情況活頁簿中分析規則隨時間執行的螢幕擷取畫面。
  • 原因篩選頁面的其餘部分。
  • 查看所有分析規則的總執行次數,並以圓形圖按狀態比例呈現。
  • 以下資料表顯示已執行的唯一分析規則數量,並按規則類型與狀態進行分類。
    • 選擇狀態以篩選該狀態的剩餘圖表。
    • 清除篩選條件時,請選取圖表右上角的 [清除選取範圍] 圖示 (類似 [復原] 圖示)。 分析健康情況活頁簿中按狀態和類型執行規則數量的螢幕擷取畫面。
  • 查看每個狀態,以及該狀態可能的原因數量。 (只會顯示在所選時間範圍內的執行活動中出現的原因。)
    • 選擇狀態以篩選該狀態的剩餘圖表。
    • 清除篩選條件時,請選取圖表右上角的 [清除選取範圍] 圖示 (類似 [復原] 圖示)。 分析健康情況活頁簿中按狀態劃分的唯一原因數量螢幕擷取畫面。
  • 接下來,請參閱這些原因的清單,其中包含規則執行次數的總計,以及實際執行的唯一規則數量。
    • 請選取一個原因,以便依該原因篩選下列圖表。
    • 清除篩選條件時,請選取圖表右上角的 [清除選取範圍] 圖示 (類似 [復原] 圖示)。 分析健康情況活頁簿中以唯一原因執行規則的螢幕擷取畫面。
  • 之後是執行的唯一分析規則清單,其中包含其成功和失敗的最新結果和趨勢線(取決於選取的狀態來篩選清單)。
    • 選取要向下切入的規則,並顯示具有該規則所有執行的資料表 (在選取的時間範圍內)。
    • 選取圖表右上角的 [清除選取範圍] 圖示來清除該資料表 (類似 [復原] 圖示)。 分析健康情況活頁簿中已執行之唯一規則清單的螢幕擷取畫面,包含狀態與趨勢線。
  • 如果您在清單中選取規則,則會出現一個新表格,其中包含所選規則的健全狀況詳細資料。 分析健康情況活頁簿中所選取分析規則執行清單的螢幕擷取畫面。

稽核索引標籤

[稽核] 索引標籤可讓您向下切入至特定的稽核事件。

分析健康情況活頁簿中選取項目稽核索引標籤的螢幕擷取畫面。

  • 稽核規則類型 (已排程/融合) 篩選整個頁面資料。
  • 查看所選時段內分析規則上稽核活動的趨勢。 您可以對趨勢圖進行「時間刷選」,以檢視原始時間範圍的子集。 分析健康情況活頁簿中趨勢稽核活動的螢幕擷取畫面。
  • 請參閱稽核的事件數目,按「活動」和「規則類型」細分。
    • 請選取一項活動,以將下列圖表篩選至該活動。
    • 清除篩選條件時,請選取圖表右上角的 [清除選取範圍] 圖示 (類似 [復原] 圖示)。 分析健康情況活頁簿中按活動與類型劃分的稽核事件計數螢幕擷取畫面。
  • 請參閱依規則名稱稽核的事件數目。
    • 選擇規則名稱以篩選下列資料表中的該規則,然後向下切入並顯示具有該規則上所有活動的新資料表 (在選取的時間範圍內)。 (請參閱下列螢幕擷取畫面之後。)
    • 清除篩選條件時,請選取圖表右上角的 [清除選取範圍] 圖示 (類似 [復原] 圖示)。 分析健康情況活頁簿中規則名稱和呼叫端稽核事件的螢幕擷取畫面。
  • 查看呼叫端 (執行活動的身分識別) 所稽核的事件數目。
  • 如果您在上一個圖表中選取了規則名稱,則會出現另一個表格,其中顯示該規則的稽核 活動 。 選取 [ExtendedProperties] 資料行中顯示為連結的值,以開啟側邊面板,顯示對規則所做的變更。 分析健康情況活頁簿中所選規則的稽核活動螢幕擷取畫面。

後續步驟