使用 Azure 監視器監視 Azure AD B2C

使用 Azure 監視器將 Azure Active Directory B2C (Azure AD B2C) 登入和 稽核 記錄路由傳送至不同的監視解決方案。 您可以保留記錄以供長期使用,或與協力廠商安全性資訊和事件管理 (SIEM) 工具整合,以深入瞭解您的環境。

您可以將記錄事件路由傳送至:

Azure Monitor

當您打算將 Azure AD B2C 記錄傳輸至不同的監視解決方案或存放庫時,請考慮 Azure AD B2C 記錄包含個人資料。 當您處理這類資料時,請確定您在個人資料上使用適當的安全性措施。 它包括使用適當的技術或組織措施,防止未經授權的或非法處理。

在本文中,您將瞭解如何將記錄傳輸至 Azure Log Analytics 工作區。 然後,您可以建立儀表板或建立以 Azure AD B2C 使用者活動為基礎的警示。

觀看這段影片,瞭解如何使用 Azure 監視器設定 Azure AD B2C 的監視。

部署概觀

Azure AD B2C 使用 Microsoft Entra 監視 。 不同于 Microsoft Entra 租使用者,Azure AD B2C 租使用者不能有與其相關聯的訂用帳戶。 因此,我們需要採取額外的步驟,以啟用 Azure AD B2C 與 Log Analytics 之間的整合,這是我們傳送記錄的位置。 若要在 Azure AD B2C 租使用者內啟用 Microsoft Entra 識別碼中的診斷設定 ,您可以使用 Azure Lighthouse 委派資源 ,讓 Azure AD B2C (服務提供者 ) 管理 Microsoft Entra ID ( 客戶 ) 資源。

提示

Azure Lighthouse 通常用於管理多個客戶的資源。 不過,它也可以用來管理 企業內擁有多個 Microsoft Entra 租使用者的資源 ,這是我們在這裡執行的動作,不同之處在于我們只委派單一資源群組的管理。

完成本文中的步驟之後,您將建立新的資源群組(這裡稱為 azure-ad-b2c-monitor ),並存取該相同的資源群組,其中包含 Azure AD B2C 入口網站中的 Log Analytics 工作區 。 您也可以將記錄從 Azure AD B2C 傳輸至 Log Analytics 工作區。

在此部署期間,您會授權 Azure AD B2C 目錄中的使用者或群組,以在包含 Azure 訂用帳戶的租使用者內設定 Log Analytics 工作區實例。 若要建立授權,您可以將 Azure Resource Manager 範本部署到 包含 Log Analytics 工作區的訂用帳戶。

下圖描述您將在 Microsoft Entra ID 和 Azure AD B2C 租使用者中設定的元件。

Resource group projection

在此部署期間,您將設定產生記錄的 Azure AD B2C 租使用者。 您也會設定將裝載 Log Analytics 工作區的 Microsoft Entra 租使用者。 使用的 Azure AD B2C 帳戶(例如您的系統管理員帳戶)應指派 Azure AD B2C 租使用者上的全域管理員istrator 角色。 您將用來執行部署的 Microsoft Entra 帳戶必須獲指派 Microsoft Entra 訂用帳戶中的擁有者 角色。 請務必確定您已在完成每個步驟時登入正確的目錄,如所述。

總而言之,您將使用 Azure Lighthouse 來允許 Azure AD B2C 租使用者中的使用者或群組管理與不同租使用者相關聯的訂用帳戶中的資源群組(Microsoft Entra 租使用者)。 完成此授權之後,就可以在 Azure AD B2C 的診斷設定中選取訂用帳戶和記錄分析工作區作為目標。

必要條件

1.建立或選擇資源群組

首先,建立或選擇資源群組,其中包含將從 Azure AD B2C 接收資料的目的地 Log Analytics 工作區。 當您部署 Azure Resource Manager 範本時,您將指定資源組名。

  1. 登入 Azure 入口網站
  2. 如果您有多個租使用者的存取權,請選取 頂端功能表中的設定 圖示,以從 [目錄 + 訂 用帳戶] 功能表切換至您的 Microsoft Entra ID 租使用者。
  3. 建立資源群組,或選擇現有的資源群組 。 此範例會使用名為 azure-ad-b2c-monitor 的資源群組。

2.建立 Log Analytics 工作區

