Migrer une application .NET pour utiliser des connexions sans mot de passe avec Azure SQL Database
S’applique à : Azure SQL Database
Les requêtes des applications adressées à Azure SQL Database doivent être authentifiées. Bien qu’il existe plusieurs options pour l’authentification auprès d’Azure SQL Database, vous devez donner la priorité aux connexions sans mot de passe dans vos applications quand cela est possible. Les méthodes d’authentification traditionnelles qui utilisent des mots de passe ou des clés secrètes créent des risques et des complications de sécurité. Visitez le hub de connexions sans mot de passe pour Azure Services pour découvrir l’avantage des connexions sans mot de passe. Le tutoriel suivant explique comment migrer une application existante pour se connecter à Azure SQL Database afin d’utiliser des connexions sans mot de passe au lieu d’une solution avec nom d’utilisateur et mot de passe.
Configurer Azure SQL Database
Les connexions sans mot de passe utilisent l'authentification Microsoft Entra pour se connecter aux services Azure, y compris la base de données Azure SQL. L'authentification Microsoft Entra facilite la gestion des identités dans une position centrale et simplifie la gestion des autorisations. Découvrez comment configurer l'authentification Microsoft Entra pour votre base de données Azure SQL :
Pour le présent guide de migration, assurez-vous qu'un administrateur Microsoft Entra est affecté à votre base de données Azure SQL.
Accédez à la page Microsoft Entra de votre serveur logique.
Sélectionnez Définir l'administrateur pour ouvrir le menu à contrôle suspendu de Microsoft Entra ID.
Dans le menu à contrôle suspendu de Microsoft Entra ID, recherchez l'utilisateur auquel vous souhaitez attribuer le rôle d'administrateur.
Sélectionnez l’utilisateur et choisissez Sélectionner.
Configurer votre environnement de développement local
Les connexions sans mot de passe peuvent être configurées de telle manière qu’elles fonctionnent à la fois pour les environnements locaux et hébergés par Azure. Dans cette section, vous allez appliquer des configurations afin de permettre aux utilisateurs individuels de s’authentifier auprès d’Azure SQL Database pour le développement local.
Se connecter à Azure
Pour le développement local, assurez-vous que vous êtes connecté avec le même compte Azure AD que celui que vous souhaitez utiliser pour accéder à Azure SQL Database. Vous pouvez vous authentifier au moyen d’outils de développement populaires, comme Azure CLI ou Azure PowerShell. Les outils de développement avec lesquels vous pouvez vous authentifier dépendent de la langue.
Connectez-vous à Azure via Azure CLI à l’aide de la commande suivante :
az login
Créer un utilisateur de base de données et attribuer des rôles
Créez un utilisateur dans Azure SQL Database. L’utilisateur doit correspondre au compte Azure que vous avez utilisé pour vous connecter localement via des outils de développement comme Visual Studio ou IntelliJ.
Dans le portail Azure, accédez à votre base de données SQL et sélectionnez Éditeur de requête (préversion).
Sélectionnez Continuer en tant que
<your-username>
sur le côté droit de l’écran pour vous connecter à la base de données à l’aide de votre compte.Dans la vue de l’éditeur de requête, exécutez les commandes T-SQL suivantes :
CREATE USER [user@domain] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [user@domain]; ALTER ROLE db_datawriter ADD MEMBER [user@domain]; ALTER ROLE db_ddladmin ADD MEMBER [user@domain]; GO
L’exécution de ces commandes attribue le rôle Contributeur de base de données SQL au compte spécifié. Ce rôle permet à l’identité de lire, d’écrire et de modifier les données et le schéma de votre base de données. Pour plus d’informations sur les rôles attribués, consultez Rôles de base de données fixes.
Mettre à jour la configuration de la connexion locale
Le code d’application existant qui se connecte à Azure SQL Database à l’aide de la bibliothèque Microsoft.Data.SqlClient
ou d’Entity Framework Core continue de fonctionner avec les connexions sans mot de passe. Toutefois, vous devez mettre à jour votre chaîne de connexion de base de données pour utiliser le format sans mot de passe. Le code suivant fonctionne par exemple à la fois avec l’authentification SQL et les connexions sans mot de passe :
string connectionString = app.Configuration.GetConnectionString("AZURE_SQL_CONNECTIONSTRING")!;
using var conn = new SqlConnection(connectionString);
conn.Open();
var command = new SqlCommand("SELECT * FROM Persons", conn);
using SqlDataReader reader = command.ExecuteReader();
Pour mettre à jour la chaîne de connexion référencée (AZURE_SQL_CONNECTIONSTRING
) et utiliser le format de chaîne de connexion sans mot de passe :
Recherchez votre chaîne de connexion. Pour le développement local avec des applications .NET, la chaîne est généralement stockée à l’un des emplacements suivants :
- Fichier de configuration
appsettings.json
pour votre projet. - Fichier de configuration
launchsettings.json
pour les projets Visual Studio. - Variables d’environnement de conteneur et système local.
- Fichier de configuration
Remplacez la valeur de chaîne de connexion par le format sans mot de passe suivant. Mettez à jour les espaces réservés
<database-server-name>
et<database-name>
en les remplaçant par vos valeurs :Server=tcp:<database-server-name>.database.windows.net,1433;Initial Catalog=<database-name>; Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Authentication="Active Directory Default";
Tester l’application
Exécutez votre application localement et vérifiez que les connexions à Azure SQL Database fonctionnent comme prévu. N’oubliez pas qu’il peut falloir plusieurs minutes pour que les modifications des utilisateurs et des rôles se propagent dans l’environnement Azure. Votre application est désormais configurée pour s’exécuter localement sans que les développeurs ne doivent gérer les secrets dans l’application elle-même.
Configurer l’environnement d’hébergement Azure
Une fois que votre application est configurée pour utiliser des connexions sans mot de passe localement, le même code peut s’authentifier auprès d’Azure SQL Database après son déploiement sur Azure. Les sections suivantes expliquent comment configurer une application déployée pour se connecter à Azure SQL Database à l’aide d’une identité managée. Les identités managées fournissent une identité managée automatiquement dans Microsoft Entra ID (anciennement Azure Active Directory) que les applications peuvent utiliser lors de la connexion à des ressources qui prennent en charge l’authentification Microsoft Entra. En savoir plus sur les identités managées :
Créer l’identité managée
Créez une identité managée affectée par l’utilisateur à l’aide du portail Azure ou de l’interface Azure CLI. Votre application utilise l’identité pour s’authentifier auprès d’autres services.
- À partir du Portail Azure, recherchez Identités managées. Sélectionnez le résultat Identités managées.
- Sélectionnez + Créer en haut de la page de présentation des Identités managées.
- Sous l’onglet Informations de base, entrez les valeurs suivantes :
- Abonnement : sélectionnez l’option souhaitée.
- Groupe de ressources : sélectionnez votre groupe de ressources souhaité.
- Région : sélectionnez une région proche de votre emplacement.
- Nom : entrez un nom reconnaissable pour votre identité, par exemple MigrationIdentity.
- Au bas de la page, sélectionnez Examiner et créer.
- Une fois les vérifications de validation terminées, sélectionnez Créer. Azure crée une identité affectée par l’utilisateur.
Une fois la ressource créée, sélectionnez Accéder à la ressource pour afficher les détails de l’identité managée.
Associer l’identité managée à votre application web
Configurez votre application web pour utiliser l’identité managée affectée par l’utilisateur créée.
Procédez comme suit dans le portail Azure pour associer une identité managée affectée par l’utilisateur à votre application. Ces mêmes étapes s’appliquent aux services Azure suivants :
- Azure Spring Apps
- Azure Container Apps
- Machines virtuelles Azure
- Azure Kubernetes Service
- Accédez à la page de présentation de votre application web front-end.
Sélectionnez Identité dans la barre de navigation de gauche.
Dans la page Identité, basculez vers l’onglet Utilisateur affecté.
Sélectionnez + Ajouter pour ouvrir le menu volant Ajouter une identité managée affectée par l’utilisateur.
Sélectionnez l’abonnement utilisé précédemment pour créer l’identité.
Recherchez MigrationIdentity par nom et sélectionnez-le dans les résultats de la recherche.
Sélectionnez Ajouter pour associer l’identité à votre application.
Créer un utilisateur de base de données pour l’identité et attribuer des rôles
Créez un utilisateur de base de données SQL mappé à l’identité managée affectée par l’utilisateur. Attribuez également les rôles SQL nécessaires à l’utilisateur pour autoriser votre application à lire, écrire et modifier les données et le schéma de votre base de données.
Dans le Portail Azure, accédez à votre base de données SQL et sélectionnez Éditeur de requête (préversion).
Sélectionnez Continuer en tant que
<username>
sur le côté droit de l’écran pour vous connecter à la base de données à l’aide de votre compte.Dans la vue de l’éditeur de requête, exécutez les commandes T-SQL suivantes :
CREATE USER [user-assigned-identity-name] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [user-assigned-identity-name]; ALTER ROLE db_datawriter ADD MEMBER [user-assigned-identity-name]; ALTER ROLE db_ddladmin ADD MEMBER [user-assigned-identity-name]; GO
L’exécution de ces commandes attribue le rôle Contributeur de base de données SQL à l’identité managée affectée par l’utilisateur. Ce rôle permet à l’identité de lire, d’écrire et de modifier les données et le schéma de votre base de données.
Important
Faites preuve de précaution quand vous attribuez des rôles d’utilisateur de base de données dans des environnements de production d’entreprise. Dans ces scénarios, l’application ne doit pas effectuer toutes les opérations en utilisant une même identité avec privilèges élevés. Essayez d’implémenter le principe des privilèges minimum en configurant plusieurs identités disposant d’autorisations spécifiques pour des tâches spécifiques.
Vous pouvez en apprendre plus sur la configuration des rôles de base de données et la sécurité avec les ressources suivantes :
Mettre à jour la chaîne de connexion
Mettez à jour la configuration de votre application Azure pour utiliser le format de chaîne de connexion sans mot de passe. Les chaînes de connexion sont généralement stockées en tant que variables d’environnement dans votre environnement d’hébergement d’applications. Les instructions suivantes se concentrent sur App Service, mais d’autres services d’hébergement Azure fournissent des configurations similaires.
Accédez à la page de configuration de votre instance App Service et recherchez la chaîne de connexion Azure SQL Database.
Sélectionnez l’icône de modification et mettez à jour la valeur de la chaîne de connexion pour qu’elle corresponde au format suivant. Modifiez les espaces réservés
<database-server-name>
et<database-name>
en les remplaçant par les valeurs de votre propre service.Server=tcp:<database-server-name>.database.windows.net,1433;Initial Catalog=<database-name>; Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Authentication="Active Directory Default";
Enregistrez vos modifications et redémarrez l’application si le redémarrage n’est pas automatique.
Tester l’application
Testez votre application pour vous assurer de son bon fonctionnement. La propagation de l’ensemble des modifications dans votre environnement Azure peut prendre quelques minutes.
Étapes suivantes
Dans ce didacticiel, vous avez appris à migrer une application vers des connexions sans mot de passe.
Vous pouvez lire les ressources suivantes pour explorer les concepts abordés dans cet article plus en détails :