Sécuriser la connectivité aux services et bases de données Azure à partir d’Azure App Service
Votre service d’application peut avoir besoin de se connecter à d’autres services Azure, tels qu’une base de données, un stockage ou une autre application. Cette vue d’ensemble recommande différentes méthodes de connexion, et indique quand les utiliser.
Aujourd’hui, la décision d’une approche de connectivité est étroitement liée à la gestion des secrets. Le modèle courant d’utilisation des secrets de connexion dans les chaînes de connexion, tels que le nom d’utilisateur et le mot de passe, la clé secrète, etc. n’est plus considéré comme l’approche la plus sécurisée pour la connectivité. Le risque est encore plus élevé aujourd’hui, car les acteurs des menaces analysent régulièrement les référentiels GitHub publics pour les secrets de connexion validés accidentellement. Pour les applications cloud, la meilleure gestion des secrets consiste à ne pas avoir de secrets du tout. Lorsque vous migrez vers Azure App Service, votre application peut commencer par une connectivité basée sur des secrets, et App Service vous permet de conserver les secrets en toute sécurité. Toutefois, Azure peut vous aider à sécuriser la connectivité back-end de votre application via l’authentification Microsoft Entra, ce qui élimine complètement les secrets dans votre application.
Méthode de connexion | Quand utiliser |
---|---|
Se connecter avec une identité d’application | * Vous souhaitez supprimer complètement les informations d’identification, les clés ou les secrets de votre application. * Le service Azure en aval prend en charge l’authentification Microsoft Entra, telle que Microsoft Graph. * La ressource en aval n’a pas besoin de connaître l’utilisateur connecté actuel ou n’a pas besoin de l’autorisation granulaire de l’utilisateur connecté actuel. |
Se connecter pour le compte de l’utilisateur connecté | * L’application doit accéder à une ressource en aval pour le compte de l’utilisateur connecté. * Le service Azure en aval prend en charge l’authentification Microsoft Entra, telle que Microsoft Graph. * La ressource en aval doit effectuer une autorisation granulaire de l’utilisateur connecté actuel. |
Se connecter à l’aide de secrets | * La ressource en aval nécessite des secrets de connexion. * Votre application se connecte à des services non-Azure, tels qu’un serveur de base de données local. * Le service Azure en aval ne prend pas encore en charge l’authentification Microsoft Entra. |
Se connecter avec une identité d’application
Si votre application utilise déjà un seul ensemble d’informations d’identification pour accéder à un service Azure en aval, vous pouvez rapidement convertir la connexion pour utiliser une identité d’application à la place. Une identité managée à partir de l’ID Microsoft Entra permet à App Service d’accéder aux ressources sans secrets, et vous pouvez gérer son accès via le contrôle d’accès en fonction du rôle (RBAC). Une identité managée peut se connecter à n’importe quelle ressource Azure prenant en charge l’authentification Microsoft Entra, et l’authentification a lieu avec des jetons de courte durée.
L’image suivante illustre la connexion d’un service d’application à d’autres services Azure :
- A : L’utilisateur se rend sur le site web du service d’application Azure.
- B : Connexion sécurisée d’App Service vers un autre service Azure à l’aide d’une identité managée.
- C : Connexion sécurisée d’App Service vers Microsoft Graph à l’aide d’une identité managée.
Exemples d’utilisation de secrets d’application pour se connecter à une base de données :
- Tutoriel : Se connecter à des bases de données Azure à partir d’App Service sans secrets à l’aide d’une identité managée
- Tutoriel : Se connecter à SQL Database à partir d’App Service .NET sans secrets à l’aide d’une identité managée
- Tutoriel : Se connecter à Database pour PostgreSQL à partir d’App Service Java Tomcat sans secrets à l’aide d’une identité managée
Se connecter pour le compte de l’utilisateur connecté
Votre application peut avoir besoin de se connecter à un service en aval pour le compte de l’utilisateur connecté. App Service vous permet d’authentifier facilement les utilisateurs à l’aide des fournisseurs d’identité les plus courants (consultez Authentification et autorisation dans Azure App Service et Azure Functions). Si vous utilisez le fournisseur Microsoft (authentification Microsoft Entra), vous pouvez ensuite transmettre l’utilisateur connecté à n’importe quel service en aval. Par exemple :
- Exécutez une requête de base de données qui retourne des données confidentielles que l’utilisateur connecté est autorisé à lire.
- Récupérez des données personnelles ou effectuez des actions en tant qu’utilisateur connecté dans Microsoft Graph.
L’image suivante montre une application qui accède de manière sécurisée à une base de données SQL pour le compte de l’utilisateur connecté.
Voici quelques scénarios courants :
- Se connecter à Microsoft Graph pour le compte de l’utilisateur
- Se connecter à une base de données SQL pour le compte de l’utilisateur
- Se connecter à une autre application App Service pour le compte de l’utilisateur
- Faire passer l’utilisateur connecté via plusieurs couches de services en aval
Se connecter à l’aide de secrets
Il existe deux façons recommandées d’utiliser les secrets dans votre application : utiliser les secrets stockés dans Azure Key Vault ou utiliser les secrets dans les paramètres d’application App Service.
Utiliser les secrets de Key Vault
Azure Key Vault permet de stocker des secrets et des clés de manière sécurisée, d’effectuer un monitoring des accès aux secrets et de leur utilisation, et de simplifier l’administration des secrets d’application. Si le service en aval ne prend pas en charge l’authentification Microsoft Entra, ou s’il nécessite une clé ou une chaîne de connexion, utilisez Key Vault pour stocker vos secrets. Connectez ensuite votre application à Key Vault avec une identité managée pour récupérer les secrets. Votre application peut accéder à ces secrets de coffre de clés en tant que références Key Vault dans les paramètres de l’application.
Les avantages des identités managées intégrées à Key Vault sont les suivants :
- L’accès au secret Key Vault est limité à l’application.
- Les contributeurs de l’application, par exemple les administrateurs, peuvent disposer d’un contrôle total sur les ressources App Service, mais n’ont pas accès aux secrets Key Vault.
- Si le code de votre application accède déjà aux secrets de connexion avec les paramètres d’application, aucune modification du code n’est requise.
- Key Vault permet un monitoring et un audit des utilisateurs qui ont accédé aux secrets.
- La rotation des secrets Key Vault ne nécessite aucune modification dans App Service.
L’image suivante illustre la connexion d’App Service à Key Vault avec une identité managée, puis l’accès à un service Azure à l’aide des secrets stockés dans Key Vault :
Utiliser des secrets dans les paramètres d’application
Pour les applications qui se connectent aux services à l’aide de secrets (tels que des noms d’utilisateur, des mots de passe et des clés API), App Service peut les stocker en toute sécurité dans les paramètres d’application. Ces secrets sont injectés dans votre code d’application en tant que variables d’environnement au démarrage de l’application. Une fois stockés, les paramètres d’application sont toujours chiffrés (chiffrement au repos). Pour une gestion des secrets plus avancée, telle que la rotation des secrets, les stratégies d’accès et l’historique d’audit, essayez d’utiliser Key Vault.
Exemples d’utilisation de secrets d’application pour se connecter à une base de données :
- Tutoriel : Déployer une application ASP.NET Core et Azure SQL Database sur Azure App Service
- Tutoriel : Déployer une application ASP.NET sur Azure avec Azure SQL Database
- Tutoriel : Déployer une application PHP, MySQL et Redis sur Azure App Service
- Déployer une application web Node.js + MongoDB sur Azure
- Déployer une application web Python (Django ou Flask) avec PostgreSQL dans Azure
- Tutoriel : Créer une application web Tomcat avec Azure App Service sur Linux et MySQL
- Tutoriel : Générer une application web Spring Boot Java avec Azure App Service sur Linux et Azure Cosmos DB
Étapes suivantes
Découvrez comment :
- Stocker des secrets de manière sécurisée dans Azure Key Vault.
- Accéder aux ressources à l’aide d’une identité managée.
- Stocker des secrets à l’aide des paramètres d’application d’App Service.
- Se connecter à Microsoft Graph en tant qu’utilisateur.
- Se connecter à une base de données SQL en tant qu’utilisateur.
- Se connecter à une autre application App Service en tant qu’utilisateur.
- Se connecter à une autre application App Service, puis à un service en aval en tant qu’utilisateur.