Aller au contenu
Home » Blog » Sécuriser l’accès à Azure SQL Database avec Microsoft Entra ID

Sécuriser l’accès à Azure SQL Database avec Microsoft Entra ID

Prérequis

Avant de commencer, il est nécessaire de disposer d’un environnement minimal fonctionnel. Vous devez avoir accès à un annuaire Microsoft Entra ID sur lequel vous possédez des droits d’administration. Une base de données Azure SQL Database déjà configurée avec une authentification SQL classique est également requise. Enfin, l’application utilisée dans ce scénario repose sur ASP.NET Core avec Entity Framework et est déjà connectée à la base de données.

Le problème : une application dépendante des mots de passe

Dans de nombreuses applications, la chaîne de connexion à la base de données est stockée dans le fichier appsettings.json avec un nom d’utilisateur et un mot de passe. Cette approche, bien que simple à mettre en place, présente plusieurs faiblesses importantes.

D’une part, elle expose des informations sensibles directement dans le code ou dans les fichiers de configuration. Même si ces fichiers ne sont pas censés être publics, une mauvaise manipulation (commit accidentel, mauvaise gestion des accès, fuite de dépôt) peut rapidement compromettre la sécurité de l’application. D’autre part, la gestion et la rotation des mots de passe deviennent complexes à maintenir, surtout dans des environnements automatisés.

En résumé, cette approche introduit un risque inutile dans un contexte où des alternatives plus sécurisées existent.

La solution : une authentification sans mot de passe

Pour éliminer ces risques, il est possible d’utiliser l’authentification basée sur Microsoft Entra ID. Cette approche permet à une application de s’authentifier auprès de la base de données sans avoir à manipuler de mot de passe.

Le principe repose sur l’utilisation d’identités gérées (Managed Identities) fournies par Azure. L’application s’authentifie alors via son identité plutôt que via des identifiants stockés. Azure se charge de la gestion des credentials en arrière-plan, ce qui réduit considérablement la surface d’attaque.

Configuration de la base de données

La première étape consiste à configurer le serveur SQL afin qu’il puisse utiliser Microsoft Entra ID comme mécanisme d’authentification.

Dans le portail Azure, il faut se rendre sur le serveur associé à votre base de données, puis accéder à la section dédiée à Microsoft Entra ID. À partir de cette page, vous devez définir un administrateur Entra en cliquant sur l’option « Set Admin ». Il est important de choisir un compte interne à l’organisation, car les comptes invités ne sont pas supportés pour cette configuration.

Une fois l’administrateur défini et la configuration enregistrée, l’étape suivante consiste à activer l’identité système du serveur SQL à partir de la section « Identity ». Cette identité permettra au serveur d’interagir de manière sécurisée avec d’autres services Azure.

Modification de l’application

Du côté de l’application, la modification principale concerne la chaîne de connexion. L’objectif est de supprimer toute référence à un mot de passe et d’utiliser une authentification basée sur Entra ID.

Voici un exemple de chaîne de connexion adaptée :

"ConnectionStrings": {
  "MyDbConnection": "Server=tcp:<your-server>.database.windows.net;Initial Catalog=<your-db>;Authentication=Active Directory Default;Encrypt=True;"
}

Avec cette configuration, l’application utilisera automatiquement l’identité disponible dans son environnement d’exécution pour s’authentifier.

Configuration de Visual Studio

Pour les tests en local, il est nécessaire de configurer Microsoft Visual Studio afin qu’il utilise un compte Entra ID valide.

Dans les options de Visual Studio, sous la section « Authentification par le service Azure », il faut sélectionner le compte approprié. Ce compte doit être celui qui a été configuré comme administrateur du serveur SQL. Cela permet à l’application de s’exécuter localement en utilisant votre identité, sans nécessiter de mot de passe dans la configuration.

Déploiement dans Azure App Service

Une fois l’application prête, il est possible de la déployer dans Azure App Service. Lors de la création de l’App Service, il est essentiel d’activer son identité système. Cette identité sera utilisée par l’application pour accéder à la base de données.

Cependant, cette identité doit encore être autorisée au niveau de la base de données.

Création de l’utilisateur dans la base de données

Pour permettre à l’App Service d’accéder à la base de données, il faut créer un utilisateur basé sur son identité Entra ID.

En vous connectant à la base de données via le Query Editor du portail Azure ou via un outil comme SQL Server Management Studio, vous pouvez exécuter les commandes suivantes :

CREATE USER <your-app-service-name> FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER <your-app-service-name>;
ALTER ROLE db_datawriter ADD MEMBER <your-app-service-name>;
ALTER ROLE db_ddladmin ADD MEMBER <your-app-service-name>;
GO

Ces instructions permettent d’associer l’identité de l’App Service à un utilisateur de la base de données et de lui attribuer les permissions nécessaires.

Validation

Une fois le déploiement effectué, l’application peut être testée. Si tout est correctement configuré, elle sera capable de se connecter à la base de données sans utiliser de mot de passe, uniquement via son identité.

Conclusion

En remplaçant l’authentification SQL traditionnelle par une authentification basée sur Microsoft Entra ID, vous éliminez complètement la gestion des mots de passe dans votre application. Cette approche améliore non seulement la sécurité, mais simplifie également la gestion des accès et des identités dans vos environnements cloud.

Dans un contexte où les attaques ciblant les credentials sont de plus en plus fréquentes, adopter ce modèle devient rapidement une bonne pratique incontournable.

Étiquettes:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *