Verwenden von Azure Key Vault zum Schutz von Geheimnissen zur Produktionszeit
Tipp
Diese Inhalte sind ein Auszug aus dem eBook „.NET Microservices Architecture for Containerized .NET Applications“, verfügbar unter .NET Docs oder als kostenlos herunterladbare PDF-Datei, die offline gelesen werden kann.
Geheimnisse, die als Umgebungsvariablen oder vom Secret Manager-Tool gespeichert werden, werden weiterhin lokal und unverschlüsselt auf dem Computer gespeichert. Azure Key Vault ist eine sicherere Option zum Speichern von Geheimnissen, die einen sicheren und zentralen Speicherort für Schlüssel und Geheimnisse bietet.
Das Paket Azure.Extensions.AspNetCore.Configuration.Secrets ermöglicht einer ASP.NET Core-Anwendung das Lesen von Konfigurationsinformationen aus Azure Key Vault. Führen Sie die folgenden Schritte aus, um mit der Verwendung von Geheimnissen aus Azure Key Vault zu beginnen:
Registrieren Sie Ihre Anwendung als eine Azure AD-Anwendung. (Der Zugriff auf Schlüsseltresore wird von Azure AD verwaltet.) Dies kann über das Azure-Verwaltungsportal erfolgen.
Wenn Sie hingegen möchten, dass Ihre Anwendung nicht mit einem Kennwort oder einem Clientgeheimnis authentifiziert wird, sondern mit einem Zertifikat, können Sie das PowerShell-Cmdlet New-AzADApplication verwenden. Das Zertifikat, das Sie mit Azure Key Vault registrieren, benötigt nur Ihren öffentlichen Schlüssel. Ihre Anwendung verwendet den privaten Schlüssel.
Gewähren Sie der registrierten Anwendung Zugriff auf den Schlüsseltresor, indem Sie einen neuen Dienstprinzipal erstellen. Verwenden Sie hierzu die folgenden PowerShell-Befehle:
$sp = New-AzADServicePrincipal -ApplicationId "<Application ID guid>" Set-AzKeyVaultAccessPolicy -VaultName "<VaultName>" -ServicePrincipalName $sp.ServicePrincipalNames[0] -PermissionsToSecrets all -ResourceGroupName "<KeyVault Resource Group>"
Fügen Sie den Schlüsseltresor als Konfigurationsquelle in Ihrer Anwendung hinzu, indem Sie die Erweiterungsmethode „AzureKeyVaultConfigurationExtensions.AddAzureKeyVault“ aufrufen, wenn Sie eine IConfigurationRoot-Instanz erstellen.
Beachten Sie, dass das Aufrufen von AddAzureKeyVault
die Anwendungs-ID erfordert, die in den vorherigen Schritten registriert wurde und den Zugriff auf den Schlüsseltresor erhalten hat. Alternativ können Sie zuerst den Azure CLI-Befehl az login
ausführen und dann eine Überladung von AddAzureKeyVault
verwenden, die eine DefaultAzureCredential-Klasse anstelle des Clients akzeptiert.
Wichtig
Sie sollten Azure Key Vault als letzten Konfigurationsanbieter registrieren, damit Konfigurationswerte vorheriger Anbieter überschrieben werden können.
Zusätzliche Ressourcen
Verwenden von Azure Key Vault zum Schutz von Anwendungsgeheimnissen
https://learn.microsoft.com/azure/architecture/multitenant-identitySicheres Speichern von App-Geheimnissen während der Entwicklung
https://learn.microsoft.com/aspnet/core/security/app-secretsKonfigurieren des Schutzes von Daten
https://learn.microsoft.com/aspnet/core/security/data-protection/configuration/overview(Data Protection key management and lifetime in ASP.NET Core) Gültigkeitsdauer und Verwaltung von Schlüsseln für den Schutz von Daten in ASP.NET Core
https://learn.microsoft.com/aspnet/core/security/data-protection/configuration/default-settings