Didacticiel : Sécuriser avec les connexions Microsoft Entra - Azure SQL Managed Instance

S’applique à :Azure SQL Managed Instance

Dans cet article, découvrez comment utiliser des principaux (connexions) de serveur sauvegardés par Microsoft Entra ID (anciennement Azure Active Directory) pour sécuriser une Azure SQL Managed Instance.

Dans ce tutoriel, vous allez apprendre à :

  • Créez une connexion Microsoft Entra pour une Managed Instance
  • Accorder des autorisations aux connexions dans une Managed Instance
  • Créer des utilisateurs Microsoft Entra à partir de connexions
  • Affecter des autorisations aux utilisateurs pour gérer la sécurité des bases de données
  • Utiliser l’usurpation d’identité avec des utilisateurs
  • Utiliser des requêtes de bases de données croisées avec des utilisateurs
  • Découvrir les fonctionnalités de sécurité, notamment la protection contre les menaces, l’audit, le masquage des données et le chiffrement

Remarque

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

Prérequis

Pour suivre le tutoriel, vérifiez que les prérequis ci-dessous sont remplis :

Limiter l’accès

Les instances managées sont accessibles par le biais d’une adresse IP privée. Tout comme dans un environnement SQL Server isolé, les applications ou les utilisateurs doivent avoir accès au réseau (virtuel) SQL Managed Instance pour pouvoir établir une connexion. Pour plus d’informations, consultez Connecter votre application à SQL Managed Instance.

Il est également possible de configurer un point de terminaison de service sur une instance managée, ce qui permet les connexions publiques, de la même façon que pour Azure SQL Database. Pour plus d’informations, consultez Configurer un point de terminaison public dans Azure SQL Managed Instance.

Créer une connexion Microsoft Entra à l’aide de SSMS

La première connexion Microsoft Entra peut être créée par l’administrateur SQL ou par l’administrateur Microsoft Entra créé lors de l’approvisionnement. Pour plus d’informations, consultez Approvisionner un administrateur Microsoft Entra pour SQL Managed Instance.

Consultez les articles suivants pour obtenir des exemples de connexion à SQL Managed Instance :

  1. Connectez-vous à votre Managed Instance avec une connexion SQL sysadmin ou un administrateur Microsoft Entra à l’aide de SQL Server Management Studio (SSMS).

  2. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête.

  3. Dans la fenêtre Requête, utilisez la syntaxe suivante afin de créer une connexion pour un compte Microsoft Entra local :

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    Cet exemple permet de créer une connexion pour le compte nativeuser@aadsqlmi.onmicrosoft.com.

    USE master
    GO
    CREATE LOGIN [nativeuser@aadsqlmi.onmicrosoft.com] FROM EXTERNAL PROVIDER
    GO
    
  4. Dans la barre d’outils, sélectionnez Exécuter pour créer la connexion.

  5. Vérifiez la nouvelle connexion ajoutée en exécutant la commande T-SQL suivante :

    SELECT *  
    FROM sys.server_principals;  
    GO
    

    Screenshot of the Results tab in the S S M S Object Explorer showing the name, principal_id, sid, type, and type_desc of the newly added login.

Pour plus d'informations, consultez CREATE LOGIN.

Accorder des autorisations pour créer des connexions

Les connexions existantes doivent disposer d’autorisations appropriées ou faire partie des rôles serveur appropriés pour créer d’autres connexions Microsoft Entra.

Connexions d’authentification SQL

  • Si la connexion est un principal de serveur basé sur l’authentification SQL, il doit être affecté au rôle sysadmin pour créer des connexions pour les comptes Microsoft Entra.

Connexions d’authentification Microsoft Entra

  • Si la connexion est un principal de serveur Microsoft Entra, il doit être affecté au rôle serveur sysadmin ou securityadmin pour créer des connexions pour d’autres utilisateurs, groupes et applications Microsoft Entra.
  • Au minimum, l’autorisation ALTER ANY LOGIN doit être octroyée pour permettre la création d’autres connexions Microsoft Entra.
  • Par défaut, les autorisations standard accordées à des connexions Microsoft Entra nouvellement créées dans master sont : CONNECT SQL et VIEW ANY DATABASE.
  • Le rôle serveur sysadmin peut être attribué à de nombreuses connexions Microsoft Entra au sein d’une Managed Instance.

Pour ajouter la connexion au rôle serveur sysadmin :

  1. Reconnectez-vous à la Managed Instance ou utilisez la connexion sysadmin existante avec l’administrateur Microsoft Entra ou au principal SQL.

  2. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête.

  3. Attribuez le rôle serveur sysadmin à la connexion Microsoft Entra à l’aide de la syntaxe T-SQL suivante :

    ALTER SERVER ROLE sysadmin ADD MEMBER login_name
    GO
    

    L’exemple suivant attribue le rôle serveur sysadmin à la connexion nativeuser@aadsqlmi.onmicrosoft.com.

    ALTER SERVER ROLE sysadmin ADD MEMBER [nativeuser@aadsqlmi.onmicrosoft.com]
    GO
    

