Microsoft Fabric の SQL データベースでの認証
適用対象:✅ Microsoft Fabric の SQL データベース
この記事では、SQL データベースの認証について説明します。
他の Microsoft Fabric 項目の種類と同様、SQL データベースは Microsoft Entra 認証に依存します。
SQL データベースに対する認証を正常に行うには、Fabric のデータベースに対する項目の読み取りアクセス許可が、Microsoft Entra ユーザー、サービス プリンシパル、またはそのグループに必要です。 Fabric ワークスペースまたは特定のデータベースへのアクセス権を Microsoft Entra ID に付与する方法については、Fabric アクセス制御に関する記事を参照してください。
Fabric の SQL データベースへの接続文字列を検索するには、「Microsoft Fabric の SQL データベースに接続する」を参照してください。
Note
サービス プリンシパルを有効にして 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 ID のデータベース ユーザーを作成する
Transact-SQL を使用して SQL アクセス制御を構成する予定の場合は、まず Microsoft Entra ID (ユーザー、サービス プリンシパル、またはそのグループ) に対応するデータベース ユーザーを CREATE USER (Transact-SQL) を使用して作成する必要があります。
Fabric アクセス制御 (ワークスペース ロール または項目のアクセス許可) を使用する場合、データベース ユーザーを作成する必要はありません。 Fabric ポータルから SQL データベース レベルのロールを管理する場合も、ユーザーを作成する必要はありません。必要に応じてポータルが自動的にユーザーを作成します。
Microsoft Entra ユーザーとして接続しているときにデータベース ユーザーを作成する
Microsoft Entra ユーザーとしてデータベースに接続している場合、Microsoft Entra プリンシパルのユーザーを作成するために、FROM EXTERNAL PROVIDER 句を指定して CREATE USER
を使用する必要があります。 FROM EXTERNAL PROVIDER
は、指定されたプリンシパル名を Microsoft Entra で検証し、プリンシパル識別子 (ユーザーまたはグループのオブジェクト ID、アプリケーション ID、またはクライアント ID) を取得し、その識別子をユーザーのセキュリティ識別子 (SID) として SQL メタデータに格納します。 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 サービス プリンシパルとして接続しているときにデータベース ユーザーを作成する
アプリケーションがサービス プリンシパルを使用してデータベースに接続されている場合、アプリケーションは Microsoft Entra プリンシパルのユーザーを作成するために、SID と TYPE 句を指定して CREATE USER
を発行する必要があります。 指定したプリンシパル名は、Microsoft Entra では検証されません。 アプリケーション (アプリケーション開発者) は、有効な名前、有効な SID、ユーザー オブジェクト型を指定する必要があります。
指定したプリンシパルが Microsoft Entra のユーザーまたはグループである場合、SID は Microsoft Entra のそのユーザーまたはグループのオブジェクト ID である必要があります。 指定したプリンシパルが Microsoft Entra のサービス プリンシパルである場合、SID は Microsoft Entra のサービス プリンシパルのアプリケーション ID (クライアント ID) である必要があります。 Microsoft Entra から取得したオブジェクト ID とアプリケーション ID (クライアント ID) は、binary(16) に変換する必要があります。
TYPE
引数の値は、次のものである必要があります。
E
- 指定した Microsoft Entra プリンシパルがユーザーまたはサービス プリンシパルの場合。X
- 指定した Microsoft Entra プリンシパルがグループの場合。
次の T-SQL サンプル スクリプトでは、bob@contoso.com
という Microsoft Entra ユーザーのデータベース ユーザーを作成し、新しいユーザーの SID を Microsoft Entra ユーザーのオブジェクト ID に設定します。 ユーザーのオブジェクト ID の一意識別子が変換され、CREATE USER
ステートメントに連結されます。 <unique identifier sid>
を Microsoft Entra のユーザーのオブジェクト ID に置き換えます。
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 のサービス プリンシパルのクライアント ID に設定します。
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 をグループのオブジェクト ID に設定します。
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 データベースがサポートする唯一の ID プロバイダーです。 具体的には、SQL 認証はサポートされていません。
- ログイン (サービス プリンシパル) はサポートされていません。