次の方法で共有


Microsoft Fabric の SQL データベースでの認証

対象:SQL データベース in Microsoft Fabric

この記事では、SQL データベースの認証について説明します。

他のMicrosoft Fabric項目の種類と同様に、SQL データベースは Microsoft Entra 認証に依存します。

SQL データベースに対して正常に認証するには、Microsoft Entra ユーザー、 サービス プリンシパル、またはそのgroupに対する読み取り項目アクセス許可が Fabric で必要です。 Fabric ワークスペースまたは特定のデータベースへのアクセス権をMicrosoft Entra ID に付与する方法については、「Fabric アクセス制御」を参照してください。

SQL データベースへの接続文字列を Fabric で探すには、Microsoft Fabric で SQL データベースに接続する を参照してください。

サービス プリンシパルを有効にして Fabric および SQL データベースに接続できるようにするには、サービス プリンシパルが Fabric API の Fabric テナント設定を使用できるようにする必要もあります。 テナント設定を有効にする方法については、「Fabric テナント設定」を参照してください。

Microsoft Entra認証を使用して SQL データベースに接続する

次のMicrosoft Entra認証を使用してデータベースに接続できます。

アプリケーションとツールでは、Microsoft Entra認証をサポートするバージョンにドライバーをアップグレードし、SQL 接続文字列 に認証モード キーワード (ActiveDirectoryInteractiveActiveDirectoryServicePrincipalActiveDirectoryPassword など) を追加する必要があります。

Microsoft Entra ID のデータベース ユーザーを作成する

Transact-SQL を使用して SQL アクセス制御を構成する場合は、まず、データベース ユーザーを Microsoft Entra ID に対応するユーザー、サービス プリンシパル、またはそれらのグループとして、CREATE USER (Transact-SQL) を使用して作成する必要があります。

Fabric アクセス制御 (ワークスペース ロール または項目のアクセス許可) を使用する場合、データベース ユーザーを作成する必要はありません。 Fabric ポータルから SQL データベース レベルのロールを管理する場合も、ユーザーを作成する必要はありません。必要に応じてポータルが自動的にユーザーを作成します。

Microsoft Entra ユーザーとして接続するときにデータベース ユーザーを作成する

Microsoft Entra ユーザーとしてデータベースに接続している場合は、CREATE USERFROM EXTERNAL PROVIDER 句と組み合わせて使用して、Microsoft Entra プリンシパルのユーザーを作成する必要があります。 FROM EXTERNAL PROVIDER は、指定されたプリンシパル名をMicrosoft Entraで検証し、プリンシパル識別子 (ユーザーまたはグループのオブジェクト ID、アプリケーション ID、またはクライアント ID) を取得し、その識別子をユーザーのセキュリティ識別子 (SID) として SQL メタデータに格納します。 句を使用する場合は、Microsoft Entraの FROM EXTERNAL PROVIDERのメンバーである必要があります。 次のサンプル 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 プリンシパルのユーザーを作成するために、CREATE USER および TYPE 句で を発行する必要があります。 指定したプリンシパル名は、Microsoft Entraでは検証されません。 アプリケーション (アプリケーション開発者) は、有効な名前、有効な SID、ユーザー オブジェクト型を指定する必要があります。

指定したプリンシパルがMicrosoft Entraのユーザーまたはグループである場合、SID は、Microsoft Entra内のそのユーザーまたはグループのオブジェクト ID である必要があります。 指定したプリンシパルがMicrosoft Entraのサービス プリンシパルである場合、SID は、Microsoft Entraのサービス プリンシパルのアプリケーション ID (クライアント ID) である必要があります。 Microsoft Entraから取得したオブジェクト ID とアプリケーション ID (クライアント ID) は、binary(16) に変換する必要があります。

引数の値は、次のものである必要があります。

  • E - 指定したMicrosoft Entra プリンシパルがユーザーまたはサービス プリンシパルの場合。
  • X - 指定したMicrosoft Entra プリンシパルがグループの場合。

次の T-SQL サンプル スクリプトでは、Microsoft Entra ユーザーのデータベース ユーザー (bob@contoso.com) を作成し、新しいユーザーの SID をMicrosoft Entra ユーザーのオブジェクト ID に設定します。 ユーザーのオブジェクト ID の一意識別子が変換されて、 ステートメントに連結されます。 <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 [' + @group_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);

制限事項

  • Microsoft Entra IDは、Fabric でサポートされている唯一の ID プロバイダー SQL データベースです。 具体的には、SQL 認証はサポートされていません。
  • ログイン (サービス プリンシパル) はサポートされていません。
  • 現在、Microsoft Fabric の SQL データベースでサポートされている唯一の接続ポリシーは、Default です。 詳細については、「接続ポリシー」を参照してください。