Tutoriel : Configurer l'authentification Microsoft Entra pour SQL Server

S'applique à : SQL Server 2022 (16.x)

Cet article décrit un processus pas à pas pour configurer l'authentification avec Microsoft Entra ID et montre comment utiliser différentes méthodes d'authentification Microsoft Entra.

Remarque

Microsoft Entra ID était anciennement appelé Azure Active Directory (Azure AD).

Dans ce tutoriel, vous allez apprendre à :

  • Créer et inscrire une application Microsoft Entra
  • Accorder des autorisations à l'application Microsoft Entra
  • Créer et attribuer un certificat
  • Configurer l'authentification Microsoft Entra pour SQL Server à partir du portail Azure
  • Créer des connexions et des utilisateurs
  • Se connecter avec une méthode d’authentification prise en charge

Prérequis

Conditions préalables à l'authentification

Remarque

Des fonctionnalités étendues ont été implémentées dans Azure pour permettre la création automatique du certificat Azure Key Vault et de l'application Microsoft Entra lors de la configuration d'un administrateur Microsoft Entra pour SQL Server. Pour plus d'informations, consultez Tutoriel : Utilisation de l'automatisation pour configurer l'administrateur Microsoft Entra pour SQL Server.

  • Inscription d'application Microsoft Entra pour SQL Server. L'inscription d'une instance SQL Server en tant qu'application Microsoft Entra permet à l'instance d'interroger Microsoft Entra ID et permet à l'application Microsoft Entra de s'authentifier au nom de l'instance SQL Server. L'inscription d'application nécessite également quelques autorisations, qui sont utilisées par SQL Server pour certaines requêtes.

  • SQL Server utilise un certificat pour cette authentification, qui est stocké dans Azure Key Vault (AKV). L’agent Azure Arc télécharge le certificat sur l’hôte de l’instance SQL Server.

Avertissement

Les connections authentifiées par Microsoft Entra ID sont toujours chiffrées. Si SQL Server utilise un certificat auto-signé, vous devez ajouter trust server cert = true à la chaîne de connexion. Les connexions authentifiées SQL Server et Windows ne nécessitent pas de chiffrement, mais celui-ci est fortement recommandé.

Créer et inscrire une application Microsoft Entra

  1. Dans le portail Azure, sélectionnez Microsoft Entra ID>Inscriptions d'applications>Nouvelle inscription.
    1. Spécifiez un nom : l'exemple de cet article utilise SQLServerCTP1.
    2. Sélectionnez Types de comptes pris en charge et utilisez Comptes dans cet annuaire organisationnel uniquement
    3. Ne définissez pas d'URI de redirection
    4. Sélectionnez Inscrire

Consultez l’inscription d’application ci-dessous :

Screenshot of registering application in the Azure portal.

Octroyer des autorisations aux applications

Sélectionnez l’application nouvellement créée et, dans le menu de gauche, sélectionnez Autorisations d’API.

  1. Sélectionnez Ajouter une autorisation>Microsoft Graph>Autorisations de l’application

    1. Cochez Directory.Read.All
    2. Sélectionner Ajouter des autorisations
  2. Sélectionnez Ajouter une autorisation>Microsoft Graph>Autorisations déléguées

    1. Cochez Application.Read.All
    2. Cochez Directory.AccessAsUser.All
    3. Cochez Group.Read.All
    4. Cochez User.Read.All
    5. Sélectionner Ajouter des autorisations
  3. Sélectionner Accorder le consentement administrateur

Screenshot of application permissions in the Azure portal.

Remarque

Pour octroyer le consentement administrateur aux autorisations ci-dessus, votre compte nécessite un rôle d'administrateur général ou d'administrateur de rôle privilégié.

