在 Azure 數據總管中建立Microsoft Entra 應用程式註冊
Microsoft Entra 應用程式驗證 會用於應用程式,例如自動服務或排程流程,而不需要使用者存在,即可存取 Azure 數據總管。 如果您使用應用程式連線到 Azure 資料總管資料庫,例如 Web 應用程式,您應該使用服務主體驗證進行驗證。 本文詳細說明如何建立及註冊Microsoft Entra 服務主體,然後授權它存取 Azure 數據總管資料庫。
建立 Microsoft Entra 應用程式註冊
Microsoft Entra 應用程式驗證需要建立及註冊具有 Microsoft Entra 識別碼的應用程式。 在 Microsoft Entra 租使用者中建立應用程式註冊時,會自動建立服務主體。
應用程式註冊可以在 Azure 入口網站 中建立,或以程序設計方式使用 Azure CLI 來建立。 選擇符合您案例的索引標籤。
註冊應用程式
登入 Azure 入口網站,然後開啟 [Microsoft項目標識符] 刀鋒視窗。
流覽至 應用程式註冊,然後選取 [新增註冊]。
為應用程式命名,例如 "example-app"。
選取一個受支援的帳戶類型,以決定誰可以使用該應用程式。
在 [重新導向 URI] 底下,針對您要建立的應用程式類型選取 [Web]。 URI 是選擇性的,在此情況下會保留空白。
選取註冊。
設定驗證
有兩種驗證類型可用於服務主體:密碼式驗證 (應用程式密碼) 和憑證式驗證。 下一節說明如何針對應用程式的認證使用密碼型驗證。 或者,您可以使用 X509 憑證來驗證您的應用程式。 如需詳細資訊,請參閱 如何設定Microsoft以憑證為基礎的驗證。
在本節的課程中,您將複製下列值: 應用程式識別碼 和 密鑰值。 將這些值貼到某個位置,例如文本編輯器,以用於將客戶端認證設定至資料庫的步驟。
流覽至 [ 概觀] 刀鋒視窗。
複製應用程式 (用戶端) 識別碼和目錄 (租使用者) 識別碼。
注意
您需要應用程式識別碼和租使用者標識碼,才能 授權服務主體存取資料庫。
在 [ 憑證與秘密] 刀鋒視窗中,選取 [ 新增客戶端密碼]。
輸入描述和到期日。
選取 [新增]。
複製金鑰值。
注意
當您離開此頁面時,將無法存取索引鍵值。
您已建立您的 Microsoft Entra 應用程式和服務主體。
設定應用程式的委派許可權 - 選擇性
如果您的應用程式需要使用呼叫使用者的認證來存取資料庫,請設定應用程式的委派許可權。 例如,如果您要建置 Web API,而且想要使用呼叫 API 的使用者認證進行驗證。
如果您只需要存取授權的數據資源,您可以略過本節,並繼續 將資料庫存取權授與服務主體。
瀏覽至應用程式註冊的 [API 許可權] 刀鋒視窗。
選取新增權限。
選取我組織使用的 API。
搜尋並選取 [Azure 數據總管]。
在 [委派的許可權] 中 ,選取 [user_impersonation ] 方塊。
選取 [新增權限]。
授與服務主體對資料庫的存取權
建立應用程式註冊之後,您必須將對應的服務主體存取權授與資料庫。 下列範例提供查看器存取權。 如需其他角色,請參閱 管理資料庫許可權。
使用在上一 個步驟中複製的應用程式標識碼和租用戶標識碼。
在查詢編輯器中執行下列命令,將佔位元值 ApplicationID 和 TenantID 取代為您的實際值:
.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 系統管理員,以授與租使用者中所有使用者的同意,或為特定應用程式啟用使用者同意。