Principaux de serveur Microsoft Entra

S’applique à :Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (pool SQL dédié 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 master virtuelle d’une instance SQL Database. L’utilisation de principaux de serveur Microsoft Entra pour SQL Database 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 et dbmanager.
  • 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

Remarque

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.

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, qui est un utilisateur, un groupe ou une application 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 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.

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 principaux de base de données (utilisateurs) créés à partir de cette connexion pour pouvoir se connecter à leurs bases de données respectives.

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 pour les 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 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.

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 (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 :
  • 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.

Limitations du principal du serveur de groupe Microsoft Entra

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

Étapes suivantes