Principaux du serveur Azure Active Directory

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

Notes

Les principaux de serveur Azure Active Directory (Azure AD) (comptes de connexion) sont actuellement en préversion publique pour Azure SQL Database. Azure SQL Managed Instance peut déjà utiliser des connexions Azure AD.

Vous pouvez désormais créer et utiliser des principaux de serveur Azure AD, qui sont des connexions dans la base de données master virtuelle d’une instance SQL Database. L’utilisation de principaux de serveur Azure AD 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 Azure AD 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 Azure AD.
  • Augmentation de la prise en charge de l’amélioration fonctionnelle, par exemple avec l’authentification avec Azure AD uniquement. L’authentification avec Azure AD 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 Azure AD de prendre en charge les géo-réplicas. Les principaux Azure AD seront en mesure de se connecter au géo-réplica d’une base de données utilisateur, avec une autorisation en lecture seule et en refusant l’autorisation au serveur principal.
  • La possibilité d’utiliser des connexions au principal du service Azure AD avec des rôles spéciaux pour effectuer une automatisation complète de la création d’utilisateurs et de bases de données, ainsi que la maintenance fournie par les applications Azure AD.
  • Des fonctionnalités plus proches entre Managed Instance et SQL Database, car Managed Instance prend déjà en charge les connexions Azure AD dans la base de données master.

Pour plus d’informations sur l’authentification Azure AD pour Azure SQL, consultez Utiliser l’authentification Azure Active Directory

Autorisations

Les autorisations suivantes sont requises pour utiliser ou créer des connexions Azure AD dans la base de données master virtuelle.

  • Autorisation d'administrateur Azure AD ou appartenance au rôle de serveur loginmanager. La première connexion Azure AD ne peut être créée que par l’administrateur Azure AD.
  • Doit être un membre d’Azure AD dans le même répertoire que celui utilisé pour Azure SQL Database

Par défaut, l'autorisation standard accordée à la connexion Azure AD nouvellement créée dans la base de données master est VIEW ANY DATABASE.

Syntaxe des connexions Azure AD

La nouvelle syntaxe pour Azure SQL Database afin utiliser les principaux de serveur Azure AD a été introduite avec cette mise en production de fonctionnalité.

Syntaxe de création de connexion

CREATE LOGIN login_name { FROM EXTERNAL PROVIDER | WITH <option_list> [,..] }  

<option_list> ::=      
    PASSWORD = {'password'}   
    | , SID = sid, ] 

Le login_name spécifie le principal Azure AD, qui est un utilisateur Azure AD, un groupe ou une application.

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

Syntaxe de création d’utilisateur

La syntaxe T-SQL ci-dessous est déjà disponible dans SQL Database et peut être utilisée pour créer des principaux Azure AD au niveau de la base de données mappés à des connexions Azure AD dans la base de données master virtuelle.

Pour créer un utilisateur Azure AD à partir d’une connexion Azure AD, utilisez la syntaxe suivante. Seul l’administrateur Azure AD peut exécuter cette commande dans la base de données master virtuelle.

CREATE USER user_name FROM LOGIN login_name

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

Désactiver ou activer une connexion à l’aide de la syntaxe ALTER LOGIN

La syntaxe DDL ALTER LOGIN (Transact-SQL) peut être utilisée pour activer ou désactiver une connexion Azure AD dans Azure SQL Database.

ALTER LOGIN login_name DISABLE 

Le principal Azure AD login_name ne peut pas se connecter à une base de données utilisateur dans le serveur logique SQL Database où un principal d’utilisateur Azure AD, user_name mappé à la connexion login_name, a été créé.

Notes

  • ALTER LOGIN login_name DISABLE n’est pas pris en charge pour les utilisateurs contenus.

  • ALTER LOGIN login_name DISABLE n’est pas pris en charge pour les groupes Azure AD.

  • 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 Azure AD).

  • 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 Azure AD

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 Azure AD, 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 Azure Active Directory.

Limitations et remarques

  • L’administrateur du serveur SQL ne peut pas créer de connexions ni d’utilisateurs Azure AD dans les bases de données.
  • La modification d’une propriété de base de données en groupe Azure AD comme 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.
      
    • La modification d’une propriété de base de données en un utilisateur individuel est prise en charge.
  • Un administrateur SQL ou utilisateur SQL ne peut pas exécuter les opérations Azure AD 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 Azure AD au niveau du serveur (connexions) n’est pas pris en charge :
  • Les connexions Azure AD qui se chevauchent avec l’administrateur Azure AD ne sont pas prises en charge. L’administrateur Azure AD est prioritaire sur toute connexion. Si un compte Azure AD a déjà accès au serveur en tant qu’administrateur Azure AD, soit directement, soit en tant que membre du groupe d’administration, le nom de connexion créé pour cet utilisateur n’aura aucun effet. 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 Azure AD et non d’une connexion nouvellement créée.
  • La modification des autorisations sur un objet de connexion Azure AD spécifique n’est pas prise en charge :
    • GRANT <PERMISSION> ON LOGIN :: <Azure AD account> TO <Any other login>
  • Lorsque des autorisations sont modifiées pour une connexion Azure AD avec des connexions ouvertes existantes à Azure SQL Database, les autorisations ne sont effectives que lorsque l’utilisateur se reconnecte. Videz également le cache d’authentification et le cache TokenAndPermUserStore. Cela s’applique à la modification de l’appartenance au rôle de serveur à l’aide de l’instruction ALTER SERVER ROLE.
  • La définition d’une connexion Azure AD mappée à un groupe Azure AD en tant que propriétaire de base de données n’est pas prise en charge.
  • Les rôles de serveur Azure SQL Database ne sont pas pris en charge pour les groupes Azure AD.
  • Dans SQL Server Management Studio et Azure Data Studio, la commande de script actuelle pour les utilisateurs Azure AD avec connexion ne génère pas une syntaxe T-SQL correcte pour une création d’utilisateur avec connexion. Au lieu de cela, le script génère une syntaxe T-SQL pour un utilisateur autonome Azure AD sans connexion dans la base de données virtuelle master.
  • Pour distinguer l’utilisateur autonome Azure AD sans connexion dans la base de données virtuelle master d’un utilisateur Azure AD créé à partir d’une connexion dans la base de données virtuelle master, affichez le SID dans sys.database_principals et recherchez le suffixe AADE ajouté dans la colonne SID pour un utilisateur créé avec connexion.

Étapes suivantes