Freigeben über


Zentrale Konfiguration

Tipp

Dieser Inhalt ist ein Auszug aus dem eBook, Architecting Cloud Native .NET Applications for Azure, verfügbar auf .NET Docs oder als kostenlose herunterladbare PDF, die offline gelesen werden kann.

Miniaturansicht des E-Books „Architecting Cloud Native .NET Applications for Azure“.

Im Gegensatz zu einer monolithischen App, in der alles innerhalb einer einzigen Instanz ausgeführt wird, besteht eine cloudeigene Anwendung aus unabhängigen Diensten, die über virtuelle Computer, Container und geografische Regionen verteilt werden. Das Verwalten von Konfigurationseinstellungen für Dutzende von interdependenten Diensten kann eine Herausforderung darstellen. Doppelte Kopien von Konfigurationseinstellungen an verschiedenen Standorten sind fehleranfällig und schwierig zu verwalten. Die zentrale Konfiguration ist eine wichtige Voraussetzung für verteilte cloudeigene Anwendungen.

Wie in Kapitel 1 erläutert, erfordern die Twelve-Factor App-Empfehlungen eine strikte Trennung zwischen Code und Konfiguration. Die Konfiguration muss extern aus der Anwendung gespeichert und bei Bedarf gelesen werden. Das Speichern von Konfigurationswerten als Konstanten oder Literalwerte im Code ist ein Verstoß. Dieselben Konfigurationswerte werden häufig von vielen Diensten in derselben Anwendung verwendet. Darüber hinaus müssen wir dieselben Werte in mehreren Umgebungen unterstützen, z. B. Entwicklungs-, Test- und Produktionsumgebungen. Die bewährte Methode besteht darin, sie in einem zentralen Konfigurationsspeicher zu speichern.

Die Azure-Cloud bietet mehrere großartige Optionen.

Azure App-Konfiguration

Azure App Configuration ist ein vollständig verwalteter Azure-Dienst, der nicht geheime Konfigurationseinstellungen an einem sicheren, zentralen Speicherort speichert. Gespeicherte Werte können von mehreren Diensten und Anwendungen gemeinsam genutzt werden.

Der Dienst ist einfach zu verwenden und bietet mehrere Vorteile:

  • Flexible Schlüssel-/Wertdarstellungen und -zuordnungen
  • Tagging mit Azure-Labels
  • Dedizierte Benutzeroberfläche für die Verwaltung
  • Verschlüsselung vertraulicher Informationen
  • Abfragen und Batchabruf

Azure App-Konfiguration überwacht Änderungen an Schlüssel-Wert-Einstellungen für einen Zeitraum von sieben Tagen. Mit der Punkt-in-Zeit-Snapshot-Funktion können Sie die Historie einer Konfiguration rekonstruieren und sogar ein Rollback bei einem fehlgeschlagenen Deployment durchführen.

Die App-Konfiguration speichert jede Einstellung automatisch zwischen, um übermäßige Aufrufe an den Konfigurationsspeicher zu vermeiden. Der Aktualisierungsvorgang wartet, bis der zwischengespeicherte Wert einer Einstellung abläuft, um diese Einstellung zu aktualisieren, auch wenn sich der Wert im Konfigurationsspeicher ändert. Die Standardablaufzeit für den Cache beträgt 30 Sekunden. Sie können die Ablaufzeit außer Kraft setzen.

Die App-Konfiguration verschlüsselt alle Konfigurationswerte während der Übertragung und im Ruhezustand. Schlüsselnamen und Bezeichnungen werden als Indizes zum Abrufen von Konfigurationsdaten verwendet und werden nicht verschlüsselt.

Obwohl die App-Konfiguration eine gehärtete Sicherheit bietet, ist Azure Key Vault immer noch der beste Ort zum Speichern von Anwendungsgeheimnissen. Key Vault bietet Verschlüsselung auf Hardwareebene, granulare Zugriffsrichtlinien und Verwaltungsvorgänge wie die Zertifikatsrotation. Sie können App-Konfigurationswerte erstellen, die auf geheime Schlüssel verweisen, die in einem Key Vault gespeichert sind.

Azure Key Vault (ein Dienst zur sicheren Verwaltung kryptografischer Schlüssel)

Key Vault ist ein verwalteter Dienst zum sicheren Speichern und Zugreifen auf geheime Schlüssel. Ein Geheimnis ist alles, zu dem Sie den Zugriff streng kontrollieren möchten, wie API-Schlüssel, Kennwörter oder Zertifikate. Ein Tresor ist eine logische Gruppe von Geheimnissen.

Mit Key Vault lässt sich das Risiko einer unbeabsichtigten Weitergabe von Geheimnissen erheblich senken. Bei verwendung von Key Vault müssen Anwendungsentwickler keine Sicherheitsinformationen mehr in ihrer Anwendung speichern. In dieser Übung wird die Notwendigkeit beseitigt, diese Informationen in Ihrem Code zu speichern. Beispielsweise muss eine Anwendung möglicherweise eine Verbindung mit einer Datenbank herstellen. Anstatt die Verbindungszeichenfolge im App-Code zu speichern, können Sie diese sicher in Key Vault speichern.

Ihre Anwendungen können mithilfe von URIs sicher auf die benötigten Informationen zugreifen. Diese URIs ermöglichen es den Anwendungen, bestimmte Versionen eines geheimen Schlüssels abzurufen. Sie müssen keinerlei benutzerdefinierten Code schreiben, um die geheimen Informationen zu schützen, die in Key Vault gespeichert sind.

Der Zugriff auf Key Vault erfordert eine ordnungsgemäße Anruferauthentifizierung und Autorisierung. In der Regel verwendet jeder cloudneigene Microservice eine ClientId/ClientSecret-Kombination. Es ist wichtig, diese Anmeldeinformationen außerhalb der Quellcodeverwaltung aufbewahren. Es wird empfohlen, sie in der Umgebung der Anwendung festzulegen. Der direkte Zugriff auf Key Vault von AKS kann mithilfe von Key Vault FlexVolume erreicht werden.

Konfiguration in eShop

Die eShopOnContainers-Anwendung enthält lokale Anwendungseinstellungsdateien mit jedem Microservice. Diese Dateien werden in die Quellcodeverwaltung eingecheckt, enthalten jedoch keine Produktionsschlüssel wie Verbindungszeichenfolgen oder API-Schlüssel. In der Produktion können einzelne Einstellungen mit dienstspezifischen Umgebungsvariablen überschrieben werden. Das Einfügen geheimer Schlüssel in Umgebungsvariablen ist eine gängige Methode für gehostete Anwendungen, bietet jedoch keinen zentralen Konfigurationsspeicher. Zur Unterstützung der zentralen Verwaltung von Konfigurationseinstellungen enthält jeder Microservice eine Einstellung, die zwischen der Verwendung lokaler Einstellungen oder Azure Key Vault-Einstellungen umschalten soll.

Verweise