在本教學課程中,您會了解如何:
- 建立 Log Analytics 工作區
- 設定診斷設定以整合登入記錄與Log Analytics工作區
- 使用 Kusto 查詢語言執行查詢 (KQL)
必要條件
若要使用 Log Analytics 來分析活動記錄,您需要下列角色和需求:
Azure 監視器的適當角色:
- 監視讀取器
- Log Analytics 讀者
- 監視參與者
- Log Analytics 參與者
Microsoft Entra ID 的合適角色:
- 報告閱讀器
- 安全讀取器
- 全球閱讀器
- 安全性系統管理員
建立 Log Analytics 工作區
在此步驟中,您會建立Log Analytics工作區,也就是您最終傳送登入記錄的位置。 您必須先有 Azure 資源群組,才能建立工作區。
以至少具有Log Analytics 參與者許可權的安全性系統管理員身分登入 Azure 入口網站。
瀏覽至「Log Analytics 工作區」。
選取 建立。
在 [建立 Log Analytics 工作區] 頁面上,執行下列步驟:
選取您的訂用帳戶。
選取資源群組。
指定您工作區的名稱。
選取您的區域。
選擇「檢閱 + 建立」。
選取 [建立],然後等候部署。 您可能需要重新整理頁面,才能看到新的工作區。
設定診斷設定
若要將身分識別記錄資訊傳送至新的工作區,您必須設定診斷設定。 Azure 和 Microsoft Entra 有不同的診斷設定選項,因此在下一組步驟中,讓我們切換至 Microsoft Entra 系統管理中心,以確保所有專案都與身分識別相關。
以至少安全性系統管理員的身分登入Microsoft Entra 系統管理中心。
流覽至 Entra ID>監視與健康>診斷設定。
選取 [新增診斷設定]。
在 [診斷設定] 頁面上,執行下列步驟:
提供診斷設定的名稱。
在 [記錄] 中,選取 [稽核記錄] 和 [登錄記錄]。
在 [目的地詳細資料] 中,選取傳送至 [Log Analytics],然後選取新的記錄分析工作區。
選取儲存。
您選取的記錄最多可能需要 15 分鐘的時間,記錄才會填入 Log Analytics 工作區。
在 Log Analytics 中執行查詢
透過記錄串流至 Log Analytics 工作區,您可以使用 Kusto 查詢語言 (KQL) 來執行查詢。 執行查詢的最低特殊許可權角色是 報表讀取者 角色
流覽至 Entra ID>監控與狀態>日誌分析。
在 [搜尋] 文字方塊中,輸入您的查詢,然後選取 [執行]。
Kusto 查詢範例
從輸入資料中取出 10 個隨機項目:
SigninLogs | take 10
請檢視條件性存取成功的登入記錄:
SigninLogs | where ConditionalAccessStatus == "success" | project UserDisplayName, ConditionalAccessStatus
計算成功次數:
SigninLogs | where ConditionalAccessStatus == "success" | project UserDisplayName, ConditionalAccessStatus | count
彙總使用者每天成功登入的計數:
SigninLogs | where ConditionalAccessStatus == "success" | summarize SuccessfulSign-ins = count() by UserDisplayName, bin(TimeGenerated, 1d)
檢視使用者在特定時間週期中執行特定作業的次數:
AuditLogs | where TimeGenerated > ago(30d) | where OperationName contains "Add member to role" | summarize count() by OperationName, Identity
將結果按作業名稱進行樞紐分析。
AuditLogs | where TimeGenerated > ago(30d) | where OperationName contains "Add member to role" | project OperationName, Identity | evaluate pivot(OperationName)
使用內部連接將稽核和登入記錄合併:
AuditLogs |where OperationName contains "Add User" |extend UserPrincipalName = tostring(TargetResources[0].userPrincipalName) | |project TimeGenerated, UserPrincipalName |join kind = inner (SigninLogs) on UserPrincipalName |summarize arg_min(TimeGenerated, *) by UserPrincipalName |extend SigninDate = TimeGenerated
檢視用戶端應用程式類型的登入次數:
SigninLogs | summarize count() by ClientAppUsed
計算每一天的登入次數:
SigninLogs | summarize NumberOfEntries=count() by bin(TimeGenerated, 1d)
選取五個隨機條目,並在結果中投射出您希望看到的欄位:
SigninLogs | take 5 | project ClientAppUsed, Identity, ConditionalAccessStatus, Status, TimeGenerated
取得前 5 個項目 (以遞減方式排序),並投影您想要查看的資料行:
SigninLogs | take 5 | project ClientAppUsed, Identity, ConditionalAccessStatus, Status, TimeGenerated
將值與其他兩個資料行結合,以建立新的資料行:
SigninLogs | limit 10 | extend RiskUser = strcat(RiskDetail, "-", Identity) | project RiskUser, ClientAppUsed