Article corédigé par Yacine Smail et Amine Teffahi

 

Comment se connecter de manière transparente et sécurisée à une base de données SQL à l’aide de l’authentification Azure AD au lieu d’utiliser la méthode classique (utilisateur & mot de passe) ? C’est ce que nous vous proposons de découvrir aujourd’hui étape par étape. Dans le cadre de cet article, nous utiliserons une App service pour illustrer cette méthode.

 

Authentification Azure AD explication schéma

 

Prérequis

 

Avant de commencer, il est nécessaire de procéder au déploiement des ressources suivantes :

  1. SQL Server
  2. SQL Database
  3. App Service

 

SQL Server / SQL Database / App Service

 

 

Activer le Managed Service Identity (MSI)

 

L’activation d’une identité managée pour un App service peut se faire de différentes façons (PowerShell, Azure CLI, Portail Azure…). Pour des raisons de simplicité, nous allons l’activer via le portail Azure.

 

Il existe deux types d’identité managée :

  • System assigned : Cette identité étant liée à l’App Service, la suppression de l’App Service supprimera également l’identité. Une application ne peut avoir qu’une seule identité managée par le système.
  • User assigned : User Assigned Identity est une ressource séparée qui peut être assignée à plusieurs applications. Une application peut également avoir plusieurs identités attribuées par l’utilisateur.

Pour l’activer depuis le portail, il suffit de suivre les étapes ci-dessous :

 

Activation Managed Service Identity (MSI)

 

Cela va créer une Entreprise Application que nous pouvons trouver dans l’Azure Active Directory (AAD) :

 

Entreprise Application Azure Active Directory

 

La web app Managed Identity sera utilisée pour se connecter à la base de données SQL comme le montre la figure ci-dessous :

 

web app Managed Identity base de données SQL

Accorder les accès à la base de données

 

Accorder les accès à la base de données est très simple. Il vous suffit de :

  • Accéder au portail Azure
  • Sélectionner votre serveur SQL
  • Sélectionner le menu Directory Active Admin
  • Cliquer sur le bouton “Set admin” et choisir une identité Azure AD
  • Cliquer sur le bouton « Save »

A noter : il est préférable de fournir un groupe d’admins.

 

Accès base de données Azure Active Directory

 

Maintenant que le groupe AAD est configuré comme Admin du serveur SQL, il est visible au niveau du serveur SQL. Il suffit de se connecter via SSMS depuis une machine qui a accès au réseau du serveur SQL. Notons qu’un serveur SQL contient généralement des données sensibles : il ne doit donc en aucun cas être exposé en public. II faut privilégier l’utilisation des Private Endpoint ou des Service Endpoint.

 

Azure AD private endpoints

Si l’on ajoute la web app Managed Identity dans le groupe « admin », ce dernier va être utilisé dans notre App Service pour lire et/ou écrire en base.

 

web app Managed Identity

 

Ajouter le MSI directement dans le groupe « admin » n’est pas une bonne pratique : c’est pourquoi on préférera ajouter l’utilisateur en base de données avec des droits plus restreints.

Il faut se connecter à la base de données avec un compte admin SSMS (SQL Server Management Studio) et exécuter ce code afin de donner les droits en lecture à notre App Service.

 

SQL Server Management Studio

SQL Server Management Studio

 

Une fois que l’utilisateur a été ajouté et que le bon rôle lui a été affecté, on peut appeler notre API, qui à son tour récupéra les informations depuis la base de données.

 

 

Accéder à la base de données

 

Pour accéder à la base de données depuis un App Service, il suffit de mettre à jour la configuration et le code de connexion au serveur SQL :

1. Configuration de la connection string :

Pour que l’App Service utilise l’Identity System pour accéder à SQL, il faut modifier le fichier de config comme le montre la capture ci-dessous :

 

Identity system config SQL

2. Accès à la base de données :

Une fois la configuration faite, il suffit de modifier le code de connexion à la base de données :

 

 

Voici notre résultat de test :

 

 

Limites de SQL Server

 

Le compte admin de SQL server ne peut être ni désactivé ni supprimé. Ainsi, toute personne connaissant les credentials de l’admin peut se connecter à la base de données SQL avec les droits d’administrateur.

 

Recommandations de Microsoft :

Pour plus d’informations sur les alertes SQL, nous vous invitons à consulter la documentation officielle Microsoft.

Vous souhaitez en savoir plus ? Vous voulez partager votre retour d’expérience ? N’hésitez pas à nous laisser un message en commentaire !

 

 

Formation DP203 Data Engineer sur Microsoft Azure