Créer et attribuer un certificat

  1. Accédez au portail Azure, sélectionnez Coffres de clés, puis sélectionnez le coffre de clés que vous voulez utiliser ou créez-en un. Sélectionnez Certificats>Générer/importer

    1. Pour la Méthode de création de certificat, utilisez Générer.

    2. Ajoutez un nom et un objet de certificat.

    3. La période de validité recommandée est de 12 mois maximum. Vous pouvez laisser les autres valeurs par défaut.

    4. Sélectionnez Créer.

    Screenshot of creating certificate in the Azure portal.

    Remarque

    Une fois le certificat créé, il peut être désactivé. Actualisez le site pour le voir comme étant activé.

  2. Accédez au nouveau certificat et sélectionnez la ligne de la dernière version du certificat. Sélectionnez Télécharger au format CER pour enregistrer la clé publique du certificat.

    Screenshot of certificate in the Azure portal where you can view and download the certificate.

    Remarque

    Vous n’avez pas besoin de le faire sur l’hôte SQL Server, mais plutôt pour tout client qui accède au portail Azure pour l’étape suivante.

  3. Dans le portail Azure, accédez à l'inscription d'application créée ci-dessus et sélectionnez la liste Certificats.

    1. Sélectionnez Charger un certificat.
    2. Sélectionnez la clé publique (fichier .cer) téléchargée à la dernière étape.
    3. Sélectionnez Ajouter.

    Screenshot of certificate and secrets menu in the Azure portal.

  4. Dans le portail Azure, accédez à l'instance Azure Key Vault où est stocké le certificat, puis sélectionnez Stratégies d'accès depuis le menu de navigation.

    1. Sélectionnez Créer.

    2. Pour les autorisations de secret, sélectionnez Obtenir et Liste.

    3. Pour Autorisations du certificat, sélectionnez Obtenir et Liste.

    4. Cliquez sur Suivant.

    5. Sur la page Principal, recherchez le nom de votre instance Machine – Azure Arc, qui est le nom de l'hôte du serveur SQL.

      Screenshot of Azure Arc server resource in portal.

    6. Ignorez la page Application (facultative) en sélectionnant Suivant deux fois ou en sélectionnant Vérifier + créer.

      Vérifiez que l'« ID d'objet » du Principal correspond à l'ID de principal de l'identité managée attribué à l'instance.

      Screenshot of Azure portal to review and create access policy.

      Pour confirmer, accédez à la page de ressources et sélectionnez Affichage JSON en haut à droite de la zone Essentials de la page Vue d'ensemble. Sous l'identité, vous trouverez le principalId

      Screenshot of portal control of JSON view of machine definition.

    7. Sélectionnez Créer.

    Vous devez sélectionner Créer pour que les autorisations soient appliquées. Pour vous assurer que les autorisations ont bien été stockées, actualisez la fenêtre du navigateur et vérifiez que la ligne correspondant à votre instance Azure Arc est toujours présente.

    Screenshot of adding access policy to the key vault in the Azure portal.

Configurer l'authentification Microsoft Entra pour SQL Server à partir du portail Azure

Remarque

Il est possible d'utiliser l'Azure CLI, PowerShell ou un modèle ARM pour configurer un administrateur Microsoft Entra pour SQL Server.

  1. Accédez au portail Azure, puis sélectionnez SQL Server – Azure Arc et sélectionnez l’instance de votre hôte SQL Server.

  2. Vérifiez l’état de votre ressource SQL Server - Azure Arc et vérifiez qu’elle est connectée en accédant au menu Propriétés. Pour plus d’informations, consultez Valider les ressources SQL Server - Azure Arc.

  3. Sélectionnez Microsoft Entra ID et Purview sous Paramètres dans le menu des ressources.

  4. Sélectionnez Définir Administration pour ouvrir le volet Microsoft Entra ID, puis choisissez un compte à définir en tant que connexion administrateur pour SQL Server.

  5. Sélectionnez Certificat géré par le client et Sélectionner un certificat.

  6. Sélectionnez Changer le certificat et sélectionnez l'instance AKV et le certificat que vous avez créés précédemment dans le nouveau panneau.

  7. Sélectionnez Inscription d’application gérée par le client.

  8. Sélectionnez Changer l’inscription d’application et sélectionnez l’inscription d’application que vous avez créée précédemment.

  9. Sélectionnez Enregistrer. Cela envoie une demande à l'agent de serveur Arc qui configure l'authentification Microsoft Entra pour cette instance SQL Server.

    Screenshot of setting Microsoft Entra authentication in the Azure portal.

    Il faut plusieurs minutes pour télécharger les certificats et configurer les paramètres. Après avoir défini tous les paramètres et sélectionné Enregistrer dans le portail Azure, le message suivant peut apparaître : SQL Server's Azure Arc agent is currently processing a request. Values below may be incorrect. Please wait until the agent is done before continuing. Attendez que le processus d'enregistrement soit confirmé avec Saved successfully, avant de tenter une connexion Microsoft Entra.

    L’agent de serveur Azure Arc peut se mettre à jour seulement une fois l’action précédente terminée. Cela signifie que l'enregistrement d'une nouvelle configuration Microsoft Entra avant que la dernière soit terminée peut entraîner un échec. Si vous voyez le message L’appel étendu a échoué quand vous sélectionnez Enregistrer, attendez 5 minutes et réessayez.

    Remarque

    Une fois la connexion d'administrateur Microsoft Entra accordée au rôle sysadmin, la modification de l'administrateur Microsoft Entra dans le Portail Azure ne supprime pas la connexion précédente qui reste en tant que sysadmin. La suppression de la connexion doit être faite manuellement.

    La modification de l'administrateur Microsoft Entra pour l'instance SQL Server a lieu sans redémarrage du serveur, une fois le processus terminé avec l'agent Azure Arc de SQL Server. Pour que le nouvel administrateur s'affiche dans sys.server_principals, l'instance SQL Server doit être redémarrée et, en attendant, c'est l'ancien administrateur qui est affiché. L'administrateur Microsoft Entra actuel peut être vérifié dans le Portail Azure.

