Utiliser Azure Key Vault pour protéger les secrets au moment de la production
Conseil
Ce contenu est un extrait du livre électronique « .NET Microservices Architecture for Containerized .NET Applications », disponible sur .NET Docs ou sous forme de PDF téléchargeable gratuitement et pouvant être lu hors ligne.
Les secrets stockés comme variables d’environnement ou au moyen de l’outil Secret Manager sont toujours stockés localement sur l’ordinateur et non chiffrés. Azure Key Vault constitue une option de stockage des secrets plus sûre, offrant un emplacement centralisé et sécurisé pour le stockage des clés et des secrets.
Le package Azure.Extensions.AspNetCore.Configuration.Secrets permet à une application ASP.NET Core de lire des informations de configuration à partir d’Azure Key Vault. Pour commencer à utiliser des secrets à partir d’Azure Key Valut, procédez comme suit :
Inscrivez votre application en tant qu’application Azure AD. (L’accès aux coffres de clés est géré par Azure AD.) Cette opération peut être effectuée via le portail de gestion Azure.\
Si vous préférez que votre application s’authentifie avec un certificat au lieu d’un mot de passe ou d’une clé secrète client, vous pouvez utiliser l’applet de commande PowerShell New-AzADApplication. Le certificat que vous inscrivez auprès d’Azure Key Vault n’a besoin que de votre clé publique. Votre application utilisera la clé privée.
Accordez à l’application inscrite un accès au coffre de clés en créant un principal de service. Pour cela, vous pouvez utiliser les commandes PowerShell suivantes :
$sp = New-AzADServicePrincipal -ApplicationId "<Application ID guid>" Set-AzKeyVaultAccessPolicy -VaultName "<VaultName>" -ServicePrincipalName $sp.ServicePrincipalNames[0] -PermissionsToSecrets all -ResourceGroupName "<KeyVault Resource Group>"
Ajoutez le coffre de clés comme source de configuration dans votre application en appelant la méthode d’extension AzureKeyVaultConfigurationExtensions.AddAzureKeyVault au moment de créer une instance IConfigurationRoot.
Notez que l’appel d’AddAzureKeyVault
nécessite l’ID de l’application qui a été inscrite et qui a obtenu l’accès au coffre de clés aux étapes précédentes. Vous pouvez également exécuter la commande Azure CLI az login
, puis utiliser une surcharge de AddAzureKeyVault
qui prend une valeur DefaultAzureCredential à la place du client.
Important
Nous vous recommandons d’inscrire Azure Key Vault en tant que dernier fournisseur de configuration, afin qu’il puisse remplacer les valeurs de configuration des fournisseurs précédents.
Ressources supplémentaires
Utilisation d’Azure Key Vault pour protéger la confidentialité des secrets d’application
https://learn.microsoft.com/azure/architecture/multitenant-identityStockage sécurisé des secrets d’application en cours de développement
https://learn.microsoft.com/aspnet/core/security/app-secretsConfiguration de la protection des données
https://learn.microsoft.com/aspnet/core/security/data-protection/configuration/overviewGestion et durée de vie des clés de protection des données dans ASP.NET Core
https://learn.microsoft.com/aspnet/core/security/data-protection/configuration/default-settings