Använda Azure Key Vault för att skydda hemligheter vid produktionstillfället
Dricks
Det här innehållet är ett utdrag från eBook, .NET Microservices Architecture for Containerized .NET Applications, tillgängligt på .NET Docs eller som en kostnadsfri nedladdningsbar PDF som kan läsas offline.
Hemligheter som lagras som miljövariabler eller lagras av Secret Manager-verktyget lagras fortfarande lokalt och okrypterade på datorn. Ett säkrare alternativ för att lagra hemligheter är Azure Key Vault, som ger en säker, central plats för lagring av nycklar och hemligheter.
Med paketet Azure.Extensions.AspNetCore.Configuration.Secrets kan ett ASP.NET Core-program läsa konfigurationsinformation från Azure Key Vault. Om du vill börja använda hemligheter från ett Azure Key Vault följer du dessa steg:
Registrera ditt program som ett Azure AD-program. (Åtkomst till nyckelvalv hanteras av Azure AD.) Detta kan göras via Azure-hanteringsportalen.\
Om du vill att programmet ska autentiseras med ett certifikat i stället för ett lösenord eller en klienthemlighet kan du använda PowerShell-cmdleten New-AzADApplication . Certifikatet som du registrerar med Azure Key Vault behöver bara din offentliga nyckel. Programmet använder den privata nyckeln.
Ge det registrerade programmet åtkomst till nyckelvalvet genom att skapa ett nytt huvudnamn för tjänsten. Du kan göra detta med hjälp av följande PowerShell-kommandon:
$sp = New-AzADServicePrincipal -ApplicationId "<Application ID guid>" Set-AzKeyVaultAccessPolicy -VaultName "<VaultName>" -ServicePrincipalName $sp.ServicePrincipalNames[0] -PermissionsToSecrets all -ResourceGroupName "<KeyVault Resource Group>"
Inkludera nyckelvalvet som en konfigurationskälla i ditt program genom att anropa azureKeyVaultConfigurationExtensions.AddAzureKeyVault-tilläggsmetoden när du skapar en IConfigurationRoot instans.
Observera att anrop AddAzureKeyVault
kräver det program-ID som har registrerats och gett åtkomst till nyckelvalvet i föregående steg. Eller så kan du först köra Azure CLI-kommandot: az login
och sedan använda en överlagring av AddAzureKeyVault
som tar en DefaultAzureCredential i stället för klienten.
Viktigt!
Vi rekommenderar att du registrerar Azure Key Vault som den senaste konfigurationsprovidern, så att den kan åsidosätta konfigurationsvärden från tidigare leverantörer.
Ytterligare resurser
Använda Azure Key Vault för att skydda programhemligheter
https://learn.microsoft.com/azure/architecture/multitenant-identityValv lagring av apphemligheter under utveckling
https://learn.microsoft.com/aspnet/core/security/app-secretsKonfigurera dataskydd
https://learn.microsoft.com/aspnet/core/security/data-protection/configuration/overviewHantering och livslängd för dataskyddsnycklar i ASP.NET Core
https://learn.microsoft.com/aspnet/core/security/data-protection/configuration/default-settings