Heute zeige ich Ihnen, wie Sie Konfigurationsgeheimnisse von Azure App Service in Azure Key Vault speichern. In diesem Beispiel, Ich werde a . verwenden Plataforma DNN Azure App Service-basierte Website mit SQL-Datenbank, die die Verbindungszeichenfolge der SQL-Datenbank in Azure Key Vault speichert. Ich werde die Anwendungscodebasis für den Zugriff auf Azure Key Vault in keiner Weise ändern. Wir werden die Managed Identity-Funktion von App Service nutzen, um automatisch Geheimnisse aus Key Vault abzurufen.
Aprovisionar Azure Key Vault
-
Aprovisionar Azure Key Vault
-
Für diese Demo, Wir werden das Berechtigungsmodell auf die neue rollenbasierte Zugriffssteuerung von Azure umstellen (RBAC). Es befindet sich derzeit in der Vorschau.
-
Abhängig von Ihrer Implementierung, ändere das Netzwerk nach Belieben. Für diese Demo, wir belassen es als öffentlichen Endpunkt, um den App Service-Einstellungen zu entsprechen.
- Klicken Sie auf die Überprüfung + Erschaffen Schaltfläche zum Starten der Bereitstellung
-
Einmal erstellt, füge dich der Funktion hinzu “Key Vault-Administrator (Vorschauversion)” durch Zugangskontrolle (ICH BIN). Jetzt können Sie mit der Verwaltung von Geheimnissen beginnen.
Verbindungszeichenfolge zu Key Vault-Geheimnissen hinzufügen
-
Fügen Sie Key Vault ein neues Geheimnis hinzu
-
Geben Sie den Typ Geheimnis an “Handbuch”, Geben Sie ihm einen Namen und setzen Sie den Wert auf die aktuelle SQL-Datenbank-Verbindungszeichenfolge, die in der Webanwendung.config gespeichert ist
- Klicken Sie auf Erstellen. Einmal erstellt, Klicken Sie auf das Geheimnis, um die Details des Geheimnisses anzuzeigen, und klicken Sie dann erneut auf die aktuelle Version
-
Neben der geheimen Kennung, Klicken Sie auf die Schaltfläche In die Zwischenablage kopieren
Fügen Sie der Azure App Service-Konfiguration den Verweis auf den geheimen Bezeichner hinzu
- Öffnen Sie die App Service-Einstellungen und fügen Sie eine neue Einstellung für die Verbindungszeichenfolge hinzu.
- Geben Sie den Namen der Verbindungszeichenfolge ein (“SiteSqlServer” für die DNN-Plattform) und den Wert einstellen “@ Microsoft.KeyVault (SecretUri = VALUE_FROM_CLIPBOARD)”, wobei VALUE_FROM_CLIPBOARD das des Schrittes ist 4 aus dem vorherigen Abschnitt.
-
Klicken Sie auf Speichern, um die Anwendungseinstellungen zu speichern.
App Service den Zugriff auf Key Vault erlauben
- Wieder im App Service, Klicken Sie auf Identität, um die vom System zugewiesene Identität zu aktivieren.
-
Klicken Sie nach der Aktivierung auf Speichern “Aktiviert” der Staat
-
Drück den Knopf “Rollenzuweisungen” und dann klick “Rollenzuweisung hinzufügen (Vorschau)”
-
Bei der Rollenvergabe, Umfang wählen “Schlüsseltresor”, abonnieren Sie das Abonnement, in dem Sie Key Vault in den vorherigen Schritten erstellt haben, und den Namen der Key Vault-Ressource. Für die Rolle, einfach auswählen “Key Vault Secrets-Benutzer (Vorschau)”
-
Schließlich, Rufen Sie die Datei web.config Ihrer DNN-Plattform-Website auf und löschen Sie den Inhalt der Verbindungszeichenfolge.
- Besuchen Sie die Website und überprüfen Sie, ob sie richtig geladen wird. Jetzt, Die Verbindungszeichenfolge wird sicher in Azure Key Vault gespeichert und nicht mehr im Dateisystem gespeichert.
Bekannte Probleme
-
ERROR: Ein Fehler wird angezeigt “Schlüsselwort nicht unterstützt: ‘@ Microsoft.keyvault (Geheimnisse'”. Ich habe die Erfahrung gemacht, dass die Beantragung von RBAC-Berechtigungen ein oder zwei Minuten dauern kann, Also versuche es nach ein paar Minuten. Versuchen Sie auch, den App-Gedanken im App Service-Portal neu zu starten, also wird nichts zwischengespeichert.
- Beim Überprüfen von DNN log4net-Protokollen, Sie sehen viele Fehler von einem Prozess, der versucht, eine Datenbankverbindung mit einer ungültigen Verbindungszeichenfolge während des DNN-Initialisierungsprozesses zu initialisieren. Dieser Fehler tritt derzeit in Versionen auf 9.7.2 oder früher mit einem ausstehenden Pull-Request, um das Problem zu beheben https://github.com/dnnsoftware/Dnn.Platform/issues/4227
- WICHTIG: wenn Sie die Sicherungsfunktion von Azure App Service verwenden möchten, Verwenden Sie diese Methode nicht zum Speichern von SQL-Datenbankverbindungszeichenfolgen in Azure Key Vault, da sie von der App Service Backup-Funktion nicht unterstützt werden. https://stackoverflow.com/questions/56101504/backingup-azure-webapp-when-connection-string-is-injected-through-keyvault
ich hoffe das hilft!