分享方式:


稽核和追蹤 Microsoft Sentinel 中事件工作的變更

事件工作 可確保所有SOC人員對事件進行全面且統一的處理。 工作清單通常會根據資深分析師或SOC經理所做的判斷來定義,並使用自動化規則或劇本實際執行。

您的分析師可以在事件詳細數據頁面上查看他們需要針對特定事件執行的工作清單,並將它們標示為完成。 分析師也可以從事件內立即手動建立自己的工作。

本文說明您身為 SOC 管理員,如何稽核 Microsoft Sentinel 事件工作的歷程記錄,並追蹤其生命週期中所做的變更,以衡量工作分派的有效性,以及他們對 SOC 效率與正常運作的貢獻。

SecurityIncident 數據表中 Tasks 陣列的結構

SecurityIncident 數據表是稽核數據表,它不會儲存事件本身,而是事件存留記錄:事件的建立和對其所做的任何變更。 每當事件建立或變更事件時,都會在此數據表中產生記錄,其中顯示事件目前的狀態。

加入此數據表架構的工作詳細數據可讓您更深入地稽核工作。

新增至 [工作 ] 字段的詳細資訊是由採用下列結構的索引鍵/值組所組成:

索引鍵 值描述
createdBy 建立工作的身分識別:
- 電子郵件:身分識別的電子郵件位址
- 名稱:身分識別的名稱
- objectId:身分識別的 GUID
- userPrincipalName:身分識別的 UPN
createdTimeUtc 建立工作的時間,以UTC為單位。
lastCompletedTimeUtc 工作標示完成的時間,以UTC為單位。
lastModifiedBy 上次修改工作的身分識別:
- 電子郵件:身分識別的電子郵件位址
- 名稱:身分識別的名稱
- objectId:身分識別的 GUID
- userPrincipalName:身分識別的 UPN
lastModifiedTimeUtc 上次修改工作的時間,以UTC為單位。
status 工作的目前狀態:新增、已完成、已刪除。
taskId 工作的資源標識碼。
title 由其建立者提供給工作的易記名稱。

在 SecurityIncident 數據表中檢視事件工作

除了事件工作活頁簿之外,您還可以藉由查詢記錄中的 SecurityIncident 數據表來稽核工作活動。 本文的其餘部分會示範如何執行這項操作,以及如何讀取和了解查詢結果以取得工作活動資訊。

  1. 在 [ 記錄] 頁面中,在查詢視窗中輸入下列查詢並加以執行。 此查詢會傳回已指派任何工作的所有事件。

    SecurityIncident
    | where array_length( Tasks) > 0
    

    您可以將任意數目的語句新增至查詢,以篩選並縮小結果範圍。 為了示範如何檢視和了解結果,我們要新增 語句來篩選結果,以便我們只看到單一事件的工作,而且我們也會新增 project 語句,這樣我們只會看到那些對我們的用途有用的欄位,而不需要太多雜亂。

    深入瞭解如何使用 Kusto 查詢語言

    SecurityIncident
    | where array_length( Tasks) > 0
    | where IncidentNumber == "405211"
    | sort by LastModifiedTime desc 
    | project IncidentName, Title, LastModifiedTime, Tasks
    
  2. 讓我們看看此事件的最新記錄,並尋找與其相關聯的工作清單。

    1. 選取查詢結果中頂端數據列旁的展開器(已依遞減順序排序)。

      Screenshot of query results showing an incident with its tasks.

    2. [ 任務 ] 欄位是此事件中所有工作的目前狀態陣列。 選取展開器以檢視數位中本身數據列中的每一個專案。

      Screenshot of query results showing an incident with its tasks expanded.

    3. 現在您會看到此事件中有兩個工作。 每個數位都會以可展開的陣列來表示。 選取單一工作的展開器以檢視其資訊。

      Screenshot of query results showing an incident with a single task expanded.

    4. 在這裡,您會看到陣列中第一個工作的詳細數據(“0” 是陣列中工作的索引位置)。 標題欄位會顯示事件中顯示的任務名稱。

檢視新增至清單的工作

  1. 讓我們將工作新增至事件,然後我們會回到這裡,再次執行查詢,並查看結果中的變更。

    1. 在 [ 事件] 頁面上,於搜尋列中輸入事件標識符。

    2. 開啟 [事件詳細數據] 頁面,然後從工具欄選取 [工作 ]。

    3. 新增工作,為它命名為「此工作是測試工作!」,然後選取 [ 儲存]。 下面顯示的最後一項工作是您最終應該完成的工作:

      Screenshot shows incident tasks panel.

  2. 現在讓我們回到 [記錄 ] 頁面,然後再次執行我們的查詢。

    在結果中,您會看到此相同事件的數據表中有新記錄(請注意時間戳)。 展開記錄,您會看到,雖然我們在 [工作] 陣列中有兩個工作之前看到的記錄,但新的記錄有三個。 最新的工作是我們剛才新增的工作,如您所見,其標題所示。

    Screenshot of query results showing an incident with its newly created task.

檢視工作的狀態變更

現在,如果我們回到事件詳細數據頁面中的新工作,並將其標示為完成,然後返回記錄並重新執行查詢,我們將會看到相同事件的另一筆新記錄,這次顯示工作的新狀態為已完成

Screenshot of query results showing an incident task with its new status.

檢視刪除工作

讓我們回到事件詳細數據頁面中的工作清單,並刪除我們稍早新增的工作。

當我們回到 [記錄 ] 並再次執行查詢時,我們會看到另一筆新記錄,但這次工作的狀態就是標題為「此工作是測試工作!- 將會 刪除

不過,一旦工作在陣列中出現一次這類時間(狀態為 Deleted),該工作就不會再出現在 SecurityIncident 數據表中該事件的新記錄中的 [工作] 陣列中。 現有的記錄,就像我們在上面看到的記錄一樣,會繼續保留此工作曾經存在的證據。

檢視屬於已關閉事件的作用中工作

下列查詢可讓您查看事件是否已關閉,但未完成所有指派的工作。 此知識可協助您確認調查中任何剩餘的鬆散結束都得出結論—所有相關方都已收到通知、已輸入所有批注、已驗證所有回應等等。

SecurityIncident
| summarize arg_max(TimeGenerated, *) by IncidentNumber
| where Status == 'Closed'
| mv-expand Tasks
| evaluate bag_unpack(Tasks)
| summarize arg_max(lastModifiedTimeUtc, *) by taskId
| where status !in ('Completed', 'Deleted')
| project TaskTitle = ['title'], TaskStatus = ['status'], createdTimeUtc, lastModifiedTimeUtc = column_ifexists("lastModifiedTimeUtc", datetime(null)), TaskCreator = ['createdBy'].name, lastModifiedBy, IncidentNumber, IncidentOwner = Owner.userPrincipalName
| order by lastModifiedTimeUtc desc

下一步