Créer des connexions Microsoft Entra supplémentaires à l’aide de SSMS

Une fois la connexion Microsoft Entra créée et dotée des privilèges sysadmin, elle peut créer des connexions supplémentaires à l’aide de la clause FROM EXTERNAL PROVIDER et de CREATE LOGIN.

  1. Connectez-vous à votre Managed Instance avec une connexion Microsoft Entra en sélectionnant Se connecter au serveur dans SQL Server Management Studio (SSMS).

    1. Entrez le nom d’hôte de votre SQL Managed Instance dans Nom du serveur.
    2. Pour l’Authentification, sélectionnez Active Directory - Universel avec prise en charge de la MFA pour afficher une fenêtre de connexion par authentification multifacteur. Se connecter. Pour plus d’informations, consultez Authentification universelle (prise en charge de SSMS pour l’authentification multifacteur).
  2. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête.

  3. Dans la fenêtre Requête, utilisez la syntaxe suivante afin de créer une connexion pour un autre compte Microsoft Entra :

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    Cet exemple permet de créer une connexion pour l’utilisateur Microsoft Entra bob@aadsqlmi.net, dont le domaine aadsqlmi.net est fédéré avec le domaine Microsoft Entra aadsqlmi.onmicrosoft.com.

    Exécutez la commande T-SQL suivante. Les comptes Microsoft Entra fédérés remplacent SQL Managed Instance pour les connexions et utilisateurs Windows locaux.

    USE master
    GO
    CREATE LOGIN [bob@aadsqlmi.net] FROM EXTERNAL PROVIDER
    GO
    
  4. Créez une base de données dans l’instance managée à l’aide de la syntaxe CREATE DATABASE. Cette base de données va être utilisée pour tester les connexions des utilisateurs dans la prochaine section.

    1. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête.

    2. Dans la fenêtre de requête, utilisez la syntaxe suivante pour créer une base de données nommée MyMITestDB.

      CREATE DATABASE MyMITestDB;
      GO
      
  5. Créez une connexion SQL Managed Instance pour un groupe dans Microsoft Entra ID. Le groupe doit exister dans Microsoft Entra ID pour permettre l’ajout de la connexion à SQL Managed Instance. Voir Créer un groupe de base et ajouter des membres à l’aide de Microsoft Entra ID. Créez un groupe mygroup et ajoutez des membres à ce groupe.

  6. Ouvrez une nouvelle fenêtre de requête dans SQL Server Management Studio.

    Cet exemple suppose qu’il existe un groupe appelé mygroup dans Microsoft Entra ID. Exécutez la commande suivante :

    USE master
    GO
    CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER
    GO
    
  7. À des fins de test, connectez-vous à l’instance managée à l’aide de la connexion ou du groupe que vous venez de créer. Ouvrez une nouvelle connexion à l’instance managée, puis utilisez le nouveau nom de connexion au moment de l’authentification.

  8. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête pour la nouvelle connexion.

  9. Consultez les autorisations du serveur pour la connexion Microsoft Entra créée en exécutant la commande suivante :

    SELECT * FROM sys.fn_my_permissions (NULL, 'DATABASE')
    GO
    

La prise en charge par Azure SQL des principaux Microsoft Entras en tant qu’utilisateurs et connexions s’étend à ID externe Microsoft Entra utilisateurs invités internes et externes. Les utilisateurs invités, individuellement et dans le cadre d’un groupe, peuvent être utilisés de la même façon que tout autre utilisateur Microsoft Entra dans Azure SQL. Si vous souhaitez que les utilisateurs invités puissent créer d’autres connexions de serveur Microsoft Entra ou des utilisateurs de base de données, ils doivent disposer des autorisations nécessaires pour lire d’autres identités dans l’annuaire Microsoft Entra. Cette autorisation est configurée au niveau du répertoire. Pour plus d’informations, consultez autorisations d'accès invités dans Microsoft Entra ID.

Créer un utilisateur Microsoft Entra à partir de la connexion Microsoft Entra

L’octroi d’autorisations pour des bases de données individuelles fonctionne sensiblement de la même façon dans SQL Managed Instance que pour les bases de données dans SQL Server. Vous pouvez créer un utilisateur à partir d’une connexion existante dans une base de données, et lui octroyer des autorisations pour cette base de données, ou l’ajouter à un rôle de base de données.

