Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article vous guide dans la création et l’utilisation des connexions prises en charge par Microsoft Entra ID (anciennement Azure Active Directory) au sein de la base de données virtuelle master d’un pool SQL dédié Azure Synapse Analytics (anciennement SQL DW). Les pools SQL dédiés dans les espaces de travail Azure Synapse Analytics n'utilisent pas de serveurs SQL logiques.
Remarque
Les principaux de serveur Microsoft Entra sont actuellement en préversion pour Azure Synapse Analytics.
Dans ce tutoriel, vous allez apprendre à :
- Créez un identifiant de connexion Microsoft Entra dans la base de données virtuelle
master - créer un utilisateur mappé à une connexion Microsoft Entra dans la base de données
mastervirtuelle - Utiliser la
WITH OBJECT_IDsyntaxe pour les noms d’affichage non uniques - Accorder des rôles serveur à un utilisateur Microsoft Entra
- Désactiver une connexion Microsoft Entra
Prerequisites
- Un pool SQL dédié Azure Synapse Analytics et une base de données.
- Authentification Microsoft Entra configurée pour Azure Synapse Analytics. Pour plus d’informations, voir Configurer et gérer l’authentification Microsoft Entra avec Azure Synapse Analytics.
- Cet article vous indique comment créer une connexion Microsoft Entra et un utilisateur dans la base de données
mastervirtuelle. Seul un administrateur Microsoft Entra peut créer un utilisateur dans la base de donnéesmastervirtuelle. Nous vous recommandons donc d’utiliser le compte Administrateur Microsoft Entra pour suivre ce tutoriel. Un principal Microsoft Entra avec le rôleloginmanagerpeut créer une connexion, mais pas un utilisateur dans la base de donnéesmastervirtuelle.
Remarque
Pour les organisations qui traitent des noms d’affichage non uniques dans Microsoft Entra ID (en particulier pour les principaux de service), vérifiez que vous disposez des informations d’ID d’objet disponibles pour tous les principaux de service pour lesquels vous envisagez de créer des connexions. L’extension WITH OBJECT_ID de syntaxe peut vous aider à résoudre ces scénarios.
Créer une connexion Microsoft Entra
Créez un identifiant de connexion pour un compte Microsoft Entra. Dans cet exemple, utilisez
bob@contoso.comqui existe dans le domaine Microsoft Entra appelécontoso. Vous pouvez également créer une connexion depuis un groupe Microsoft Entra ou un principal de service (applications). Pour plus d'informations, consultez CREATE LOGIN (Transact-SQL).Remarque
La première connexion Microsoft Entra doit être créée par l’administrateur Microsoft Entra. L’administrateur Microsoft Entra peut être un utilisateur ou un groupe Microsoft Entra. Un login d’authentification SQL ne peut pas créer de logins Microsoft Entra.
Tip
Si vous rencontrez des problèmes avec des noms d’affichage non uniques dans Microsoft Entra ID, utilisez l’extension
WITH OBJECT_IDsyntaxique. Cette fonctionnalité est particulièrement utile pour les entités de service ayant des noms d’affichage en double. Par exemple:CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb'Pour plus d’informations, voir Considérations sur le nom.
En utilisant SQL Server Management Studio (SSMS), connectez-vous à votre pool SQL dédié avec le compte administrateur Microsoft Entra.
Développer Bases de données>Bases de données système. Cliquez avec le bouton droit sur la base de données
masteret sélectionnez nouvelle requête pour ouvrir une nouvelle fenêtre de requête dans le contexte de la base de donnéesmaster.Exécutez la requête suivante :
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GOVérifiez la connexion créée dans
sys.server_principals. Exécutez la requête suivante :SELECT name, type_desc, type, is_disabled FROM sys.server_principals WHERE type_desc like 'external%'Vous voyez une sortie similaire à celle suivante :
Name type_desc type is_disabled bob@contoso.com EXTERNAL_LOGIN E 0La connexion
bob@contoso.comest créée dans la base de données virtuellemaster.
Créer un utilisateur à partir d’une connexion Microsoft Entra
Après avoir créé une connexion Microsoft Entra, créez un utilisateur Microsoft Entra au niveau de la base de données qui correspond à la connexion Microsoft Entra dans la
masterbase de données virtuelle. Pour montrer comment ajouter l’utilisateur à des rôles spéciaux, utilisez notre exemple,bob@contoso.com, pour créer un utilisateur dans la base de données virtuellemaster. Seul un administrateur Microsoft Entra ou serveur SQL peut créer des utilisateurs dans la base de donnéesmastervirtuelle.Utilisez la base de données virtuelle
master, mais vous pouvez vous reconnecter à une base de données de votre choix si vous souhaitez créer des utilisateurs dans d’autres bases de données. Exécutez la requête suivante.CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]Tip
Bien qu’il ne soit pas nécessaire d’utiliser des alias d’utilisateur Microsoft Entra (par exemple),
bob@contoso.comil est recommandé d’utiliser le même alias pour les utilisateurs De Microsoft Entra et les connexions Microsoft Entra.Si vous devez créer un utilisateur directement depuis un fournisseur externe avec un identifiant d’objet spécifique (par exemple, pour résoudre des problèmes de noms d’affichage non uniques), utilisez la syntaxe suivante :
CREATE USER [user_name] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'objectid'Vérifiez l’utilisateur créé dans
sys.database_principals. Exécutez la requête suivante :SELECT name, type_desc, type FROM sys.database_principals WHERE type_desc like 'external%'Vous voyez une sortie similaire à celle suivante :
Name type_desc type bob@contoso.com EXTERNAL_USER E
Remarque
La syntaxe existante permettant de créer un utilisateur Microsoft Entra sans connexion Microsoft Entra est toujours prise en charge. Si vous exécutez la syntaxe suivante, vous créez un utilisateur autonome de base de données dans la base de données spécifique à laquelle vous êtes connecté. Cet utilisateur n’est associé à aucun login, même si un login du même nom existe dans la base de données virtuelle master.
Par exemple : CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER.
Vous pouvez créer une connexion Microsoft Entra en utilisant un principal de service avec un nom d’affichage non unique. Pour plus d’informations, voir Considérations sur le nom.
Accorder des rôles au niveau du serveur aux connexions Microsoft Entra
Vous pouvez ajouter des connexions à des rôles fixes au niveau du serveur, comme ##MS_DefinitionReader##, ##MS_ServerStateReader## ou ##MS_ServerStateManager## dans la master base de données.
Remarque
Les rôles au niveau du serveur mentionnés ici ne sont pas pris en charge pour les groupes Microsoft Entra.
ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateManager## ADD MEMBER [AzureAD_object];
Les autorisations ne sont pas effectives jusqu’à ce que l’utilisateur se reconnecte. Videz également le cache DBCC :
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Pour vérifier les connexions Microsoft Entra faisant partie des rôles au niveau du serveur, exécutez la requête suivante :
SELECT roles.principal_id AS RolePID,roles.name AS RolePName,
server_role_members.member_principal_id AS MemberPID, members.name AS MemberPName
FROM sys.server_role_members AS server_role_members
INNER JOIN sys.server_principals AS roles
ON server_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.server_principals AS members
ON server_role_members.member_principal_id = members.principal_id;
Accorder des rôles spéciaux pour les utilisateurs de Microsoft Entra
Vous pouvez attribuer des rôles spéciaux Azure Synapse Analytics aux utilisateurs dans la masterbase de données virtuelle.
Pour attribuer l’un des rôles spéciaux de base de données à un utilisateur, celui-ci doit exister dans la base de données virtuelle master .
Pour ajouter un utilisateur à un rôle, lancez la requête suivante :
ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object]
Pour supprimer un utilisateur d’un rôle, exécutez la requête suivante :
ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object]
AzureAD_object peut être un utilisateur, un groupe ou un principal de service dans Microsoft Entra ID.
Dans l’exemple suivant, vous créez l’utilisateur bob@contoso.com. Attribuez les rôles dbmanager et loginmanager à l’utilisateur.
Exécutez la requête suivante :
ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]Vérifiez l’attribution de rôle de base de données en exécutant la requête suivante :
SELECT DP1.name AS DatabaseRoleName, isnull (DP2.name, 'No members') AS DatabaseUserName FROM sys.database_role_members AS DRM RIGHT OUTER JOIN sys.database_principals AS DP1 ON DRM.role_principal_id = DP1.principal_id LEFT OUTER JOIN sys.database_principals AS DP2 ON DRM.member_principal_id = DP2.principal_id WHERE DP1.type = 'R'and DP2.name like 'bob%'Vous voyez une sortie similaire à celle suivante :
DatabaseRoleName DatabaseUserName dbmanager bob@contoso.com loginmanager bob@contoso.com
Facultatif - désactiver une connexion
Utilisez la syntaxe DDL ALTER LOGIN (Transact-SQL) pour activer ou désactiver un login Microsoft Entra dans un pool SQL dédié.
ALTER LOGIN [bob@contoso.com] DISABLE
Pour que les modifications DISABLE ou ENABLE prennent effet immédiatement, videz le cache d’authentification et le cache TokenAndPermUserStore en utilisant les commandes T-SQL suivantes :
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Vérifiez que le login est désactivé en lançant la requête suivante :
SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1