Principaux de serveur Microsoft Entra
S’applique à : Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics (pools SQL dédiés uniquement)
Vous pouvez désormais créer et utiliser des principaux de serveur Microsoft Entra ID (anciennement, Azure Active Directory), qui sont des connexions dans la base de données virtuelle master
d’une instance SQL Database (Aperçu) et Azure SQL Managed instance.
Notes
Les principaux de serveur Microsoft Entra (connexions) sont actuellement en préversion publique pour la base de données Azure SQL et Azure Synapse Analytics. La connexion à Microsoft Entra est en disponibilité générale pour Azure SQL Managed Instance et SQL Server 2022.
L'utilisation des principes du serveur Microsoft Entra avec votre ressource Azure SQL présente plusieurs avantages :
- Prise en charge des Rôles serveur Azure SQL Database pour la gestion des autorisations.
- Prise en charge de plusieurs utilisateurs Microsoft Entra avec des rôles spéciaux pour SQL Database, comme les rôles
loginmanager
etdbmanager
. - Parité fonctionnelle entre les connexions SQL et les connexions Microsoft Entra.
- Augmentation de la prise en charge de l’amélioration fonctionnelle, par exemple avec l’authentification Microsoft Entra uniquement. L’authentification Microsoft Entra uniquement permet la désactivation de l’authentification SQL, ce qui comprend l’administrateur du serveur SQL, les connexions SQL et les utilisateurs.
- Permet aux principaux Microsoft Entra de prendre en charge les géo-réplicas. Les principaux Microsoft Entra peuvent se connecter au géo-réplica d'une base de données utilisateur, avec des autorisations en lecture seule et refus au serveur principal.
- Utilisez les connexions de principal de service Microsoft Entra avec des rôles spéciaux pour automatiser entièrement la création et la maintenance des utilisateurs et des bases de données avec les applications Microsoft Entra.
Pour plus d'informations sur l'authentification Microsoft Entra dans Azure SQL, consultez Utiliser l'authentification Microsoft Entra
Les autorisations suivantes sont requises pour utiliser ou créer des connexions Microsoft Entra dans la base de données master
virtuelle.
- Autorisation d'administrateur Microsoft Entra ou appartenance au rôle de serveur
loginmanager
. La première connexion Microsoft Entra ne peut être créée que par l’administrateur Microsoft Entra. - Doit être un membre de Microsoft Entra ID dans le même annuaire que celui utilisé pour la base de données Azure SQL
Par défaut, les connexions Microsoft Entra nouvellement créées dans la base de données master
bénéficient de l'autorisation VIEW ANY DATABASE.
Utilisez la syntaxe suivante pour créer et gérer des principaux de serveur et de base de données Microsoft Entra.
Cette syntaxe crée une connexion au niveau du serveur basée sur une identité Microsoft Entra. Seul l’administrateur Microsoft Entra peut exécuter cette commande dans la base de données master
virtuelle.
CREATE LOGIN login_name
{
FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid']
| WITH <option_list> [,..]
}
<option_list> ::=
PASSWORD = { 'password' }
[ , SID = sid ]
Le login_name spécifie le principal Microsoft Entra, qui est un utilisateur, un groupe ou une application Microsoft Entra.
Pour plus d'informations, consultez CREATE LOGIN (Transact-SQL).
La syntaxe T-SQL suivante crée un principal Microsoft Entra au niveau de la base de données, associé à une connexion Microsoft Entra dans la base de données virtuelle master
. Comme pour la syntaxe de création d'une base de données contenant un utilisateur Microsoft Entra, la seule différence est de FROM LOGIN [login_name]
spécifier plutôt que FROM EXTERNAL PROVIDER
.
Pour créer un utilisateur Microsoft Entra à partir d’une connexion Microsoft Entra, utilisez la syntaxe suivante.
CREATE USER [user_name] FROM LOGIN [login_name]
Vous pouvez utiliser la colonne SID
de sys.database_principals pour faire la distinction entre un utilisateur de base de données autonome Microsoft Entra et un utilisateur Microsoft Entra créé à partir d'une connexion. Pour un utilisateur de base de données autonome, SID
est une chaîne binaire de longueur 16. Pour un utilisateur basé sur la connexion, SID
a pour longueur 18 avec un suffixe AADE
.
Notes
L'ajout du suffixe AADE
au SID permet d'identifier un utilisateur Microsoft Entra comme ayant été créé à partir d'une connexion. Toutefois, cela signifie également que les SID pour la connexion et ses utilisateurs ne correspondent pas entre sys.server_principals
et sys.database_principals
. Pour mettre l'utilisateur en corrélation avec sa connexion, le suffixe AADE
doit d'abord être supprimé.
Pour comprendre la différence conceptuelle entre les utilisateurs basés sur la connexion et les utilisateurs de base de données autonome, consultez utilisateurs de base de données autonome.
Pour plus d'informations sur la syntaxe de création d'un utilisateur, consultez CREATE USER (Transact-SQL).
La syntaxe DDL ALTER LOGIN (Transact-SQL) est utilisée pour activer ou désactiver une connexion Microsoft Entra dans la base de données Azure SQL.
ALTER LOGIN [login_name] DISABLE
Lorsqu'une connexion est désactivée, les connexions ne sont plus autorisées à l'aide de ce principal de serveur. Elle désactive également tous les principaux de base de données (utilisateurs) créés à partir de cette connexion pour pouvoir se connecter à leurs bases de données respectives.
Notes
ALTER LOGIN login_name DISABLE
n'affecte pas les utilisateurs de base de données autonome, car ils ne sont pas associés aux connexions.ALTER LOGIN login_name DISABLE
n’est pas pris en charge pour les groupes Microsoft Entra.Une connexion désactivée individuelle ne peut pas appartenir à un utilisateur qui fait partie d’un groupe de connexion créé dans la base de données
master
(par exemple, un groupe d’administration Microsoft Entra).Pour que les modifications
DISABLE
ouENABLE
prennent effet immédiatement, le cache d’authentification et le cache TokenAndPermUserStore doivent être effacés à l’aide de commandes T-SQL.DBCC FLUSHAUTHCACHE DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Des rôles spéciaux pour SQL Database peuvent être attribués aux utilisateurs dans la base de données master
virtuelle pour les principaux Microsoft Entra, notamment dbmanager et loginmanager.
Des rôles serveur Azure SQL Database peuvent être affectés à des connexions dans la base de données master
virtuelle.
Pour obtenir un tutoriel sur la façon d’accorder ces rôles, consultez Tutoriel : Créer et utiliser des connexions serveur Microsoft Entra.
- L’administrateur du serveur SQL ne peut pas créer de connexions ni d’utilisateurs Microsoft Entra dans les bases de données.
- Un administrateur SQL ou utilisateur SQL ne peut pas exécuter les opérations Microsoft Entra suivantes :
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
EXECUTE AS USER [bob@contoso.com]
ALTER AUTHORIZATION ON securable::name TO [bob@contoso.com]
- L’emprunt d’identité des principaux (connexions) de serveur Microsoft Entra n’est pas pris en charge sur Azure SQL Database et Azure Synapse Analytics. Cependant, il est pris en charge sur Azure SQL Managed Instance :
- Clause EXECUTE AS (Transact-SQL)
- EXECUTE AS (Transact-SQL)
- L’emprunt d’identité des principaux (utilisateurs) de base de données Microsoft Entra dans une base de données utilisateur est prise en charge sur tous les produits Microsoft SQL.
- Les connexions Microsoft Entra ne peuvent pas se chevaucher avec celles de l'administrateur Microsoft Entra. L'administrateur Microsoft Entra est prioritaire sur n'importe quelle connexion. Si un compte Microsoft Entra a déjà accès au serveur en tant qu'administrateur Microsoft Entra, individuellement ou en tant que membre d'un groupe, toute connexion créée pour ce compte n'aura aucun effet. Cependant, la création de la connexion n'est pas bloquée via T-SQL. Une fois que le compte s’est authentifié auprès du serveur, la connexion disposera des autorisations effectives d’un administrateur Microsoft Entra et non d’une connexion nouvellement créée.
- La modification des autorisations sur un objet de connexion Microsoft Entra spécifique n'est pas prise en charge :
GRANT <PERMISSION> ON LOGIN :: <Microsoft Entra account> TO <Any other login>
- Lorsque vous modifiez les autorisations d'une connexion Microsoft Entra, par défaut, les modifications prennent effet uniquement la prochaine fois que la connexion se fait à la base de données Azure SQL. Les connexions ouvertes existantes avec la connexion ne sont pas affectées. Pour forcer les modifications d'autorisations à prendre effet immédiatement, vous pouvez effacer manuellement l'authentification et TokenAndPermUserStore, comme décrit précédemment dans désactiver ou activer une connexion à l'aide de ALTER LOGIN. Ce comportement s'applique également lors de la modification de l'abonnement au rôle serveur avec ALTER SERVER ROLE.
- Dans SQL Server Management Studio et Azure Data Studio, la commande de script permettant de créer un utilisateur n'est pas activée s'il existe déjà une connexion Microsoft Entra portant le même nom dans
master
. Il génère toujours le T-SQL pour un utilisateur Microsoft Entra de base de données autonome. - Une erreur peut se produire si vous essayez de créer une connexion ou un utilisateur à partir d’un principal de service avec un nom d’affichage non unique. Pour plus d’informations sur la prévention de cette erreur, consultez Connexions et utilisateurs Microsoft Entra avec des noms d’affichage non uniques.
Avec les connexions Microsoft Entra en préversion publique pour Azure SQL Database et Azure Synapse Analytics, les limitations connues sont les suivantes :
- Les rôles de serveur Azure SQL Database ne sont pas pris en charge pour les groupes Microsoft Entra.
- Si votre administrateur SQL est un groupe Microsoft Entra, il existe certaines limitations lorsque les utilisateurs de ce groupe se connectent. Individuellement, les utilisateurs Microsoft Entra ne font pas partie de la table
sys.server_principals
. Cela a diverses conséquences, notamment les appels àSUSER_SID
qui renvoientNULL
. - En outre, les connexions utilisateur Microsoft Entra qui font partie de connexions de groupe Microsoft Entra ne sont pas créées implicitement, ce qui signifie qu’elles n’auront pas de schéma par défaut et ne pourront pas effectuer d’opérations telles que
CREATE SCHEMA
tant qu’une connexion utilisateur Microsoft Entra n’aura pas été créée ou qu’un schéma par défaut n’aura pas été affecté au groupe. - La modification de la propriété d'une base de données en groupe Microsoft Entra en tant que propriétaire de base de données n'est pas prise en charge.
ALTER AUTHORIZATION ON database::<mydb> TO [my_aad_group]
échoue avec un message d'erreur :Msg 33181, Level 16, State 1, Line 4 The new owner cannot be Azure Active Directory group.