Partager via


Authentification dans une base de données SQL dans Microsoft Fabric

S’applique à : base de données SQL dans Microsoft Fabric

Cet article explique l’authentification pour les bases de données SQL.

Tout comme d’autres types d’éléments Microsoft Fabric, les bases de données SQL s’appuient sur l’authentification Microsoft Entra.

Pour s’authentifier auprès d’une base de données SQL, un utilisateur Microsoft Entra, un principal de service, ou leur groupe, doivent disposer de l’autorisation d’élément de lecture pour la base de données dans Fabric. Pour plus d’informations sur l’octroi d’un accès d’identité Microsoft Entra à un espace de travail Fabric ou à une base de données spécifique, consultez Contrôles d’accès Fabric.

Pour rechercher la chaîne de connexion à votre base de données SQL dans Fabric, consultez Se connecter à votre base de données SQL dans Microsoft Fabric.

Remarque

Pour permettre aux principaux de service de se connecter à Fabric et aux bases de données SQL, vous devez également activer le paramètre de locataire Fabric Les principaux de service peuvent utiliser les API Fabric. Pour savoir comment activer les paramètres du locataire, consultez Paramètres du locataire Fabric.

Se connecter à une base de données SQL à l’aide de l’authentification Microsoft Entra

Vous pouvez vous connecter à une base de données à l’aide de l’authentification Microsoft Entra avec :

Les applications et les outils doivent mettre à niveau les pilotes vers des versions qui prennent en charge l’authentification Microsoft Entra et ajouter un mot clé de mode d’authentification dans leur chaîne de connexion SQL, comme ActiveDirectoryInteractive, ActiveDirectoryServicePrincipal ou ActiveDirectoryPassword.

Créer des utilisateurs de base de données pour les identités Microsoft Entra

Si vous envisagez de configurer des contrôles d’accès SQL avec Transact-SQL, vous devez d’abord créer des utilisateurs de base de données correspondant à vos identités Microsoft Entra, c’est-à-dire des utilisateurs, des principaux de service ou leurs groupes, en utilisant CREATE USER (Transact-SQL).

La création d’utilisateurs de base de données n’est pas nécessaire si vous utilisez Contrôles d’accès Fabric (rôles d’espace de travail ou autorisations d’élément). Vous n’avez pas non plus besoin de créer des utilisateurs lorsque vous gérez les rôles au niveau de la base de données SQL à partir du portail Fabric. Celui-ci crée automatiquement des utilisateurs lorsque cela est nécessaire.

Créer des utilisateurs de base de données lorsque vous êtes connecté en tant qu’utilisateur Microsoft Entra

Lorsque vous êtes connecté à votre base de données en tant qu’utilisateur Microsoft Entra, vous devez utiliser CREATE USER avec la clause FROM EXTERNAL PROVIDER pour créer des utilisateurs pour les principaux Microsoft Entra. FROM EXTERNAL PROVIDER valide le nom de principal spécifié avec Microsoft Entra, récupère l’identificateur du principal (ID d’objet, ID d’application ou ID client de l’utilisateur ou du groupe) et stocke l’identificateur en tant qu’identificateur de sécurité (SID) de l’utilisateur dans les métadonnées SQL. Vous devez être membre du rôle Lecteurs de répertoire dans Microsoft Entra pour utiliser la clause FROM EXTERNAL PROVIDER. Les exemples de scripts T-SQL suivants utilisent FROM EXTERNAL PROVIDER pour créer un utilisateur basé sur un utilisateur Microsoft Entra, un principal de service dans Microsoft Entra ou un groupe dans 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; 

Créer des utilisateurs de base de données lorsque vous connecté en tant que principal de service Microsoft Entra

Lorsqu’une application est connectée à une base de données avec un principal de service, l’application doit émettre CREATE USER avec les clauses SID et TYPE pour créer des utilisateurs pour les principaux Microsoft Entra. Le nom de principal spécifié n’est pas validé dans Microsoft Entra. Il incombe à l’application (développeur d’applications) de fournir un nom valide et un SID valide, ainsi qu’un type d’objet utilisateur.

Si le principal spécifié est un utilisateur ou un groupe dans Microsoft Entra, le SID doit être un ID d’objet de cet utilisateur ou groupe dans Microsoft Entra. Si le principal spécifié est un principal de service dans Microsoft Entra, le SID doit être un ID d’application (ID client) du principal de service dans Microsoft Entra. Les ID d’objet et les ID d’application (ID client) obtenus à partir de Microsoft Entra doivent être convertis en binaires(16).

La valeur de l’argument TYPE doit être :

  • E si le principal Microsoft Entra spécifié est un utilisateur ou un principal de service.
  • X si le principal Microsoft Entra spécifié est un groupe.

L’exemple de script T-SQL suivant crée un utilisateur de base de données pour l’utilisateur Microsoft Entra, nommé bob@contoso.com, en définissant le SID du nouvel utilisateur sur l’ID d’objet de l’utilisateur Microsoft Entra. L’identificateur unique de l’ID d’objet de l’utilisateur est converti, puis concaténé dans une instruction CREATE USER. Remplacez <unique identifier sid> par l’ID d’objet de l’utilisateur dans 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);

L’exemple suivant crée un utilisateur de base de données pour le principal du service Microsoft Entra, nommé HRApp, en définissant le SID du nouvel utilisateur sur l’ID client du principal de service dans 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);

L’exemple suivant crée un utilisateur de base de données pour le groupe Microsoft Entra, nommé HR, en définissant le SID du nouvel utilisateur sur l’ID d’objet du groupe.

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);

Limites

  • Microsoft Entra ID est la seule base de données SQL du fournisseur d’identité dans Fabric prise en charge. Plus précisément, l’authentification SQL n’est pas prise en charge.
  • Les connexions (principaux de serveur) ne sont pas prises en charge.