Principal de service Microsoft Entra avec Azure SQL

S’applique à : Azure SQL DatabaseAzure SQL Managed Instance

Les ressources Azure SQL prennent en charge l’accès par programmation pour les applications à l’aide de principaux de service et d’identités managées dans Microsoft Entra ID (anciennement Azure Active Directory).

Prise en charge du principal de services (applications Microsoft Entra)

Cet article s’applique aux applications inscrites dans Microsoft Entra ID. Utiliser des identifiants d’application pour accéder à Azure SQL supporte le principe de sécurité de séparation des droits, ce qui permet aux organisations de configurer un accès précis pour chaque application se connectant à leurs bases de données. Les identités managées, une forme spéciale de principaux de service, sont particulièrement recommandées, car elles sont sans mot de passe et éliminent la nécessité d’identifiants gérés par le développeur.

Microsoft Entra ID permet également des scénarios d’authentification avancés comme OAuth 2.0 flux On-Behalf-Of (OBO). OBO permet aux applications de demander des informations d’identification utilisateur connectées, pour les scénarios où les applications elles-mêmes ne doivent pas recevoir d’accès à la base de données sans permissions déléguées.

Pour plus d’informations sur les applications Microsoft Entra, consultez Objets d’application et de principal de service dans Microsoft Entra ID et Créer un principal de service Azure avec Azure PowerShell.

Fonctionnalité de création d’utilisateurs Microsoft Entra à l’aide de principaux de service

La prise en charge de cette fonctionnalité est utile dans les processus d’automatisation des applications Microsoft Entra où les principaux Microsoft Entra sont créés et conservés dans SQL Database ou SQL Managed Instance sans interaction humaine. Les principaux de service peuvent être un administrateur Microsoft Entra pour le serveur logique SQL, en tant que groupe ou une identité autonome. L’application peut automatiser la création d’objets Microsoft Entra dans SQL Database ou SQL Managed Instance, ce qui permet une automatisation complète de la création d’utilisateurs de base de données.

Permettre aux principaux de service de créer des utilisateurs Microsoft Entra

Lorsque vous utilisez des applications pour accéder à Azure SQL, la création d’utilisateurs et de connexions Microsoft Entra nécessite des autorisations qui ne sont pas attribuées aux principaux de service ou aux identités managées par défaut : la possibilité de lire des utilisateurs, des groupes et des applications dans un client à partir de Microsoft Graph. Ces autorisations sont nécessaires au moteur SQL pour valider l’identité spécifiée dans CREATE LOGIN ou CREATE USER, et extraire des informations importantes, notamment l’ID d’objet ou d’application de l’identité, qui est utilisé pour créer la connexion ou l’utilisateur.

Lorsqu’un utilisateur Microsoft Entra exécute ces commandes, l’application Microsoft d’Azure SQL utilise des permissions déléguées pour usurper l’identité de l’utilisateur connecté et interroge Microsoft Graph à l’aide de ses autorisations. Ce flux n’est pas possible avec les principaux de service, car une application ne peut pas usurper l’identité d’une autre application. Au lieu de cela, le moteur SQL tente d’utiliser son identité de serveur, qui est l’identité managée principale attribuée à une instance managée SQL, un serveur logique Azure SQL ou un espace de travail Azure Synapse. L’identité du serveur doit exister et disposer des autorisations de requête Microsoft Graph ou des opérations échouent.