Log Analytics 工作區 是 Azure 監視器記錄資料的唯一環境。 您將使用此 Log Analytics 工作區從 Azure AD B2C 稽核記錄 收集資料,然後使用查詢和活頁簿將其視覺化,或建立警示。

  1. 登入 Azure 入口網站
  2. 如果您有多個租使用者的存取權,請選取 頂端功能表中的設定 圖示,以從 [目錄 + 訂 用帳戶] 功能表切換至您的 Microsoft Entra ID 租使用者。
  3. 建立 Log Analytics 工作區 。 此範例會在名為 azure-ad-b2c-monitor 的資源群組中使用名為 AzureAdB2C 的 Log Analytics 工作區。

3. 委派資源管理

在此步驟中,您會選擇 Azure AD B2C 租使用者作為 服務提供者 。 您也會定義將適當的 Azure 內建角色指派給 Microsoft Entra 租使用者中的群組所需的授權。

3.1 取得 Azure AD B2C 租使用者識別碼

首先,取得 Azure AD B2C 目錄的租使用者識別碼 (也稱為目錄識別碼)。

  1. 登入 Azure 入口網站
  2. 如果您有多個租使用者的存取權,請選取 頂端功能表中的 [設定 ] 圖示,從 [目錄 + 訂 用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
  3. 選取 [Microsoft 專案識別碼 ],選取 [ 概觀 ]。
  4. 記錄租使用者 識別碼

3.2 選取安全性群組

現在,選取您想要授與您稍早在包含訂用帳戶之目錄中建立之資源群組許可權的 Azure AD B2C 群組或使用者。

為了簡化管理,我們建議針對每個角色使用 Microsoft Entra 使用者 群組 ,讓您將個別使用者新增或移除至群組,而不是將許可權直接指派給該使用者。 在本逐步解說中,我們將新增安全性群組。

重要

若要新增 Microsoft Entra 群組的許可權, 必須將 [群組類型 ] 設定為 [安全性 ]。 建立群組時會選取此選項。 如需詳細資訊,請參閱 使用 Microsoft Entra ID 建立基本群組和新增成員。

  1. Azure AD B2C 目錄中仍選取 [Microsoft Entra ID ],選取 [ 群組 ],然後選取群組。 如果您沒有現有的群組,請建立 安全性群組 ,然後新增成員。 如需詳細資訊,請遵循建立基本群組並使用 Microsoft Entra ID 新增成員的程式
  2. 選取 [ 概觀 ],然後記錄群組的物件識別碼。

3.3 建立 Azure Resource Manager 範本

若要在 Azure Lighthouse 中建立自訂授權和委派,我們會使用 Azure Resource Manager 範本。 此範本會授與 Azure AD B2C 存取您稍早建立的 Microsoft Entra 資源群組, 例如 azure-ad-b2c-monitor 。 使用 [ 部署至 Azure ] 按鈕,從 GitHub 範例部署範本,這會開啟Azure 入口網站,並可讓您直接在入口網站中設定及部署範本。 針對這些步驟,請確定您已登入您的 Microsoft Entra 租使用者(而非 Azure AD B2C 租使用者)。

  1. 登入 Azure 入口網站

  2. 如果您有多個租使用者的存取權,請選取 頂端功能表中的設定 圖示,以從 [目錄 + 訂 用帳戶] 功能表切換至您的 Microsoft Entra ID 租使用者。

  3. 使用 [ 部署至 Azure ] 按鈕來開啟Azure 入口網站,並直接在入口網站中部署範本。 如需詳細資訊,請參閱 建立 Azure Resource Manager 範本

    Deploy to Azure

  4. 在 [ 自訂部署] 頁面上,輸入下列資訊:

    欄位 定義
    訂用帳戶 選取包含 Azure 訂 用帳戶的目錄,其中已建立 azure-ad-b2c-monitor 資源群組。
    區域 選取將部署資源的區域。
    Msp 供應專案名稱 說明此定義的名稱。 例如, Azure AD B2C 監視 。 這是將在 Azure Lighthouse 中顯示的名稱。 MSP 供應專案名稱 在您的 Microsoft Entra 識別碼中必須是唯一的。 若要監視多個 Azure AD B2C 租使用者,請使用不同的名稱。
    Msp 供應專案描述 供應專案的簡短描述。 例如, 在 Azure AD B2C 中啟用 Azure 監視器。
    依租使用者識別碼管理 Azure AD B2C 租使用者的租使用者識別碼 (也稱為目錄識別碼)。
    授權 指定物件的 JSON 陣列,其中包含 Microsoft Entra ID principalIdprincipalIdDisplayName 和 Azure roleDefinitionIdprincipalId B2C 群組或使用者的物件識別碼 ,可存取此 Azure 訂用帳戶中的資源。 在本逐步解說中,請指定您稍早記錄的群組物件識別碼。 roleDefinitionId針對 ,請使用 參與者角色 內建角色 值 。 b24988ac-6180-42a0-ab88-20f7382dd24c
    Rg 名稱 您稍早在 Microsoft Entra 租使用者中建立的資源群組名稱。 例如, azure-ad-b2c-monitor

    下列範例示範具有一個安全性群組的 Authorizations 陣列。

    [
      {
        "principalId": "<Replace with group's OBJECT ID>",
        "principalIdDisplayName": "Azure AD B2C tenant administrators",
        "roleDefinitionId": "b24988ac-6180-42a0-ab88-20f7382dd24c"
      }
    ]
    

部署範本之後,資源投影可能需要幾分鐘(通常不超過 5 分鐘)才能完成。 您可以在 Microsoft Entra 租使用者中確認部署,並取得資源投影的詳細資料。 如需詳細資訊,請參閱 檢視和管理服務提供者

4.選取您的訂用帳戶

部署範本並等候幾分鐘讓資源投影完成之後,請遵循下列步驟,將您的訂用帳戶與您的 Azure AD B2C 目錄產生關聯。

注意

在入口 網站設定 |[目錄 + 訂 用帳戶] 頁面,請確定您的 Azure AD B2C 和 Microsoft Entra 租使用者已選取 [ 目前 + 委派的目錄]。

  1. 註銷 Azure 入口網站,並使用您的 Azure AD B2C 系統管理帳戶重新登入。 此帳戶必須是您在委派資源管理步驟中指定的安全組成員。 註銷並唱回 ,可讓您的會話認證在下一個步驟中重新整理。

  2. 選取入口網站工具列中的 設定 圖示。

  3. 在入口 網站設定 |[目錄 + 訂 用帳戶] 頁面的 [ 目錄名稱 ] 清單中,尋找您的 Microsoft Entra ID 目錄,其中包含您建立的 Azure 訂用帳戶和 azure-ad-b2c-monitor 資源群組,然後選取 [ 切換]。

  4. 確認您已選取正確的目錄,並在 [預設訂用帳戶] 篩選列出並選取您的 Azure 訂用帳戶。

    Screenshot of the default subscription filter

5.設定診斷設定

診斷設定會定義應該傳送資源記錄和計量的位置。 可能的目的地如下:

在此範例中,我們使用Log Analytics工作區來建立儀錶板。

5.1 建立診斷設定

您已準備好在 Azure 入口網站 中建立診斷設定

若要設定 Azure AD B2C 活動記錄的監視設定:

  1. 使用您的 Azure AD B2C 系統管理帳戶登入 Azure 入口網站。 此帳戶必須是您在選取安全組步驟中指定的安全組成員。

  2. 如果您有多個租使用者的存取權,請選取頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。

  3. 選取 [Microsoft Entra ID]

  4. 在 [監視] 底下,選取 [診斷設定]。

  5. 如果資源有現有的設定,您會看到已設定的設定清單。 選取 [ 新增診斷設定 ] 以新增設定,或選取 [編輯設定 ] 以編輯現有的設定。 每個設定不能有一個以上的每個目的地類型。

    Screenshot of the diagnostics settings pane in Azure portal.

  6. 如果您的設定還沒有名稱,請提供名稱。

  7. 選取 [AuditLogs ] 和 [SignInLogs]。

  8. 選取 [ 傳送至 Log Analytics 工作區],然後:

    1. 在 [訂用帳戶] 下,選取您的訂用帳戶。
    2. [Log Analytics 工作區] 下,選取您稍早建立的工作區名稱,例如 AzureAdB2C

    注意

    Azure AD B2C 租使用者目前僅支援 AuditLogsSignInLogs 診斷設定。

  9. 選取 [儲存]

注意

事件發出后最多可能需要 15 分鐘的時間,才會 出現在 Log Analytics 工作區中。 此外,深入瞭解 Active Directory 報告延遲,這可能會影響數據的過時,並在報告中扮演重要角色。

如果您看到錯誤訊息:若要設定診斷設定以使用 Azure 監視器作為 Azure AD B2C 目錄,您必須設定委派的資源管理,請務必使用屬於安全組成員的使用者登入,然後選取您的訂用帳戶。

6.將數據可視化

現在您可以設定 Log Analytics 工作區,以將數據可視化並設定警示。 您可以在 Microsoft Entra 租使用者和 Azure AD B2C 租用戶中設定這些設定。

6.1 建立查詢

記錄查詢可協助您充分利用 Azure 監視器記錄中所收集的數據值。 強大的查詢語言可讓您聯結來自多個資料表的資料、匯總大型資料集,並以最少的程式碼執行複雜作業。 只要收集到支援資料,您幾乎就能回答任何問題並執行分析,並理解如何建構正確的查詢。 如需詳細資訊,請參閱 開始使用 Azure 監視器中的記錄查詢。

  1. 登入 Azure 入口網站

  2. 如果您有多個租使用者的存取權,請選取頂端功能表中的 設定 圖示,以從 [目錄 + 訂用帳戶] 功能表切換至您的 Microsoft Entra ID 租使用者。

  3. [Log Analytics 工作區] 視窗,選取 [ 記錄]

  4. 在查詢編輯器中,貼上下列 Kusto 查詢語言 查詢。 此查詢會顯示過去 x 天內作業的原則使用方式。 默認持續時間設定為90天(90d)。 請注意,查詢只會著重於原則發出令牌/程序代碼的作業。

    AuditLogs
    | where TimeGenerated  > ago(90d)
    | where OperationName contains "issue"
    | extend  UserId=extractjson("$.[0].id",tostring(TargetResources))
    | extend Policy=extractjson("$.[1].value",tostring(AdditionalDetails))
    | summarize SignInCount = count() by Policy, OperationName
    | order by SignInCount desc  nulls last
    
  5. 選取執行。 查詢結果會顯示在畫面底部。

  6. 若要儲存查詢以供稍後使用,請選取 [ 儲存]。

    Log Analytics log editor

  7. 填寫下列詳細資料:

    • 名稱 - 輸入查詢的名稱。
    • 另存新檔 - 選擇 。 query
    • 類別 - 選取 Log
  8. 選取 [儲存]。

您也可以變更查詢,以使用 譯運算符將數據可視化。

AuditLogs
| where TimeGenerated  > ago(90d)
| where OperationName contains "issue"
| extend  UserId=extractjson("$.[0].id",tostring(TargetResources))
| extend Policy=extractjson("$.[1].value",tostring(AdditionalDetails))
| summarize SignInCount = count() by Policy
| order by SignInCount desc  nulls last
| render  piechart

Log Analytics log editor pie

如需更多範例,請參閱 Azure AD B2C SIEM GitHub 存放庫

6.2 建立活頁簿

活頁簿提供彈性的畫布,可供您用來分析資料,並在 Azure 入口網站中建立豐富的視覺效果報表。 它們讓您能夠利用 Azure 中的多個資料來源,並將其合併為統一的互動式體驗。 如需詳細資訊,請參閱 Azure 監視器活頁簿

請遵循下列指示,使用 JSON 資源庫範本建立新的活頁簿。 此活頁簿提供 Azure AD B2C 租使用者的 User Insights驗證 儀錶板。

  1. 登入 Azure 入口網站

  2. 如果您有多個租使用者的存取權,請選取頂端功能表中的 [設定] 圖示,以從 [目錄 + 訂用帳戶] 功能表切換至您的 Microsoft Entra ID 租使用者。

  3. 從 [Log Analytics 工作區] 視窗中,選取 [活頁簿]。

  4. 從工具列中,選取 [+ 新增 ] 選項以建立新的活頁簿。

  5. 在 [新增活頁簿] 頁面上,使用<工具列上的 /> 選項選取 進階編輯器。

    Gallery Template

  6. 選取 [ 資源庫範本]。

  7. 將資源庫範本中的 JSON 取代為 Azure AD B2C 基本活頁簿的內容

  8. 使用 [ 用] 按鈕套用範本。

  9. 從工具列選取 [完成編輯] 按鈕,以完成編輯活頁簿。

  10. 最後,使用工具列中的 [ 儲存 ] 按鈕儲存活頁簿。

  11. 提供標題,例如 Azure AD B2C 儀錶板

  12. 選取 [儲存]。

    Save the workbook

活頁簿會以儀錶板的形式顯示報表。

Workbook first dashboard

Workbook second dashboard

Workbook third dashboard

建立警示

警示是由 Azure 監視器中的警示規則所建立,並可定期自動執行已儲存的查詢或自定義記錄搜尋。 您可以根據特定效能計量或特定事件發生時建立警示。 您也可以在特定時間範圍內發生許多事件時,建立不存在事件的警示。 例如,警示可用來在平均登入數目超過特定閾值時通知您。 如需詳細資訊,請參閱建立警示

使用下列指示來建立新的 Azure 警示,每當與前一個期間相比,總要求數下降 25% 時,就會傳送電子郵件通知。 警示會每隔 5 分鐘執行一次,並在最後一小時內尋找與前一小時相比的下降。 警示是使用 Kusto 查詢語言建立的。

  1. 登入 Azure 入口網站

  2. 如果您有多個租使用者的存取權,請選取頂端功能表中的 設定 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Microsoft Entra ID 租使用者。

  3. Log Analytics 工作區中,選取 [ 記錄]。

  4. 使用此查詢建立新的 Kusto 查詢

    let start = ago(2h);
    let end = now();
    let threshold = -25; //25% decrease in total requests.
    AuditLogs
    | serialize TimeGenerated, CorrelationId, Result
    | make-series TotalRequests=dcount(CorrelationId) on TimeGenerated from start to end step 1h
    | mvexpand TimeGenerated, TotalRequests
    | serialize TotalRequests, TimeGenerated, TimeGeneratedFormatted=format_datetime(todatetime(TimeGenerated), 'yyyy-MM-dd [HH:mm:ss]')
    | project   TimeGeneratedFormatted, TotalRequests, PercentageChange= ((toreal(TotalRequests) - toreal(prev(TotalRequests,1)))/toreal(prev(TotalRequests,1)))*100
    | order by TimeGeneratedFormatted desc
    | where PercentageChange <= threshold   //Trigger's alert rule if matched.
    
  5. 選取 [ 執行],以測試查詢。 如果過去一小時內要求總數下降 25% 或更多,您應該會看到結果。

  6. 若要根據此查詢建立警示規則,請使用工具列中可用的 [ + 新增警示規則 ] 選項。

  7. 在 [ 建立警示規則 ] 頁面上,選取 [ 條件名稱]

  8. 在 [ 設定訊號邏輯 ] 頁面上,設定下列值,然後使用 [完成 ] 按鈕來儲存變更。

    • 警示邏輯:設定大於0 的結果數目。
    • 評估依據:針對期間(分鐘)選取 120,並針對頻率選取 5(以分鐘為單位)

    Create a alert rule condition

建立警示之後,請移至 Log Analytics工作區 ,然後選取 [ 警示]。 此頁面會顯示 [時間範圍] 選項所設定期間內觸發的所有警示。

設定動作群組

Azure 監視器和服務健康狀態警示會使用動作群組來通知使用者已觸發警示。 您可以包括傳送語音電話、簡訊、電子郵件;或觸發各種類型的自動化動作。 遵循在 Azure 入口網站 中建立和管理動作群組的指導方針

以下是警示通知電子郵件的範例。

Email notification

多個租使用者

若要將多個 Azure AD B2C 租用戶記錄上架到相同的 Log Analytics 工作區(或 Azure 記憶體帳戶或事件中樞),您需要使用不同的 Msp 供應專案名稱值進行個別部署。 請確定 Log Analytics 工作區位於與您在建立或選擇資源群組中所 設定的資源群組相同。

使用多個 Log Analytics 工作區時,請使用 跨工作區查詢 來建立跨多個工作區運作的查詢。 例如,下列查詢會根據相同類別執行來自不同租使用者的兩個稽核記錄聯結(例如驗證):

workspace("AD-B2C-TENANT1").AuditLogs
| join  workspace("AD-B2C-TENANT2").AuditLogs
  on $left.Category== $right.Category

變更數據保留期間

Azure 監視器記錄的設計目的是要調整和支援每天從企業中的任何來源收集、編製索引及儲存大量數據,或部署在 Azure 中。 根據預設,記錄會保留 30 天,但保留期間最多可增加至兩年。 瞭解如何 使用 Azure 監視器記錄來管理使用量和成本。 選取定價層之後,您可以 變更數據保留期間

停用監視數據收集

若要停止收集 Log Analytics 工作區的記錄,請刪除您建立的診斷設定。 您將會繼續產生保留已收集到工作區的記錄數據的費用。 如果您不再需要收集的監視數據,您可以刪除Log Analytics工作區和您為 Azure 監視器建立的資源群組。 刪除 Log Analytics 工作區會刪除工作區中的所有數據,並防止產生額外的數據保留費用。

刪除 Log Analytics 工作區和資源群組

  1. 登入 Azure 入口網站
  2. 如果您有多個租使用者的存取權,請選取頂端功能表中的 [設定] 圖示,以從 [目錄 + 訂用帳戶] 功能表切換至您的 Microsoft Entra ID 租使用者。
  3. 選擇包含Log Analytics工作區的資源群組。 此範例會使用名為 azure-ad-b2c-monitor 的資源群組,以及名為的 AzureAdB2CLog Analytics 工作區。
  4. 刪除 Logs Analytics 工作區
  5. 選取 [ 刪除] 按鈕以刪除資源群組。

下一步