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 :
- SSMS (SQL Server Management Studio)
- Une Managed Instance
- Suivez cet article : Démarrage rapide : Créer une instance managée
- Accès à votre Managed Instance et provisionnement d’un administrateur Microsoft Entra pour la Managed Instance. Pour plus d'informations, consultez les rubriques suivantes :
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 :
- Démarrage rapide : Configurer une machine virtuelle Azure pour se connecter à SQL Managed Instance
- Démarrage rapide : Configurer une connexion point à site à SQL Managed Instance en local
Connectez-vous à votre Managed Instance avec une connexion SQL
sysadmin
ou un administrateur Microsoft Entra à l’aide de SQL Server Management Studio (SSMS).Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête.
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
Dans la barre d’outils, sélectionnez Exécuter pour créer la connexion.
Vérifiez la nouvelle connexion ajoutée en exécutant la commande T-SQL suivante :
SELECT * FROM sys.server_principals; GO
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
ousecurityadmin
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
:
Reconnectez-vous à la Managed Instance ou utilisez la connexion
sysadmin
existante avec l’administrateur Microsoft Entra ou au principal SQL.Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête.
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.
Connectez-vous à votre Managed Instance avec une connexion Microsoft Entra en sélectionnant Se connecter au serveur dans SQL Server Management Studio (SSMS).
- Entrez le nom d’hôte de votre SQL Managed Instance dans Nom du serveur.
- 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).
Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête.
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
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.
Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête.
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
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.
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
À 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.
Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête pour la nouvelle connexion.
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 :
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.
Connectez-vous à votre instance managée à l’aide d’un compte
sysadmin
à l’aide de SQL Server Management Studio.Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête.
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
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.
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) );
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.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.
Connectez-vous à votre instance managée à l’aide d’un compte
sysadmin
à l’aide de SQL Server Management Studio.Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête.
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
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
Créez une connexion à l’instance managée à l’aide de l’utilisateur ajouté au rôle
db_datareader
.Développez la base de données dans l’Explorateur d’objets pour voir la table.
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.
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é
Connectez-vous à votre instance managée à l’aide d’un compte
sysadmin
à l’aide de SQL Server Management Studio.Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête.
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
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
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à.
Connectez-vous à votre instance managée à l’aide d’un compte
sysadmin
à l’aide de SQL Server Management Studio.Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le serveur, puis choisissez Nouvelle requête.
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) );
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
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 :
- Audit d’une instance managée SQL
- Always Encrypted
- Détection de menaces
- Masquage des données dynamiques
- Sécurité au niveau des lignes
- Chiffrement transparent des données (TDE)
Fonctionnalités de SQL Managed Instance
Pour obtenir une vue d’ensemble des fonctionnalités de SQL Managed Instance, consultez :