在 Azure 監視器中封存權利管理的記錄和報告

Microsoft Entra ID 會在稽核記錄中儲存最多 30 天的稽核事件。 不過,您可以將稽核資料保留比預設保留期限更長的時間,如 Microsoft Entra ID 將報告資料儲存多久?中的概述,方法是將它路由至 Azure 記憶體帳戶或使用 Azure 監視器。 接著,您可以使用活頁簿及自訂此資料的查詢和報告。

設定 Microsoft Entra ID 以使用 Azure 監視器

提示

根據您從中開始的入口網站,本文中的步驟可能會略有不同。

使用 Azure 監視器活頁簿之前,您必須先設定 Microsoft Entra ID,將其稽核記錄複本傳送至 Azure 監視器。

封存 Microsoft Entra 稽核記錄需要您在 Azure 訂用帳戶中擁有 Azure 監視器。 您可以在 Azure 監視器中的 Microsoft Entra 活動記錄中深入了解使用 Azure 監視器的必要條件和預估成本。

  1. 至少以安全性系統管理員 (部分機器翻譯) 的身分登入 Microsoft Entra 系統管理中心。 請確定您可以存取包含 Azure 監視器工作區的資源群組。

  2. 瀏覽至 [身分識別] > [監視和健康情況] > [診斷設定]

  3. 檢查是否已有將稽核記錄傳送至該工作區的設定。

  4. 如果尚未設定,請選取 [新增診斷設定]。 使用整合 Microsoft Entra 記錄與 Azure 監視器記錄 (部分機器翻譯) 中的指示,將 Microsoft Entra 稽核記錄傳送至 Azure 監視器工作區。

    [診斷設定] 窗格。

  5. 將記錄傳送至 Azure 監視器之後,請選取 [Microsoft Entra 工作區],然後選取包含 Azure AD 稽核記錄的工作區。

  6. 選取 [使用量和估計成本] 然後選取 [資料保留]。 將滑杆變更為您想要保留資料的天數,以符合您的審核需求。

    Log Analytics 工作區窗格。

  7. 稍後,若要查看工作區中保留的日期範圍,您可以使用「封存的記錄日期範圍」活頁簿:

    1. 瀏覽至 [身分識別] > [監視和健康狀況] > [活頁簿]

    2. 展開 [Microsoft Entra 疑難排解] 區段,然後選取 [封存記錄日期範圍]

檢視存取套件的事件

若要檢視存取套件的事件,您必須具有基礎 Azure 監視器工作區的存取權 (請參閱管理 Azure 監視器中的記錄資料和工作區存取權以取得資訊),並具有下列其中一個角色:

  • 全域系統管理員
  • 安全性系統管理員
  • 安全性讀取者
  • 報告讀取者
  • 應用程式系統管理員

使用下列程序來檢視事件:

  1. 在 Microsoft Entra 系統管理中心中,選取 [身分識別] 然後選取 [活頁簿]。 如果您只有一個訂用帳戶,請移至步驟 3。

  2. 如果您有多個訂用帳戶,請選取包含工作區的訂用帳戶。

  3. 選取名為「存取套件活動」的活頁簿。

  4. 在該活頁簿中,選取 [時間範圍] (如果不確定請變更為 [所有]),然後從該時間範圍期間有活動的所有存取套件下拉式清單中,選取存取套件識別碼。 顯示與所選時間範圍期間所發生之存取套件相關的事件。

    檢視存取套件事件。

    每個資料列都包含時間、存取套件識別碼、作業名稱、物件識別碼、UPN,以及啟動作業的使用者顯示名稱。 JSON 中包含更多詳細數據。

  5. 如果您想要查看應用程式是否有不是因為存取套件指派造成的應用程式角色指派 (例如由全域系統管理員直接將使用者指派給應用程式角色),則您可以選取名為 [應用程式角色指派活動] 的活頁簿。

    檢視應用程式角色指派。

使用 Microsoft Entra 系統管理中心建立自訂 Azure 監視器查詢

您可以針對 Microsoft Entra 稽核事件建立自己的查詢,包括權利管理事件。

  1. 在 [Microsoft Entra 系統管理中心的身分識別] 中,選取左側導覽功能表中 [監視] 區段下方的 [記錄],以建立新的查詢頁面。

  2. 您的工作區應該會顯示在 [查詢] 頁面的左上方。 如果您有多個 Azure 監視器工作區,且您用來儲存 Microsoft Entra 稽核事件的工作區並未顯示,請選取 [選取範圍]。 然後,選取正確的訂用帳戶和工作區。

  3. 接下來,在 [查詢文字] 區域中,刪除字串「search *」,並將其取代為下列查詢:

    AuditLogs | where Category == "EntitlementManagement"
    
  4. 然後,選取 [執行]

    選取 [執行] 以啟動查詢。

下表顯示依預設,過去一小時內權利管理的稽核記錄事件。 您可以變更 [時間範圍] 設定來檢視較舊的事件。 不過,變更此設定只會顯示 Microsoft Entra ID 設定為將事件傳送至 Azure 監視器之後發生的事件。

如果您想要知道 Azure 監視器中保留的最舊和最新稽核事件,請使用下列查詢:

AuditLogs | where TimeGenerated > ago(3653d) | summarize OldestAuditEvent=min(TimeGenerated), NewestAuditEvent=max(TimeGenerated) by Type

如需 Azure 監視器所儲存稽核事件的資料行的詳細資訊,請參閱 解譯 Azure 監視器中的 Microsoft Entra 稽核記錄結構描述

使用 Azure PowerShell 建立自訂 Azure 監視器查詢