Nous avons créé une base de données appelée MyMITestDB ainsi qu’une connexion qui a uniquement des autorisations par défaut. La prochaine étape consiste à créer un utilisateur à partir de cette connexion. Pour le moment, le compte de connexion peut se connecter à l’instance managée et voir toutes les bases de données, mais il ne peut pas interagir avec les bases de données. Si vous vous connectez avec le compte Microsoft Entra disposant des autorisations par défaut, et si vous tentez de développer la base de données créée, le message d’erreur suivant s’affiche :

Screenshot of an error message from the the S S M S Object Explorer that reads

Pour plus d’informations sur l’octroi d’autorisations de base de données, consultez Bien démarrer avec les autorisations du Moteur de base de données.

Créer un utilisateur Microsoft Entra et créer un exemple de table

Remarque

Il existe certaines limitations lorsqu’un utilisateur se connecte dans le cadre d’un groupe Microsoft Entra. Par exemple, un appel à SUSER_SID renvoie NULL, car l’utilisateur Microsoft Entra donné ne fait pas partie de la table sys.server_principals. Par conséquent, l'accès à certaines procédures stockées ou à une liste d'autorisations accordées peut être limité dans ce cas.

  1. Connectez-vous à votre instance managée à l’aide d’un compte sysadmin à l’aide de SQL Server Management Studio.

  2. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête.

  3. Dans la fenêtre Requête, utilisez la syntaxe suivante afin de créer un utilisateur à partir d’une connexion Microsoft Entra :

    USE <Database Name> -- provide your database name
    GO
    CREATE USER user_name FROM LOGIN login_name
    GO
    

    L’exemple suivant permet de créer un utilisateur bob@aadsqlmi.net à partir de la connexion bob@aadsqlmi.net :

    USE MyMITestDB
    GO
    CREATE USER [bob@aadsqlmi.net] FROM LOGIN [bob@aadsqlmi.net]
    GO
    
  4. Il est également pris en charge pour créer un utilisateur Microsoft Entra à partir d’une connexion Microsoft Entra qui est un groupe.

    L’exemple suivant crée une connexion pour le groupe Microsoft Entra mygroup qui existe dans votre locataire Microsoft Entra.

    USE MyMITestDB
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    

    Tous les utilisateurs appartenant à mygroup peuvent accéder à la base de données MyMITestDB.

    Important

    Quand vous créez un USER à partir d’une connexion Microsoft Entra, spécifiez le même user_name que le login_name à partir de LOGIN.

    Pour plus d’informations, consultez CREATE USER.

  5. Dans une nouvelle fenêtre de requête, créez une table de test à l’aide de la commande T-SQL suivante :

    USE MyMITestDB
    GO
    CREATE TABLE TestTable
    (
    AccountNum varchar(10),
    City varchar(255),
    Name varchar(255),
    State varchar(2)
    );
    
  6. Créez une connexion dans SSMS avec l’utilisateur créé. Notez que vous ne pouvez pas voir la table TestTable créée par le sysadmin. Nous devons donner à l’utilisateur les autorisations nécessaires pour lire les données de la base de données.

  7. Vous pouvez vérifier l’autorisation actuelle de l’utilisateur en exécutant la commande suivante :

    SELECT * FROM sys.fn_my_permissions('MyMITestDB','DATABASE')
    GO
    

Ajouter des utilisateurs aux rôles de base de données

Pour que les utilisateurs puissent voir les données de la base de données, nous pouvons leur attribuer des rôles de base de données.

  1. Connectez-vous à votre instance managée à l’aide d’un compte sysadmin à l’aide de SQL Server Management Studio.

  2. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête.

  3. Attribuez le rôle base de données db_datareader à l’utilisateur Microsoft Entra à l’aide de la syntaxe T-SQL suivante :

    Use <Database Name> -- provide your database name
    ALTER ROLE db_datareader ADD MEMBER user_name
    GO
    

    L’exemple suivant fournit à l’utilisateur bob@aadsqlmi.net et au groupe mygroup les autorisations db_datareader pour la base de données MyMITestDB :

    USE MyMITestDB
    GO
    ALTER ROLE db_datareader ADD MEMBER [bob@aadsqlmi.net]
    GO
    ALTER ROLE db_datareader ADD MEMBER [mygroup]
    GO
    
  4. Vérifiez que l’utilisateur Microsoft Entra créé dans la base de données existe, en exécutant la commande suivante :

    SELECT * FROM sys.database_principals
    GO
    
  5. Créez une connexion à l’instance managée à l’aide de l’utilisateur ajouté au rôle db_datareader.

  6. Développez la base de données dans l’Explorateur d’objets pour voir la table.

    Screenshot from Object Explorer in S S M S showing the folder structure for Tables in MyMITestDB. The dbo.TestTable folder is highlighted.

  7. Ouvrez une nouvelle fenêtre de requête et exécutez l’instruction SELECT suivante :

    SELECT *
    FROM TestTable
    

    Pouvez-vous voir les données de la table ? Vous devez voir les colonnes retournées.

    Screenshot of the Results tab in the S S M S Object Explorer showing the table column headers AccountNum, City, Name, and State.

