為確保您的 Microsoft Sentinel 服務能全面、不中斷且無竄改的威脅偵測,請持續追蹤分析規則的健康狀況與完整性。 透過監控 分析規則執行洞察、查詢健康與稽核日誌,以及 手動重跑測試與優化分析規則,保持最佳運作。
為相關利害關係人設置健康與稽核事件通知,讓他們能採取行動。 例如,定義並發送電子郵件或 Microsoft Teams 訊息,在工單系統中建立新工單,等等。
本文說明如何在 Microsoft Sentinel 中使用 Microsoft Sentinel 的稽核與健康監控功能,從 Microsoft Sentinel 內部追蹤分析規則的健康狀況與完整性。
如需了解規則洞察與手動重執行規則,請參閱 「監控並優化排程分析規則的執行」。
摘要
Microsoft Sentinel 提供兩種類型的日誌用於監控分析規則:健康日誌與稽核日誌。 以下章節將總結每筆日誌所捕捉的內容及資料存放地點。
Microsoft Sentinel 分析規則健全狀態記錄:
- 這份日誌記錄了分析規則執行過程的事件,以及這些執行的最終結果——如果成功還是失敗,以及原因。
- 日誌也記錄了每次執行分析規則的過程:
- 規則查詢捕捉了多少事件。
- 事件數量是否超過規則定義的門檻,導致規則觸發警報。
這些日誌會被收集在 Log Analytics 的 SentinelHealth 表格中。
Microsoft Sentinel 分析規則稽核記錄:
- 此日誌記錄了對任何分析規則所做的變更事件,包括以下細節:
- 被更改的規則名稱。
- 規則的哪些屬性被更改了。
- 變更前後的規則設定狀態。
- 進行變更的使用者或身分。
- 來源 IP 以及變更的日期/時間。
- ... 以及更多。
這些日誌會被收集在 Log Analytics 的 SentinelAudit 表格中。
- 此日誌記錄了對任何分析規則所做的變更事件,包括以下細節:
使用 SentinelHealth 和 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 表格中找到規則刪除活動。 此查詢會回傳分析規則被刪除的審計紀錄,讓您能追蹤是誰以及何時移除了該規則:
_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 運算子與函式,請參閱 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 查詢語言、 Kusto 查詢語言概述 及 最佳實務 文件。 找不到查詢所呼叫的函式。 確認你工作空間中所有查詢呼叫的函式是否存在。 查詢中使用的工作區找不到。 確認查詢中的所有工作空間都存在。 你沒有執行這個查詢的權限。 試著透過編輯並儲存分析規則來重設 (,但不改任何設定) 。 你沒有查詢中一個或多個資源的存取權限。 查詢指向一條未被找到的儲存路徑。 查詢被拒絕存取儲存路徑。 此工作區定義多個同名函式。 移除或重新命名冗餘函式,並透過編輯並儲存來重置規則。 這個查詢沒有回傳任何結果。 此查詢不允許多個結果集。 查詢結果中每列欄位數量不一致。 由於資料擷取時間過長,該規則的執行被延遲。 該規則的執行因暫時性問題而延遲。 由於暫時性問題,警報未被加強。 由於實體對應問題,警示未獲得擴充。 < 數字>個實體因 32 KB 警示大小限制而在警示<名稱>中遭到捨棄。 < 編號> 由於實體映射問題,警報 <名稱> 中的實體被刪除。 查詢結果導致 <數字>個事件,超過採用每列警示事件分組設定的<規則類型>規則所允許的<限制>結果上限。 每列警示為第一個<限制-1> 事件產生,並產生額外的彙總警示以解釋所有事件。
- <number> = 查詢回傳的事件數量
- <限制> = 目前排程規則的上限為 150 則警示,NRT 規則的上限為 30 則
- <規則類型> = 排程或 NRT
使用審計與健康監測工作手冊
若要將分析規則健康情況和稽核資料視覺化,請從 Microsoft Sentinel 內容中樞安裝並設定 Analytics Health & Audit 活頁簿。
要讓您的工作簿在工作區中可用,請安裝 Microsoft Sentinel 內容中心的工作簿解決方案:
從Microsoft Sentinel入口網站,從內容管理選單選擇內容中心 (預覽) 。
在Content hub中,在搜尋列輸入health,並在結果中從Standalone下的Workbook解決方案中選取Analytics Health & Audit。
從細節欄選 「安裝 」,然後選擇「 儲存 」,取而代之。
當解決方案顯示已安裝時,請從威脅管理選單中選擇工作簿。
在 工作簿 庫中,選取 範本 索引標籤,在搜尋列中輸入 health,然後從結果中選取 Analytics Health & Audit。
在細節欄選 「儲存 」以建立可編輯且可用的工作簿副本。 當副本建立完成後,選擇 檢視已儲存的工作簿。
進入工作簿後,先選擇你想查看的 訂閱 和 工作區 (它們可能已經) 被選中,然後設定時間 範圍(TimeRange )來根據你的需求篩選資料。 使用 顯示說明 切換鈕,在工作簿中直接顯示說明。
這本工作簿有三個分頁區塊:
請在概覽標籤中檢視健康與稽核摘要
概覽標籤顯示健康狀況與稽核摘要:
- 所選工作區中分析規則執行情況的健康狀態摘要:執行次數、成功與失敗次數,以及失敗事件的詳細資料。
- 檢視所選工作區中分析規則相關活動的稽核摘要:活動數量隨時間的變化、依類型劃分的活動數量,以及依規則劃分的各類型活動數量。
使用 [健康] 索引標籤來識別分析規則中的問題
健康分頁讓你探索特定的健康事件。
- 依 狀態(成功或失敗)和 規則類型(排程或 NRT)篩選整個頁面的資料。
- 查看所選時間範圍內成功和失敗的規則執行趨勢(依據狀態篩選條件而定)。 您可以在趨勢圖上進行「」時間刷選,以查看原始時間範圍的一小部分。
- 依 reason 篩選頁面其餘部分。
- 查看所有分析規則的執行總次數,並依狀態按比例顯示於圓餅圖中。
- 接著是一張表格,顯示了執行過的獨特分析規則數量,依規則類型和狀態分類。
- 選擇一個狀態以篩選該狀態的剩餘圖表。
- 選取圖表右上角的「清除選取」圖示 (外觀看起來像「復原」圖示),即可清除篩選條件。
- 請參閱每個狀態,並列出可能的理由數量。 (只會顯示在所選時間範圍內的執行所代表的原因。)
- 選擇一個狀態以篩選該狀態的剩餘圖表。
- 選取圖表右上角的「清除選取」圖示 (外觀看起來像「復原」圖示),即可清除篩選條件。
- 接著,請參考這些原因的清單,包括總規則執行次數和執行的獨特規則數量。
- 選取一個原因,依該原因篩選以下圖表。
- 選取圖表右上角的「清除選取」圖示 (外觀看起來像「復原」圖示),即可清除篩選條件。
- 接著會有一個清單列出曾執行的各個不重複分析規則,並附上其最新結果,以及成功與失敗的趨勢線 (取決於篩選清單的所選狀態)。
- 選取一項規則以深入查看,並顯示一個新表格,其中列出該規則在所選時間範圍內的所有執行記錄。
- 選取圖表右上角的「清除選取」圖示(其外觀類似「復原」圖示),即可清除該表格。
- 如果你在清單中選擇規則,會顯示一個新的表格,裡面有該規則的健康細節。
使用審計標籤來檢視分析規則變更
審計 分頁 可以讓你深入分析特定的審計事件。
- 依 照審核規則類型 (排程規則或 Fusion,這些是基於關聯的規則,能偵測多階段攻擊)過濾整頁資料。
- 查看選定期間內分析規則中經審計活動的趨勢。 您可以在趨勢圖上進行「」時間刷選,以查看原始時間範圍的一小部分。
- 查看依 活動 與 規則類型劃分的審核事件數量。
- 選擇一項活動以篩選該活動的以下圖表。
- 選取圖表右上角的「清除選取」圖示 (外觀看起來像「復原」圖示),即可清除篩選條件。
- 請參閱規則 名稱下的審核事件數量。
- 選取規則名稱,即可篩選下列表格,只顯示該規則,並可深入查看,顯示一個新表格,列出該規則在所選時間範圍內的所有活動。 (請看下面的截圖。)
- 選取圖表右上角的「清除選取」圖示 (外觀看起來像「復原」圖示),即可清除篩選條件。
- 查看由 呼叫端(執行該活動的身分)所產生的稽核事件數量。
- 如果您在前述圖表中選取了規則名稱,會顯示另一個表格,顯示該規則的稽核 活動。 選擇 ExtendedProperties 欄位中以連結出現的值,開啟側面板,顯示規則變更。
相關內容
- 監控並優化 Microsoft Sentinel 中的分析規則執行。
- 了解 Microsoft Sentinel 中的稽核與健康監控。
- 在 Microsoft Sentinel 中開啟稽核與健康監控功能。
- 監控你的自動化規則和操作手冊的健康狀況。
- 監控你的資料連接器健康狀況。
- 請參閱更多關於 SentinelHealth 與 SentinelAudit 表格結構的資訊。