Créer des connexions et des utilisateurs

Lorsque que l'agent Azure Arc sur l'hôte SQL Server a terminé son opération, le compte administrateur sélectionné dans le panneau Microsoft Entra ID du portail passera à sysadmin sur l'instance SQL Server. Connectez-vous à SQL Server avec le compte d'administrateur Microsoft Entra disposant d'autorisations sysadmin sur le serveur à l'aide d'un client tel que SSMS ou Azure Data Studio.

Remarque

Toutes les connexions à SQL Server effectuées avec l'authentification Microsoft Entra nécessitent une connexion chiffrée. Si l’administrateur de base de données n’a pas configuré de certificat SSL/TLS approuvé pour le serveur, les connexions risquent d’échouer avec le message La chaîne de certificats a été émise par une autorité qui n’est pas approuvée. Pour corriger ce problème, configurez l’instance SQL Server pour utiliser un certificat SSL/TLS approuvé par le client ou sélectionnez faire confiance au certificat du serveur dans les propriétés de connexion avancées. Pour plus d’informations, consultez Activer les connexions chiffrées au moteur de base de données.

Syntaxe de création de connexion

La même syntaxe utilisée pour créer des connexions et des utilisateurs Microsoft Entra sur Azure SQL Database et Azure SQL Managed Instance peut désormais être utilisée sur SQL Server.

Remarque

Sur SQL Server, tout compte disposant de l'autorisation ALTER ANY LOGIN ou ALTER ANY USER peut créer des connexions ou des utilisateurs Microsoft Entra, respectivement. Le compte n'a pas besoin d'être une connexion Microsoft Entra.

Pour créer une connexion pour un compte Microsoft Entra, exécutez la commande T-SQL suivante dans la base de données master :

CREATE LOGIN [principal_name] FROM EXTERNAL PROVIDER;

Pour les utilisateurs, le nom de principal doit être au format user@tenant.com. Dans Microsoft Entra ID, il s'agit du nom d'utilisateur principal. Pour tous les autres types de comptes, tels que les groupes ou applications Microsoft Entra, le nom du principal est le nom de l'objet Microsoft Entra.

Voici quelques exemples :

-- login creation for Microsoft Entra user
CREATE LOGIN [user@contoso.com] FROM EXTERNAL PROVIDER;
GO
-- login creation for Microsoft Entra group
CREATE LOGIN [my_group_name] FROM EXTERNAL PROVIDER;
GO
-- login creation for Microsoft Entra application
CREATE LOGIN [my_app_name] FROM EXTERNAL PROVIDER;
GO

Pour lister les connexions Microsoft Entra dans la base de données master, exécutez la commande T-SQL :

SELECT * FROM sys.server_principals
WHERE type IN ('E', 'X');

Pour accorder à un utilisateur Microsoft Entra une appartenance au rôle sysadmin (par exemple admin@contoso.com), exécutez les commandes suivantes dans master :

CREATE LOGIN [admin@contoso.com] FROM EXTERNAL PROVIDER; 
GO
ALTER SERVER ROLE sysadmin ADD MEMBER [admin@contoso.com];
GO

La procédure stockée sp_addsrvrolemember doit être exécutée par un membre du rôle serveur sysadmin SQL Server.

Syntaxe de création d’utilisateur

Vous pouvez créer un utilisateur de base de données à partir de Microsoft Entra ID en tant qu'utilisateur de base de données associé à un principal de serveur (connexion) ou en tant qu'utilisateur de base de données autonome.

Pour créer un utilisateur Microsoft Entra à partir d'une connexion Microsoft Entra dans une base de données SQL Server, utilisez la syntaxe suivante :

CREATE USER [principal_name] FROM LOGIN [principal_name];

La syntaxe principal_name est la même que pour les connexions.

Voici quelques exemples :

-- for Azure AD user
CREATE USER [user@contoso.com] FROM LOGIN [user@contoso.com];
GO
-- for Azure AD group
CREATE USER [my_group_name] FROM LOGIN [my_group_name];
GO
-- for Azure AD application
CREATE USER [my_app_name] FROM LOGIN [my_app_name];
GO

Pour créer un utilisateur de base de données autonome Microsoft Entra, qui est un utilisateur qui n'est pas lié à une connexion de serveur, la syntaxe suivante peut être exécutée :

