共用方式為


在 Azure Data Explorer 中建立 Microsoft Entra 應用程式註冊

Microsoft Entra 應用程式驗證用於需要存取 Azure Data Explorer 且沒有使用者的應用程式,例如自動服務或排程流程。 如果您使用應用程式連線到 Azure Data Explorer 資料庫,例如 Web 應用程式,您應該使用服務主體驗證進行驗證。 本文詳細說明如何建立和註冊 Microsoft Entra 服務主體,然後授權它存取 Azure Data Explorer 資料庫。

建立 Microsoft Entra 應用程式註冊

Microsoft Entra 應用程式驗證需要建立應用程式,並使用 Microsoft Entra ID 註冊應用程式。 在 Microsoft Entra 租使用者中建立應用程式註冊時,會自動建立服務主體。

應用程式註冊可以在 Azure 入口網站 中建立,或使用 Azure CLI 以程式設計方式建立。 選擇符合您案例的索引標籤。

註冊應用程式

  1. 登入 Azure 入口網站,然後開啟 [Microsoft Entra ID] 刀鋒視窗。

  2. 流覽至 應用程式註冊,然後選取 [新增註冊]。

    顯示如何啟動新應用程式註冊的螢幕快照。

  3. 舉例來說,將應用程式命名為 "example-app"。

  4. 選取支援的帳戶類型,以決定可以使用此應用程式的人員。

  5. 針對您想要建立的應用程式類型,選取 [重新導向 URI] 下方的 [Web]。 URI 是選擇性的,在此案例中保留空白。

    顯示如何註冊新應用程式註冊的螢幕快照。

  6. 選取 [註冊]。

設定驗證

有兩種驗證類型可用於服務主體:密碼式驗證 (應用程式密碼) 和憑證式驗證。 下一節說明如何針對應用程式的認證使用密碼型驗證。 您也可以使用 X509 憑證來驗證您的應用程式。 如需詳細資訊,請參閱如何設定 Microsoft Entra 憑證式驗證

在本節的課程中,您將複製下列值: 應用程式識別碼密鑰值。 將這些值貼到某處,就像文本編輯器一樣,用於設定 資料庫的客戶端認證

  1. 流覽至 [ 概觀] 刀鋒視窗。

  2. 複製 應用程式 (用戶端) 識別碼目錄 (租使用者) 識別碼

    注意

    您需要應用程式識別碼和租使用者標識碼,才能 授權服務主體存取資料庫

  3. 在 [ 憑證 & 秘密 ] 刀鋒視窗中,選取 [新增客戶端密碼]。

    顯示如何開始建立客戶端密碼的螢幕快照。

  4. 輸入描述和到期。

  5. 選取 [新增]。

  6. 複製金鑰值。

    注意

    當您離開此頁面時,將無法存取索引鍵值。

您已建立 Microsoft Entra 應用程式和服務主體。

設定應用程式的委派許可權 - 選擇性

如果您的應用程式需要使用呼叫使用者的認證來存取資料庫,請設定應用程式的委派許可權。 例如,如果您要建置 Web API,而且想要使用 呼叫 API 之使用者的認證進行驗證。

如果您只需要存取授權的數據資源,您可以略過本節,並繼續 授與資料庫的服務主體存取權

  1. 瀏覽至應用程式註冊[API 許可權] 刀鋒視窗。

  2. 選取 [新增權限]。

  3. 選取 [我組織使用的 API]。

  4. 搜尋並選取 [Azure Data Explorer]。

    顯示如何新增 Azure Data Explorer API 許可權的螢幕快照。

  5. [委派的許可權] 中,選取 [user_impersonation ] 方塊。

  6. 選取 [新增權限]。

    顯示如何使用用戶模擬選取委派許可權的螢幕快照。

授與服務主體對資料庫的存取權

建立應用程式註冊之後,您必須將對應的服務主體存取權授與資料庫。 下列範例會提供查看器存取權。 如需其他角色,請參閱 管理資料庫許可權

  1. 使用上一 個步驟中複製的應用程式標識碼和租用戶標識碼。

  2. 在查詢編輯器中執行下列命令,將佔位元值 ApplicationIDTenantID 取代為您的實際值:

    .add database <DatabaseName> viewers ('aadapp=<ApplicationID>;<TenantID>') '<Notes>'
    

    例如:

    .add database Logs viewers ('aadapp=1234abcd-e5f6-g7h8-i9j0-1234kl5678mn;9876abcd-e5f6-g7h8-i9j0-1234kl5678mn') 'App Registration'
    

    最後一個參數是字串,當您查詢與資料庫相關聯的角色時,會顯示為附註。

    注意

    建立應用程式註冊之後,可能會有數分鐘的延遲,直到可以參考為止。 如果您收到找不到應用程式的錯誤,請稍候再試一次。

如需角色的詳細資訊,請參閱 角色型訪問控制

使用應用程式認證來存取資料庫

使用應用程式認證,透過 用戶端連結庫以程式設計方式存取您的資料庫。

. . .
string applicationClientId = "<myClientID>";
string applicationKey = "<myApplicationKey>";
string authority = "<myApplicationTenantID>";
. . .
var kcsb = new KustoConnectionStringBuilder($"https://{clusterName}.kusto.windows.net/{databaseName}")
    .WithAadApplicationKeyAuthentication(
        applicationClientId,
        applicationKey,
        authority);
var client = KustoClientFactory.CreateCslQueryProvider(kcsb);
var queryResult = client.ExecuteQuery($"{query}");

注意

指定稍早建立的應用程式識別碼和應用程式註冊 (服務主體) 密鑰。

如需詳細資訊,請參閱如何在應用程式中使用 Microsoft 驗證連結庫進行驗證 (MSAL) ,以及搭配 .NET Core Web 應用程式使用 Azure 金鑰保存庫

疑難排解

資源錯誤無效

如果您的應用程式用來驗證使用者或應用程式以進行存取,您必須設定服務應用程式的委派許可權。 宣告您的應用程式可以驗證使用者或應用程式以進行存取。 若未這麼做,在進行驗證嘗試時,將會產生類似下列的錯誤:

AADSTS650057: Invalid resource. The client has requested access to a resource which is not listed in the requested permissions in the client's application registration...

您必須遵循指示來 設定應用程式的委派許可權

您的 Microsoft Entra 租用戶系統管理員可能會制定原則,以防止租用戶使用者同意應用程式。 當使用者嘗試登入您的應用程式時,這種情況會導致類似下列的錯誤:

AADSTS65001: The user or administrator has not consented to use the application with ID '<App ID>' named 'App Name'

您必須連絡您的 Microsoft Entra 系統管理員,以授與租使用者中所有使用者的同意,或為特定應用程式啟用使用者同意。