Principaux de serveur Microsoft Entra

S’applique à :Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (pools SQL dédiés uniquement)

Vous pouvez maintenant créer et utiliser des principaux de serveur à partir de Microsoft Entra ID (anciennement Azure Active Directory), qui sont des connexions dans la base de données virtuelle master d’Azure SQL Database et d’Azure SQL Managed Instance.

Remarque

Les principaux de serveur (connexions) Microsoft Entra sont généralement disponibles pour Azure SQL Database, Azure SQL Managed Instance et SQL Server 2022 et pour les versions ultérieures. Les principaux de serveur Microsoft Entra sont actuellement disponibles en version préliminaire publique pour Azure Synapse Analytics.

L'utilisation des principes du serveur Microsoft Entra avec votre ressource Azure SQL présente plusieurs avantages :

  • Prise en charge des rôles de 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 et dbmanager.
  • Parité fonctionnelle entre les connexions SQL et les connexions Microsoft Entra.
  • Améliorer la prise en charge des améliorations fonctionnelles, par exemple en utilisant 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 de refus sur le serveur principal.
  • Utilisez des connexions avec un principal de service Microsoft Entra doté de rôles spéciaux pour automatiser entièrement la création et la maintenance des utilisateurs et des bases de données à l’aide d’applications Microsoft Entra.

Pour plus d'informations sur l'authentification Microsoft Entra dans Azure SQL, consultez Utiliser l'authentification Microsoft Entra

autorisations

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.

Syntaxe des principaux de Microsoft Entra

Utilisez la syntaxe suivante pour créer et gérer des principaux de serveur et de base de données Microsoft Entra.

Créer une connexion

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, c’est-à-dire un utilisateur, un groupe ou une application de Microsoft Entra.

Pour plus d'informations, consultez CREATE LOGIN (Transact-SQL).

Créer un utilisateur à partir de la connexion

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 dans la syntaxe de création d’une base de données contenant un utilisateur Microsoft Entra, la seule différence est qu’il faut spécifier FROM LOGIN [login_name] 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 avec identifiant de connexion, SID a une longueur de 18 avec le suffixe AADE.

Remarque

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

Désactiver ou activer une connexion à l'aide de ALTER LOGIN

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 utilisateurs de base de données créés à partir de ce login, les empêchant ainsi de se connecter à leur base de données respective.

Remarque

  • 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 ou ENABLE 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 
    

Rôles des principaux Microsoft Entra

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 de serveur Azure SQL Database peuvent être affectés à des comptes de connexion dans la base de données virtuelle master.

Pour obtenir un tutoriel sur la façon d’accorder ces rôles, consultez Tutoriel : Créer et utiliser des connexions serveur Microsoft Entra.

Limitations et remarques

  • 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 de serveur Microsoft Entra (connexions) n’est pas pris en charge dans Azure SQL Database ni dans Azure Synapse Analytics. Il est pris en charge pour SQL Managed Instance :
  • Les connexions Microsoft Entra ne peuvent pas se chevaucher avec celles de l'administrateur Microsoft Entra. L’administrateur Microsoft Entra prévaut sur toute 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 déjà ouvertes avec cet identifiant 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, la commande de script permettant de créer un utilisateur ne vérifie pas s’il existe déjà une connexion master Microsoft Entra portant le même nom. Il génère toujours le code T-SQL d’un utilisateur Microsoft Entra contenu dans la base de données.
  • 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.
  • Dans Azure SQL Database et Azure Synapse Analytics, les utilisateurs de base de données créés à l’aide des connexions Microsoft Entra peuvent rencontrer des retards lors de l’octroi de rôles et d’autorisations. Si vous rencontrez ce problème, utilisez les commandes suivantes pour résoudre le problème :
    • Supprimez l’utilisateur de la base de données utilisateur.
    • Exécutez DBCC FREESYSTEMCACHE('TokenAndPermUserStore') pour effacer les caches de sécurité sur la base de données.
    • Exécutez DBCC FLUSHAUTHCACHE pour effacer le cache de contexte d’authentification fédéré.
    • Créez l’utilisateur en fonction de la connexion.

Limitations du principal de serveur de groupe Microsoft Entra

Voici les limitations connues pour les connexions de groupe Microsoft Entra dans Azure SQL Database et Azure Synapse Analytics :

  • 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 renvoient NULL.
  • 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 du propriétaire d’une base de données pour le remplacer par un groupe Microsoft Entra 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.
      

Étapes suivantes