Les étapes suivantes expliquent comment affecter une identité managée au serveur et lui attribuer les autorisations Microsoft Graph pour permettre aux principaux de service de créer des utilisateurs et des connexions Microsoft Entra dans la base de données.

  1. Attribuez l’identité du serveur. L'identité du serveur peut être une identité managée affectée par l'utilisateur ou affectée par le système. Pour plus d’informations, consultez Identité managée affectée par l’utilisateur dans Microsoft Entra ID pour Azure SQL.

    • La commande PowerShell suivante crée un serveur logique approvisionné avec une identité managée affectée par le système :
    New-AzSqlServer -ResourceGroupName <resource group> -Location <Location name> -ServerName <Server name> -ServerVersion "12.0" -SqlAdministratorCredentials (Get-Credential) -AssignIdentity
    

    Pour plus d’informations, consultez la commande New-AzSqlServer, ou la commande New-AzSqlInstance pour SQL Managed Instance.

    • Pour un serveur logique existant, exécutez la commande suivante pour y ajouter une identité managée affectée par le système :
    Set-AzSqlServer -ResourceGroupName <resource group> -ServerName <Server name> -AssignIdentity
    

    Pour plus d’informations, consultez la commande Set-AzSqlServer, ou la commande Set-AzSqlInstance pour SQL Managed Instance.

    • Pour vérifier si l’identité du serveur est attribuée au serveur, exécutez la commande Get-AzSqlServer ou la commande Get-AzSqlInstance pour SQL Managed Instance.

    Remarque

    L’identité du serveur peut également être attribuée à l’aide de commandes CLI et de l’API REST. Pour plus d’informations, consultez la page sur les commandes az sql server create, az sql server update et Serveurs - API REST.

  2. Accordez aux autorisations d’identité du serveur pour interroger Microsoft Graph. Pour ce faire, vous pouvez effectuer plusieurs façons : en ajoutant l’identité au rôle Lecteurs de répertoire Microsoft Entra, en attribuant l’identité aux autorisations Microsoft Graph individuelles ou en ajoutant l’identité à un groupe assignable de rôle qui a le rôle Lecteurs de répertoire :

    • Ajouter une identité de serveur à un groupe assignable à un rôle

      Dans les environnements de production, il est recommandé qu’un administrateur client crée un groupe assignable de rôles et lui attribue le rôle Lecteurs de répertoire. Les propriétaires de groupe peuvent ensuite ajouter des identités de serveur au groupe, héritent de ces autorisations. Cela supprime l’exigence d’un Administrateur général ou d’un Administrateur de rôle privilégié d’accorder des autorisations à chaque identité de serveur individuelle, ce qui permet aux administrateurs de déléguer l’attribution d’autorisations aux propriétaires du groupe pour ce scénario. Pour plus d’informations, consultez Rôle Lecteurs de répertoire dans Microsoft Entra ID pour Azure SQL.

    • Attribuer des autorisations Microsoft Graph à une identité du serveur

      Pour attribuer les autorisations Microsoft Graph individuelles à l’identité du serveur, vous devez disposer du rôle d’Administrateur général Microsoft Entra ou Administrateur de rôle privilégié. Il est recommandé d’attribuer le rôle Lecteurs de répertoire, car il existe des autorisations incluses dans le rôle dont l’identité de serveur n’a pas besoin. L’attribution uniquement des autorisations d’accès en lecture Microsoft Graph individuelles limite les autorisations de l’identité de serveur au sein de votre locataire et conserve le principe de privilège minimum. Pour les instructions, consultez Identité managée affectée par l’utilisateur dans Microsoft Entra ID pour Azure SQL.

    • Ajouter l’identité du serveur au rôle Lecteurs de répertoire

      Pour ajouter l’identité du serveur au rôle Lecteurs de répertoire, vous devez être membre du rôle d’Administrateur général ou Administrateur de rôle privilégié Microsoft Entra. Dans les environnements de production, cette option n’est pas recommandée pour deux raisons : le rôle Lecteur de répertoire donne plus d’autorisations que l’identité de serveur requise, et le processus d’attribution de rôle nécessite toujours des approbations d’administrateur pour chaque identité de serveur (contrairement à l’utilisation de groupes). Suivez les instructions de SQL Managed Instance disponibles dans l’article Provisionner l’administrateur Microsoft Entra (SQL Managed Instance).

Dépannage

Lors de la résolution des problèmes, vous pouvez rencontrer l’erreur suivante :

Msg 33134, Level 16, State 1, Line 1
Principal 'test-user' could not be resolved.
Error message: 'Server identity is not configured. Please follow the steps in "Assign an Azure AD identity to your server and add Directory Reader permission to your identity" (https://aka.ms/sqlaadsetup)'

Cette erreur indique que l’identité du serveur n’a pas été créée ou n’a pas été affectée aux autorisations Microsoft Graph. Pour cette erreur, suivez les étapes pour attribuer une identité au serveur logique et attribuer une autorisation Lecteurs de répertoires à l’identité du serveur logique.

Limites

  • Les principaux de service ne peuvent pas s’authentifier au-delà des limites des locataires. La tentative d’accès à SQL Database ou SQL Managed Instance à l’aide d’une application Microsoft Entra créée dans un autre locataire échoue.

  • Le module Az.Sql 2.9.0 ou version supérieure est nécessaire pour utiliser PowerShell afin de configurer une application individuelle Microsoft Entra en tant qu’administrateur Microsoft Entra pour Azure SQL. Assurez-vous que vous avez mis à niveau le module vers la version la plus récente.

Étapes suivantes