Microsoft Fabric 中 SQL 資料庫中的驗證
✅適用於:Microsoft Fabric 中的 SQL 資料庫
本文說明 SQL 資料庫的驗證。
與其他Microsoft網狀架構項目類型一樣,SQL 資料庫依賴 Microsoft Entra 驗證。
若要成功向 SQL 資料庫進行驗證,Microsoft Entra 使用者、 服務主體或其 群組必須具有 Fabric 中資料庫的讀取項目許可權。 如需如何將 Microsoft Entra 身分識別存取權授與 Fabric 工作區或特定資料庫的相關信息,請參閱 網狀架構訪問控制。
若要在 Fabric 中尋找 SQL Database 連接字串,請參閱在 Microsoft Fabric 中連線到 SQL 資料庫。
注意
若要讓 服務主體 連線到 Fabric 和 SQL 資料庫,您也需要啟用 服務主體可以使用 Fabric API Fabric 租用戶設定。 若要了解如何啟用租用戶設定,請參閱 Fabric 租用戶設定。
使用 Microsoft Entra 驗證連線到 SQL 資料庫
您可以使用 Microsoft Entra 驗證來連線到資料庫:
- 支援Microsoft Entra 驗證的 SQL 工具,包括 SQL Server Management Studio 和使用 Visual Studio Code 的 mssql 擴充功能。
- 使用支援 Microsoft Entra 驗證之 SQL 用戶端驅動程式的應用程式,包括 SqlClient、 JDBC、 ODBC 和 OLE DB。
應用程式和工具必須將驅動程式升級至支援 Microsoft Entra 驗證的版本,並在 SQL 連接字串 中新增驗證模式關鍵詞,例如 ActiveDirectoryInteractive
、 ActiveDirectoryServicePrincipal
或 ActiveDirectoryPassword
。
建立Microsoft Entra 身分識別的資料庫使用者
如果您打算使用 Transact-SQL 設定 SQL 訪問控制,您必須先使用 CREATE USER (Transact-SQL) 建立對應至Microsoft Entra 身分識別的資料庫使用者 - 使用者、服務主體或其群組。
如果您使用網狀架構訪問控制(工作區角色或項目許可權),則不需要建立資料庫使用者。 當您從 Fabric 入口網站管理 SQL 資料庫層級角色時,您不需要建立使用者 - 入口網站會在需要時自動建立使用者。
以 Microsoft Entra 使用者身分連線時建立資料庫使用者
當您以Microsoft Entra 使用者身分連線到資料庫時,應該搭配FROM EXTERNAL PROVIDER子句來CREATE USER
建立Microsoft Entra 主體的使用者。 FROM EXTERNAL PROVIDER
使用 Microsoft Entra 來驗證指定的主體名稱、擷取主體標識碼(使用者或群組的物件識別碼、應用程式識別碼或用戶端識別碼),並將標識符儲存為 SQL 元數據中的使用者安全性識別碼 (SID)。 使用 FROM EXTERNAL PROVIDER
子句時,您必須是 Microsoft Entra 中目錄讀取者角色的成員。 下列 T-SQL 腳本範例會使用 FROM EXTERNAL PROVIDER
來根據 Microsoft Entra 使用者、Microsoft Entra 中的服務主體,或 Microsoft Entra 中的群組來建立使用者。
-- Create a user for a Microsoft Entra user
CREATE USER [alice@contoso.com] FROM EXTERNAL PROVIDER;
-- Create a user for a service principal in Microsoft Entra
CREATE USER [HRApp] FROM EXTERNAL PROVIDER;
-- Create a user for a group in Microsoft Entra
CREATE USER [HR] FROM EXTERNAL PROVIDER;
以Microsoft Entra 服務主體連線時建立資料庫使用者
當應用程式使用服務主體連線到資料庫時,應用程式必須發出 SID 和 TYPE 子句的問題CREATE USER
,才能為 Microsoft Entra 主體建立使用者。 Microsoft Entra 中未驗證指定的主體名稱。 應用程式(應用程式開發人員)有責任提供有效的名稱和有效的 SID 和使用者物件類型。
如果指定的主體是 Microsoft Entra 中的使用者或群組,SID 必須是該使用者或群組在 Microsoft Entra 中的物件識別碼。 如果指定的主體是 Microsoft Entra 中的服務主體,則 SID 必須是 Microsoft Entra 中服務主體的應用程式識別碼(用戶端標識符)。 從 Microsoft Entra 取得的物件識別碼和應用程式識別碼(用戶端識別符)必須轉換成 binary(16)。
自變數的值 TYPE
必須是:
E
- 如果指定的Microsoft Entra 主體是使用者或服務主體,則為 。X
- 如果指定的Microsoft Entra 主體是群組,
下列 T-SQL 範例腳本會為名為 bob@contoso.com
的 Microsoft Entra 使用者建立資料庫使用者,並將新使用者的 SID 設定為 Microsoft Entra 使用者的物件識別符。 用戶物件識別碼的唯一 CREATE USER
標識碼會轉換,然後串連成 語句。 將取代 <unique identifier sid>
為 Microsoft Entra 中的使用者物件識別碼。
DECLARE @principal_name SYSNAME = 'bob@contoso.com';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- user's object ID in Microsoft Entra
-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);
-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = E;'
EXEC (@cmd);
下列範例會為名為 HRApp
的 Microsoft Entra 服務主體建立資料庫使用者,並將新使用者的 SID 設定為 Microsoft Entra 中服務主體的用戶端識別碼。
DECLARE @principal_name SYSNAME = 'HRApp';
DECLARE @clientId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's client ID in Microsoft Entra
-- Convert the guid to the right type
DECLARE @castClientId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @clientId), 1);
-- Construct command: CREATE USER [@principal_name] WITH SID = @castClientId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castClientId + ', TYPE = E;'
EXEC (@cmd);
下列範例會為名為 HR
的 Microsoft Entra 群組建立資料庫使用者,並將新使用者的 SID 設定為群組的物件識別碼。
DECLARE @group_name SYSNAME = 'HR';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's object ID in Microsoft Entra
-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);
-- Construct command: CREATE USER [@groupName] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);
限制
- Microsoft Entra ID 是 Fabric 中唯一支持的識別提供者 SQL 資料庫。 具體而言,不支援 SQL 驗證。
- 不支援登入(伺服器主體)。