CREATE USER [principal name] FROM EXTERNAL PROVIDER;

Utilisez le nom du groupe Microsoft Entra ou le nom de l'application Microsoft Entra comme <principal name> lors de la création d'un utilisateur de base de données Microsoft Entra à partir d'un groupe ou d'une application.

Voici quelques exemples :

-- for Azure AD contained user
CREATE USER [user@contoso.com] FROM EXTERNAL PROVIDER;
GO
-- for Azure AD contained group
CREATE USER [my_group_name] FROM EXTERNAL PROVIDER;
GO
--for Azure AD contained application
CREATE USER [my_group_name] FROM EXTERNAL PROVIDER;
GO

Pour lister les utilisateurs créés dans la base de données, exécutez la commande T-SQL suivante :

SELECT * FROM sys.database_principals;

Un nouvel utilisateur de base de données reçoit l'autorisation Connecter par défaut. Toutes les autres autorisations SQL Server pour cet utilisateur doivent être accordées explicitement.

Compte invité Microsoft Entra

La syntaxe CREATE LOGIN et CREATE USER prend également en charge les utilisateurs invités. Par exemple, si testuser@outlook.com est invité au locataire contoso.com, il peut être ajouté en tant que connexion à SQL Server avec la même syntaxe que la création d'un autre utilisateur ou connexion Microsoft Entra. Lors de la création d'utilisateurs invités et de connexions, utilisez l'e-mail d'origine du compte invité, et non son nom d'utilisateur principal dans le locataire. Dans l'exemple, outlook.com est fourni même si le compte est inscrit dans le locataire contoso.com.

Créer un utilisateur invité avec une connexion existante

CREATE USER [testuser@outlook.com] FROM LOGIN [testuser@outlook.com];

Créer un utilisateur invité comme utilisateur autonome

CREATE USER [testuser@outlook.com] FROM EXTERNAL PROVIDER;

Se connecter avec une méthode d’authentification prise en charge

SQL Server prend en charge les méthodes d'authentification Microsoft Entra suivantes :

  • Par défaut
  • Nom d'utilisateur et mot de passe
  • Intégré
  • Universelle avec l'authentification multifacteur
  • Principal du service
  • Identité managée
  • Access token (Jeton d'accès)

Utilisez l’une de ces méthodes pour vous connecter à l’instance SQL Server. Pour plus d'informations, consultez Authentification Microsoft Entra pour SQL Server.

Exemple d’authentification avec SSMS

Remarque

Bien que Microsoft Entra ID soit le nouveau nom d'Azure Active Directory (Azure AD) pour empêcher l'interruption des environnements existants, Azure AD reste toujours dans certains éléments codés en dur, tels que les champs d'interface utilisateur, les fournisseurs de connexions, les codes d'erreur et cmdlets. Dans cet article, les deux noms sont interchangeables.

Voici l'instantané de la page de connexion de SQL Server Management Studio (SSMS) qui utilise la méthode d'authentification, Azure Active Directory – Universelle avec MFA.

Screenshot SSMS showing the Connect to Server window.

Pendant le processus d’authentification, une base de données dans laquelle l’utilisateur a été créé doit explicitement être indiquée dans SSMS. Développez Options > Propriétés de connexion > Se connecter à la base de données : database_name.

Pour plus d’informations, consultez Utilisation de l’authentification multifacteur Microsoft Entra.

Les outils SQL Server qui prennent en charge l'authentification Microsoft Entra pour Azure SQL sont également pris en charge pour SQL Server 2022 (16.x).

Emplacement de stockage des paramètres Microsoft Entra ID

Avertissement

Les paramètres Microsoft Entra ID sont configurés par l'agent Azure Arc et ne doivent pas être reconfigurés manuellement.

Sur Linux, les paramètres Microsoft Entra ID sont stockés dans mssql-conf. Pour plus d'informations, consultez Configurer SQL Server sur Linux avec l'outil mssql-conf.

Problèmes connus

  • La mise à jour du certificat ne se propage pas :
    • Une fois l'authentification Microsoft Entra configurée pour SQL Server, la mise à jour du certificat dans le volet Microsoft Entra ID et Purview de la ressource SQL Server – Azure Arc peuvent ne pas se propager entièrement. Le résultat indique que l’enregistrement est réussi, mais l’ancienne valeur est toujours affichée. Pour mettre à jour le certificat, effectuez les étapes suivantes :

      • Sélectionnez Supprimer l’administrateur.
      • Sélectionnez Enregistrer.
      • Sélectionnez Définir l'administrateur et reconfigurez l'authentification Microsoft Entra avec le nouveau certificat.
      • Sélectionnez Enregistrer.

Voir aussi