Principaux de serveur Microsoft Entra

Vous pouvez créer et utiliser des principaux serveur à partir de Microsoft Entra ID (anciennement Azure Active Directory) comme identifiants dans la base de données virtuelle master d’un pool SQL dédié Azure Synapse Analytics.

Note

Les principaux de serveur Microsoft Entra sont actuellement en préversion pour Azure Synapse Analytics.

Il existe plusieurs avantages à utiliser les principaux de serveur Microsoft Entra avec un pool SQL dédié :

  • Prendre en charge les rôles de serveur pour la gestion des permissions.
  • Prenez en charge plusieurs utilisateurs de Microsoft Entra avec des rôles spéciaux pour Azure Synapse Analytics, tels que les rôles loginmanagerAdministrateur Synapseloginmanager et dbmanagerAdministrateur SQLdbmanager.
  • Parité fonctionnelle entre les connexions SQL et les connexions Microsoft Entra.
  • Augmentez la prise en charge des améliorations fonctionnelles, par exemple en utilisant authentification Microsoft Entra uniquement. L’authentification Microsoft Entra uniquement vous permet de désactiver l’authentification SQL, qui inclut l’administrateur du serveur SQL, les connexions SQL et les utilisateurs.
  • 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, voir authentification Microsoft Entra pour Azure Synapse Analytics.

Permissions

Pour utiliser ou créer des identifiants Microsoft Entra dans la base de données virtuelle master, vous avez besoin des autorisations suivantes :

  • Autorisation d'administrateur Microsoft Entra ou appartenance au rôle de serveur loginmanager. Seul l’administrateur Microsoft Entra peut créer la première connexion Microsoft Entra.
  • Doit être membre de Microsoft Entra ID dans le même répertoire utilisé par Azure Synapse Analytics.

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

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.

Note

Ajouter le AADE suffixe au SID permet d’identifier un utilisateur Microsoft Entra comme ayant été créé à partir d’une connexion. Cependant, cela signifie aussi que les SID pour la connexion et ses utilisateurs ne correspondent pas entre sys.server_principals et sys.database_principals. Pour relier l’utilisateur à son identifiant de connexion, il faut d’abord supprimer le suffixe AADE.

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ésactivez ou activez un login en utilisant ALTER LOGIN

Utilisez la syntaxe DDL ALTER LOGIN (Transact-SQL) pour activer ou désactiver une connexion Microsoft Entra dans un Azure Synapse Analytics pool SQL dédié.

ALTER LOGIN [login_name] DISABLE

Quand vous désactivez un identifiant de connexion, le principal de serveur ne peut plus se connecter. La désactivation d’un identifiant de connexion empêche également toutes les entités de sécurité de base de données (utilisateurs) que vous avez créées à partir de cet identifiant de connexion de se connecter à leurs bases de données respectives.

Note

  • ALTER LOGIN login_name DISABLE ne peut pas affecter les utilisateurs de base de données autonome, car ils ne sont pas associés aux identifiants de connexion.

  • ALTER LOGIN login_name DISABLE n'est pas prise en charge pour les groupes Microsoft Entra.

  • Un identifiant de connexion individuel désactivé ne peut pas être associé à un utilisateur faisant partie d'un groupe de connexion que vous avez créé dans la base de données master (par exemple, un groupe d'administrateurs Microsoft Entra).

  • 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
    

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.
  • Les pools SQL dédiés dans les espaces de travail Azure Synapse Analytics n'utilisent pas de serveurs SQL logiques.
  • 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'usurpation d'identité des principaux de serveur Microsoft Entra (logins) n'est pas prise en charge pour Azure Synapse Analytics :
  • 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. Après que le compte s’est authentifié au serveur, la connexion bénéficie des autorisations effectives d’un administrateur Microsoft Entra, et non d’une connexion nouvellement créée.
  • Modifier les permissions sur un objet de connexion Microsoft Entra spécifique n'est pas pris en charge :
    • GRANT <PERMISSION> ON LOGIN :: <Microsoft Entra account> TO <Any other login>
  • Lorsque vous modifiez les permissions pour une connexion Microsoft Entra, par défaut les modifications ne prennent effet que la prochaine fois que la connexion se connecte au pool SQL dédié. 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 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 mitigation de cette erreur, voir Considérations sur le nom.
  • Les utilisateurs de bases de données créés grâce aux connexions Microsoft Entra peuvent connaître des délais lorsqu’ils obtiennent des rôles et des permissions. Si vous rencontrez ce problème, utilisez les commandes suivantes :
    • 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

Les limitations suivantes s’appliquent aux connexions de groupe Microsoft Entra dans Azure Synapse Analytics :

  • Les groupes Microsoft Entra ne prennent pas en charge les rôles de serveur.
  • Si votre administrateur SQL est un groupe Microsoft Entra, les utilisateurs de ce groupe rencontrent certaines limitations lorsqu’ils se connectent. Chaque utilisateur de Microsoft Entra n'est pas listé individuellement dans le sys.server_principals tableau. Cette limitation a diverses conséquences, notamment des appels à SUSER_SID renvoyant NULL.
  • Les connexions utilisateur Microsoft Entra qui font partie des connexions de groupe Microsoft Entra ne sont pas créées implicitement. Ces utilisateurs n'ont pas de schéma par défaut et ne peuvent pas effectuer des opérations comme CREATE SCHEMA tant que vous n'avez pas créé un identifiant pour l'utilisateur Microsoft Entra ou attribué un schéma par défaut au groupe.
  • Vous ne pouvez pas transférer la propriété d'une base de données à un groupe Microsoft Entra en tant que propriétaire de la base de données.
    • 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