Usurper l’identité des connexions Microsoft Entra

SQL Managed Instance prend en charge l’usurpation d’identité des connexions Microsoft Entra.

Tester l’emprunt d’identité

  1. Connectez-vous à votre instance managée à l’aide d’un compte sysadmin à l’aide de SQL Server Management Studio.

  2. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête.

  3. Dans la fenêtre de requête, utilisez la commande suivante pour créer une procédure stockée :

    USE MyMITestDB
    GO  
    CREATE PROCEDURE dbo.usp_Demo  
    WITH EXECUTE AS 'bob@aadsqlmi.net'  
    AS  
    SELECT user_name();  
    GO
    
  4. Utilisez la commande suivante pour voir que l’utilisateur dont vous empruntez l’identité durant l’exécution de la procédure stockée est bob@aadsqlmi.net.

    Exec dbo.usp_Demo
    
  5. Testez l’emprunt d’identité à l’aide de l’instruction EXECUTE AS LOGIN :

    EXECUTE AS LOGIN = 'bob@aadsqlmi.net'
    GO
    SELECT SUSER_SNAME()
    REVERT
    GO
    

Remarque

Seules les connexions au niveau de SQL Server titulaires du rôle sysadmin peuvent exécuter les opérations suivantes ciblant des principaux Microsoft Entra :

  • EXECUTE AS USER
  • EXECUTE AS LOGIN

Utiliser des requêtes de bases de données croisées

Les requêtes inter-bases de données sont prises en charge pour les comptes Microsoft Entra avec les connexions Microsoft Entra. Pour tester une requête de base de données croisée avec un groupe Microsoft Entra, nous devons créer une autre base de données et une autre table. Vous pouvez ignorer la création d’une autre base de données et d’une autre table, si elles existent déjà.

  1. Connectez-vous à votre instance managée à l’aide d’un compte sysadmin à l’aide de SQL Server Management Studio.

  2. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête.

  3. Dans la fenêtre de requête, utilisez la commande suivante pour créer une base de données nommée MyMITestDB2 et une table nommée TestTable2 :

    CREATE DATABASE MyMITestDB2;
    GO
    USE MyMITestDB2
    GO
    CREATE TABLE TestTable2
    (
    EmpId varchar(10),
    FirstName varchar(255),
    LastName varchar(255),
    Status varchar(10)
    );
    
  4. Dans une nouvelle fenêtre de requête, exécutez la commande suivante pour créer l’utilisateur mygroup dans la nouvelle base de données MyMITestDB2, puis accordez à mygroup des autorisations SELECT sur cette base de données :

    USE MyMITestDB2
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    GRANT SELECT TO [mygroup]
    GO
    
  5. Connectez-vous à la Managed Instance à l’aide de SQL Server Management Studio en tant que membre du groupe Microsoft Entra mygroup. Ouvrez une nouvelle fenêtre de requête et exécutez l’instruction SELECT pour bases de données croisées :

    USE MyMITestDB
    SELECT * FROM MyMITestDB2..TestTable2
    GO
    

    Vous devez voir les résultats de la table dans TestTable2.

Autres scénarios pris en charge

  • La gestion et les exécutions de travaux SQL Agent sont prises en charge pour les connexions Microsoft Entra.
  • Les opérations de sauvegarde et de restauration de base de données peuvent être exécutées par les connexions Microsoft Entra.
  • Audit de toutes les instructions liées aux connexions et aux événements d’authentification Microsoft Entra.
  • Connexion administrateur dédiée pour les connexions Microsoft Entra membres du rôle serveur sysadmin.
  • Les connexions Microsoft Entra sont prises en charge par l’utilitaire sqlcmd et l’outil SQL Server Management Studio.
  • Les déclencheurs d’ouverture de session sont pris en charge pour les événements d’ouverture de session provenant de connexions Microsoft Entra.
  • Vous pouvez configurer Service Broker et Database Mail à l’aide de connexions Microsoft Entra.

Étapes suivantes

Activer les fonctionnalités de sécurité

Consultez l’article sur les fonctionnalités de sécurité de SQL Managed Instance pour obtenir la liste complète des moyens de sécuriser votre base de données. Les fonctionnalités de sécurité suivantes sont présentées :

Fonctionnalités de SQL Managed Instance

Pour obtenir une vue d’ensemble des fonctionnalités de SQL Managed Instance, consultez :