設定 Microsoft Entra ID 以將記錄傳送至 Azure 監視器之後,您可以透過 PowerShell 存取記錄。 然後,從指令碼或 PowerShell 命令列傳送查詢,而不需要成為租用戶中的全域管理員。

確定使用者或服務主體具有正確的角色指派

請確定您驗證為 Microsoft Entra ID 的使用者或服務主體位於 Log Analytics 工作區中適當的 Azure 角色中。 角色選項為 Log Analytics 讀者或 Log Analytics 參與者。 如果您已經是這些角色的其中一個,請跳到使用一個 Azure 訂用帳戶來擷取 Log Analytics 識別碼

若要設定角色指派和建立查詢,請執行下列步驟:

  1. 在 Microsoft Entra 系統管理中心中,尋找 [Log Analytics 工作區]

  2. 選取存取控制 (IAM)

  3. 然後選取 [新增] 以新增角色指派。

    新增角色指派。

安裝 Azure PowerShell 模組

一旦您擁有適當的角色指派後,請啟動 PowerShell,並安裝 Azure PowerShell 模組 (如果您尚未這麼做),請輸入:

install-module -Name az -allowClobber -Scope CurrentUser

現在您已準備好向 Microsoft Entra ID 進行驗證,並擷取您要查詢的 Log Analytics 工作區識別碼。

使用一個 Azure 訂用帳戶擷取 Log Analytics 識別碼

如果您只有單一 Azure 訂用帳戶和單一 Log Analytics 工作區,請輸入下列命令,向 Microsoft Entra ID 進行驗證、連線到該訂用帳戶,然後擷取該工作區:

Connect-AzAccount
$wks = Get-AzOperationalInsightsWorkspace

使用多個 Azure 訂用帳戶擷取 Log Analytics 識別碼

Get-AzOperationalInsightsWorkspace 一次只會在一個訂用帳戶中運作。 因此,如果您有多個 Azure 訂用帳戶,您想要確定您已使用 Microsoft Entra 記錄連線到具有 Log Analytics 工作區的訂用帳戶。

下列 Cmdlet 會顯示訂用帳戶的清單,並尋找具有 Log Analytics 工作區的訂用帳戶識別碼:

Connect-AzAccount
$subs = Get-AzSubscription
$subs | ft

您可以使用 Connect-AzAccount –Subscription $subs[0].id之類的命令,重新驗證您的 PowerShell 工作階段,並將其與該訂用帳戶產生關聯。 若要深入了解如何從 PowerShell 向 Azure 進行驗證 (包括非互動),請參閱使用 Azure PowerShell 進行登入

如果您在該訂用帳戶中有多個 Log Analytics 工作區,則 Get-AzOperationalInsightsWorkspace Cmdlet 會傳回工作區的清單。 然後,您可以找到具有 Microsoft Entra 記錄的工作區。 此 Cmdlet 傳回的 CustomerId 欄位,與 Log Analytics 工作區概觀中 Microsoft Entra 系統管理中心中顯示的「工作區識別碼」的值相同。

$wks = Get-AzOperationalInsightsWorkspace
$wks | ft CustomerId, Name

將查詢傳送至 Log Analytics 工作區

最後,一旦識別出工作區之後,您就可以使用 Invoke-AzOperationalInsightsQuery,將 Kusto 查詢傳送至該工作區。 這些查詢會以 Kusto 查詢語言撰寫。

例如,您可以從 Log Analytics 工作區擷取稽核事件記錄的日期範圍,並使用 PowerShell Cmdlet 來傳送類似下列的查詢:

$aQuery = "AuditLogs | where TimeGenerated > ago(3653d) | summarize OldestAuditEvent=min(TimeGenerated), NewestAuditEvent=max(TimeGenerated) by Type"
$aResponse = Invoke-AzOperationalInsightsQuery -WorkspaceId $wks[0].CustomerId -Query $aQuery
$aResponse.Results |ft

您也可以使用如下查詢來擷取權利管理事件:

$bQuery = 'AuditLogs | where Category == "EntitlementManagement"'
$bResponse = Invoke-AzOperationalInsightsQuery -WorkspaceId $wks[0].CustomerId -Query $Query
$bResponse.Results |ft 

使用查詢篩選條件

您可以包含 TimeGenerated 欄位,將查詢範圍限定於特定時間範圍。 例如,若要擷取在過去 90 天內建立或更新權利管理存取套件指派原則的稽核記錄事件,您可以提供包含此欄位的查詢以及類別和作業類型。

AuditLogs | 
where TimeGenerated > ago(90d) and Category == "EntitlementManagement" and Result == "success" and (AADOperationType == "CreateEntitlementGrantPolicy" or AADOperationType == "UpdateEntitlementGrantPolicy") | 
project ActivityDateTime,OperationName, InitiatedBy, AdditionalDetails, TargetResources

針對某些服務的稽核事件,例如權利管理,您也可以擴充和篩選正在變更的資源受影響的屬性。 例如,您可以檢視建立或更新存取套件指派原則的稽核記錄檔記錄,而不需要核准使用者才能新增指派。

AuditLogs | 
where TimeGenerated > ago(90d) and Category == "EntitlementManagement" and Result == "success" and (AADOperationType == "CreateEntitlementGrantPolicy" or AADOperationType == "UpdateEntitlementGrantPolicy") | 
mv-expand TargetResources | 
where TargetResources.type == "AccessPackageAssignmentPolicy" | 
project ActivityDateTime,OperationName,InitiatedBy,PolicyId=TargetResources.id,PolicyDisplayName=TargetResources.displayName,MP1=TargetResources.modifiedProperties | 
mv-expand MP1 | 
where (MP1.displayName == "IsApprovalRequiredForAdd" and MP1.newValue == "\"False\"") |
order by ActivityDateTime desc 

下一步