Secrets ohne Konfiguration: Key Vault + Managed Identity
appsettings.json ist ein Secret in Git und somit ein kompromittiertes Secret. Die idiomatische Antwort auf Azure: Key Vault zum Speichern der Secrets, Managed Identity für den Zugriff darauf ohne jegliches Passwort. Am Ende enthält Ihre Konfiguration keine einzige sensible Zeichenkette mehr.
Die Authentifizierungsbarriere… die verschwindet
DefaultAzureCredential mehrere Authentifizierungsquellen und wählt die erste aus, die antwortet – daher die Portabilität zwischen Entwicklungsrechner und Cloud.
Key Vault als Konfigurationsprovider
SecretClient manuell aufzurufen, binden Sie Key Vault direkt in das ASP.NET Core-Konfigurationssystem ein. Alle Secrets werden zu gewöhnlichen Konfigurationseinträgen, zusammengeführt mit appsettings.json und den Umgebungsvariablen.
: , daher verwendet man -- im Secret-Namen, das automatisch in ein Abschnittstrennzeichen übersetzt wird. Db--ConnectionString wird zu Db:ConnectionString , genau wie im Rest Ihrer typisierten Konfiguration.
RBAC statt Access Policies
$PRINCIPAL_ID ist die objectId der Managed Identity, abrufbar nach deren Aktivierung auf der Ressource. Das Prinzip des geringsten Privilegs gilt: Ein Dienst, der nur Secrets liest, darf niemals die Rolle Key Vault Secrets Officer besitzen.
Lokale Entwicklung vs. Cloud, ohne eine Zeile zu ändern
DefaultAzureCredential : In der Produktion bezieht es das Token der Managed Identity; auf Ihrem Entwicklungsrechner wechselt es zur Identität der Azure CLI ( az login ) oder von Visual Studio. Derselbe Code funktioniert überall, vorausgesetzt, Ihr Konto verfügt ebenfalls über die Rolle Key Vault Secrets User . Die Dokumentation zu Key Vault + Managed Identity beschreibt die genaue Reihenfolge der Authentifizierungskette und deren Feinabstimmung.
Das beste Secret ist eines, das man nie anfassen muss. Mit Managed Identity wird die Rotation von Azure verwaltet, und Ihr Git-Repository wird wieder das, was es immer hätte sein sollen: bedenkenlos öffentlich .