共用方式為


在 Azure 數據總管中建立Microsoft Entra 應用程式註冊

Microsoft Entra 應用程式驗證 會用於應用程式,例如自動服務或排程流程,而不需要使用者存在,即可存取 Azure 數據總管。 如果您使用應用程式連線到 Azure 資料總管資料庫,例如 Web 應用程式,您應該使用服務主體驗證進行驗證。 本文詳細說明如何建立及註冊Microsoft Entra 服務主體,然後授權它存取 Azure 數據總管資料庫。

建立 Microsoft Entra 應用程式註冊

Microsoft Entra 應用程式驗證需要建立及註冊具有 Microsoft Entra 識別碼的應用程式。 在 Microsoft Entra 租使用者中建立應用程式註冊時,會自動建立服務主體。

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

註冊應用程式

  1. 登入 Azure 入口網站,然後開啟 [Microsoft項目標識符] 刀鋒視窗。

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

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

  3. 為應用程式命名,例如 "example-app"。

  4. 選取一個受支援的帳戶類型,以決定誰可以使用該應用程式。

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

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

  6. 選取註冊

設定驗證

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

在本節的課程中,您將複製下列值: 應用程式識別碼密鑰值。 將這些值貼到某個位置,例如文本編輯器,以用於將客戶端認證設定至資料庫的步驟

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

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

    注意

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

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

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

  4. 輸入描述和到期日。

  5. 選取 [新增]。

  6. 複製金鑰值。

    注意

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

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

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

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

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

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

  2. 選取新增權限

  3. 選取我組織使用的 API

  4. 搜尋並選取 [Azure 數據總管]。

    顯示如何新增 Azure 資料總管 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 系統管理員,以授與租使用者中所有使用者的同意,或為特定應用程式啟用使用者同意。