Verwalten von Geheimnissen und Zertifikaten mit Azure Key Vault

Verwalten von Geheimnissen und Zertifikaten mit Azure Key Vault

14.08.2024

Dieser technische und lehrreiche Artikel soll Sicherheitsanalysten, IT-Administratoren und Systemingenieuren bei der Verwendung von Azure Key Vault zur sicheren Verwaltung von Geheimnissen (z. B. Kennwörtern, API-Schlüsseln, Verbindungszeichenfolgen) und Zertifikaten (SSL/TLS) helfen. Azure Key Vault ist ein Cloud-Dienst, der eine zentralisierte und sichere Lösung für die Speicherung und den Zugriff auf diese kritischen Elemente bereitstellt, wodurch die Notwendigkeit entfällt, sie direkt in Code- oder Konfigurationsdateien einzubetten, was eine schlechte Sicherheitspraxis darstellt [1].

Einführung

Bei der Entwicklung und dem Betrieb moderner Anwendungen ist die Verwaltung von Geheimnissen und Zertifikaten eine ständige Herausforderung. Datenbankanmeldeinformationen, API-Schlüssel von Drittanbieterdiensten, Verschlüsselungsschlüssel und SSL/TLS-Zertifikate sind vertrauliche Vermögenswerte, die bei Kompromittierung zu schwerwiegenden Datenschutzverletzungen führen können. Ihre unsichere Speicherung, etwa in Klartextdateien, Umgebungsvariablen oder direkt im Quellcode, stellt ein erhebliches Risiko dar. Azure Key Vault wurde entwickelt, um diese Probleme zu lösen, indem es ein sicheres hardwarebasiertes Repository (HSM) zum Schutz dieser Assets bereitstellt, den Zugriff streng kontrolliert und das Lebenszyklusmanagement vereinfacht [2].

Diese Anleitung behandelt das Erstellen eines Azure Key Vault, das Hinzufügen und Abrufen von Geheimnissen und Zertifikaten, das Konfigurieren von Zugriffsrichtlinien und die Integration mit anderen Azure-Diensten wie Azure App Service. Es werden Schritt-für-Schritt-Anleitungen, beispielhafte Azure CLI-Befehle und Validierungsmethoden bereitgestellt, damit der Leser eine sichere Verwaltung von Geheimnissen und Zertifikaten implementieren und so den Sicherheitsstatus seiner Anwendungen und Cloud-Infrastruktur stärken kann.

Warum ist Azure Key Vault so wichtig?

  • Sicherer Speicher: Schützt Geheimnisse und Verschlüsselungsschlüssel mithilfe von FIPS 140-2 Level 2 validierten Hardware-Sicherheitsmodulen (HSMs).
  • Zentralisierte Zugriffskontrolle: Ermöglicht Ihnen die Verwaltung von Zugriffsberechtigungen für Geheimnisse und Zertifikate auf granularer Ebene mithilfe der rollenbasierten Zugriffskontrolle (RBAC) von Azure oder von Key Vault-Zugriffsrichtlinien.
  • Lebenszyklusverwaltung: Erleichtert die Rotation von Geheimnissen und Zertifikaten, den automatischen Ablauf und die Ereignisbenachrichtigung.
  • Risikominderung: Eliminiert die Notwendigkeit, Anmeldeinformationen in Code- oder Konfigurationsdateien zu speichern, wodurch das Risiko von Datenlecks minimiert wird.
  • Überwachung und Prüfung: Zeichnet alle in Key Vault durchgeführten Vorgänge auf und stellt Prüfprotokolle für Compliance- und Sicherheitsuntersuchungen bereit.
  • Vereinfachte Integration: Einfache Integration mit anderen Azure-Diensten wie Azure App Service, Azure Functions, Azure Virtual Machines und Azure DevOps.

Voraussetzungen

Um Azure Key Vault verwenden zu können, benötigen Sie die folgenden Elemente:

  1. Aktives Azure-Abonnement: Ein Azure-Abonnement zum Erstellen und Verwalten von Ressourcen.
  2. Administratorzugriff: Ein Konto mit der Rolle „Besitzer“ oder „Mitwirkender“ im Azure-Abonnement oder eine benutzerdefinierte Rolle mit Berechtigungen zum Erstellen und Verwalten von Key Vaults.
  3. Azure CLI oder Azure PowerShell: Installierte und konfigurierte Befehlszeilentools für die Interaktion mit Azure.
  4. Optional: Visual Studio Code: Für Entwicklungs- und Integrationstests.

Schritt für Schritt: Geheimnisse und Zertifikate mit Azure Key Vault verwalten

Lassen Sie uns einen Schlüsseltresor erstellen, ein Geheimnis und ein Zertifikat hinzufügen und den Zugriff konfigurieren.

1. Erstellen eines Azure Key Vault

Lassen Sie uns mithilfe der Azure-Befehlszeilenschnittstelle einen Schlüsseltresor erstellen. Sie können auch das Azure-Portal nutzen.

  1. Öffnen Sie Ihr Terminal oder PowerShell und melden Sie sich bei Azure an: „Bash az-Login „
  2. Erstellen Sie eine Ressourcengruppe (falls Sie noch keine haben): „Bash az group create --name RG-KeyVault-Artigos --location eastus „

  3. Erstellen Sie den Azure Key Vault. Wählen Sie einen weltweit eindeutigen Namen für Ihren Key Vault. „Bash az keyvault create --name kv-artigos-seguranca-01 --resource-group RG-KeyVault-Artigos --location eastus --enabled-for-template-deployment true „

    • „--enabled-for-template-deployment true“: Ermöglicht die Verwendung von Key Vault für Vorlagenbereitstellungen, nützlich für die Automatisierung.

2. Hinzufügen eines Geheimnisses zum Schlüsseltresor

Fügen wir ein Datenbankkennwort als Geheimnis hinzuDie.

  1. Fügen Sie ein Geheimnis namens „DatabasePassword“ mit einem Beispielwert hinzu: „Bash az keyvault Secret Set --vault-name kv-artigos-seguranca-01 --name DatabasePassword --value "S3cur3P@ssw0rd!" „

  2. Rufen Sie das Geheimnis ab, um zu überprüfen, ob es korrekt gespeichert wurde: „Bash az keyvault secret show --vault-name kv-artigos-seguranca-01 --name DatabasePassword --query value -o tsv „

3. Hinzufügen eines Zertifikats zum Schlüsseltresor

Fügen wir zu Demonstrationszwecken ein selbstsigniertes Zertifikat hinzu. In der Produktion würden Sie Zertifikate einer vertrauenswürdigen Zertifizierungsstelle verwenden.

  1. Erstellen Sie ein selbstsigniertes Zertifikat in Key Vault: „Bash az Keyvault-Zertifikat erstellen --vault-name kv-artigos-seguranca-01 --name MyWebAppCert --policy "$(az Keyvault-Zertifikat get-default-policy)" „

  2. Überprüfen Sie die Zertifikatsdetails: „Bash az keyvault-Zertifikat show --vault-name kv-artigos-seguranca-01 --name MyWebAppCert „

4. Zugriffsrichtlinien konfigurieren

Um Anwendungen oder Benutzern den Zugriff auf Geheimnisse und Zertifikate zu ermöglichen, müssen Sie Zugriffsrichtlinien konfigurieren. Lassen Sie uns die rollenbasierte Zugriffskontrolle (RBAC) von Azure verwenden.

  1. Ermitteln Sie die „Objekt-ID“ der Anwendung oder des Benutzers, der Zugriff benötigt. Für eine Anwendung (Dienstprinzipal) können Sie diese erhalten, nachdem Sie sie bei Azure AD registriert haben. Verwenden Sie für einen Benutzer „az ad user show --id --query id -o tsv“.
  2. Weisen Sie Ihrem Key Vault eine Rolle zu. Um beispielsweise einer Anwendung das Lesen von Geheimnissen zu ermöglichen: „Bash # Beispiel: Weisen Sie einem Dienstprinzipal die Rolle „Key Vault Secrets-Benutzer“ zu az-Rollenzuweisung create --role „Key Vault Secrets-Benutzer“ --assignee-object-id --scope /subscriptions//resourceGroups/RG-KeyVault-Artigos/providers/Microsoft.KeyVault/vaults/kv-artigos-seguranca-01 „
    • Tipp: Für Zertifikate können Sie die Funktion „Key Vault-Zertifikatbenutzer“ verwenden.

5. Integration mit einem Azure App Service (Beispiel)

Lassen Sie uns demonstrieren, wie eine Anwendung ein Geheimnis aus Key Vault nutzen kann.

  1. Erstellen Sie einen Azure App Service (falls Sie noch keinen haben): „Bash az appservice plan create --name AppServicePlan-Artigos --resource-group RG-KeyVault-Artigos --sku B1 --is-linux az webapp create --resource-group RG-KeyVault-Artigos --plan AppServicePlan-Artigos --name webapp-artigos-seguranca-01 „
  2. Aktivieren Sie die verwaltete Identität für den App Service. Dadurch kann sich App Service ohne explizite Anmeldeinformationen bei Azure Key Vault authentifizieren. „Bash az webapp Identity Assign --resource-group RG-KeyVault-Artigos --name webapp-artigos-seguranca-01 „

  3. Erteilen Sie der verwalteten App Service-Identität die Berechtigung, auf das Geheimnis in Key Vault zuzugreifen. Verwenden Sie die im vorherigen Schritt erhaltene „PrincipalId“. „Bash az keyvault set-policy --name kv-artigos-seguranca-01 --object-id --secret-permissions get list „

    • Tipp: Um RBAC zu verwenden, weisen Sie der „PrincipalId“ der verwalteten Identität die Rolle „Key Vault Secrets-Benutzer“ zu.
  4. Konfigurieren Sie eine geheime Referenz im App Service. Dadurch kann die Anwendung auf das Geheimnis als Umgebungsvariable zugreifen. „Bash az webapp config appsettings set --resource-group RG-KeyVault-Artigos --name webapp-artigos-seguranca-01 --settings DatabasePassword="@Microsoft.KeyVault(SecretUri=https://kv-artigos-seguranca-01.vault.azure.net/secrets/DatabasePassword/)" „

  5. Jetzt kann Ihre Anwendung (z. B. ASP.NET Core, Node.js) das „DatabasePassword“-Geheimnis als normale Umgebungsvariable lesen und Azure App Service kümmert sich darum, es auf sichere Weise aus Key Vault abzurufen.

Validierung und Tests

Bei der Validierung der Geheimnis- und Zertifikatsverwaltung muss überprüft werden, ob der Zugriff nur autorisierten Entitäten gewährt wird und ob Geheimnisse korrekt abgerufen werden können.

1. Testen des Zugriffs auf Geheimnisse über Azure CLI

  1. Versuchen Sie, mit einem Konto ohne Berechtigungen auf das Geheimnis zuzugreifen: „Bash az login # Melden Sie sich mit einem Konto ohne Berechtigungen an az keyvault secret show --vault-name kv-artigos-seguranca-01 --name DatabasePassword --query value -o tsv „

    • Erwartetes Ergebnis: Der Befehl sollte mit dem Fehler „AuthorizationFailed“ fehlschlagen.
  2. Versuchen Sie, mit einem Konto, das über Berechtigungen verfügt, auf das Geheimnis zuzugreifen (z. B. das Konto, das Schlüssel V erstellt hat).ault oder die vom App Service verwaltete Identität, wenn Sie innerhalb der Anwendung testen). „Bash az login # Melden Sie sich mit einem Konto mit Berechtigungen an az keyvault secret show --vault-name kv-artigos-seguranca-01 --name DatabasePassword --query value -o tsv „

    • Erwartetes Ergebnis: Der Befehl muss den geheimen Wert zurückgeben.

2. Zertifikatszugriff testen

  1. Stellen Sie sicher, dass das Zertifikat von einer autorisierten Stelle aufgelistet und abgerufen werden kann. „Bash az keyvault-Zertifikatliste --vault-name kv-artigos-seguranca-01 az keyvault-Zertifikat show --vault-name kv-artigos-seguranca-01 --name MyWebAppCert „
    • Erwartetes Ergebnis: Befehle sollten Zertifikatsdetails zurückgeben.

3. Überprüfen der Key Vault-Überwachungsprotokolle

Alle Vorgänge in Key Vault werden protokolliert und können überwacht werden.

  1. Navigieren Sie im Azure-Portal zu Ihrem Key Vault („kv-articles-seguranca-01“).
  2. Wählen Sie im linken Navigationsbereich Aktivitätsprotokolle aus.
  3. Sie sehen ein Protokoll aller durchgeführten Vorgänge, einschließlich der Erstellung von Geheimnissen, Zertifikaten und Zugriffsversuchen.

Sicherheitstipps und Best Practices

  • Prinzip der geringsten Rechte: Gewähren Sie Geheimnissen und Zertifikaten nur die erforderlichen Berechtigungen (Abrufen, Auflisten, Festlegen, Löschen). Vermeiden Sie die Erteilung übermäßiger Berechtigungen.
  • Regelmäßige Rotation von Geheimnissen: Implementieren Sie einen Prozess zur regelmäßigen Rotation von Geheimnissen und Zertifikaten, um das Risiko einer Kompromittierung zu verringern.
  • Verwaltete Identitäten: Verwenden Sie nach Möglichkeit verwaltete Identitäten für Azure-Ressourcen (verwaltete Identitäten), um sich bei Key Vault zu authentifizieren, sodass Sie keine Anmeldeinformationen in Ihrem Code verwalten müssen.
  • Granulare Zugriffsrichtlinien: Verwenden Sie Key Vault- oder Azure RBAC-Zugriffsrichtlinien, um zu steuern, wer auf was zugreifen kann. Bevorzugen Sie RBAC für eine feinere Kontrolle.
  • Überwachung und Warnungen: Konfigurieren Sie Warnungen für verdächtige Aktivitäten in Key Vault, z. B. fehlgeschlagene Zugriffsversuche oder geheime Löschungen.
  • Schutz vor vorläufigem Löschen und Löschen: Aktivieren Sie den Schutz vor vorläufigem Löschen und Löschen in Key Vault, um einen versehentlichen oder böswilligen Verlust von Geheimnissen und Zertifikaten zu verhindern.
  • Regelmäßige Sicherung: Obwohl Key Vault hochverfügbar ist, sollten Sie die Sicherung Ihrer Geheimnisse und Zertifikate in Betracht ziehen, insbesondere für Notfallwiederherstellungsszenarien.
  • Ablaufende Geheimnisse: Legen Sie Ablaufdaten für Geheimnisse und Zertifikate fest, um eine Rotation zu erzwingen und die Verwendung alter Anmeldeinformationen zu vermeiden.

Allgemeine Fehlerbehebung

  • Autorisierungsfehler (403 verboten): Überprüfen Sie die Key Vault-Zugriffsrichtlinien oder RBAC-Rollenzuweisungen für die Entität, die versucht, darauf zuzugreifen. Stellen Sie sicher, dass die richtige „Objekt-ID“ oder „PrincipalId“ verwendet wird.
  • Geheimnis/Zertifikat nicht gefunden: Überprüfen Sie den Namen des Geheimnisses/Zertifikats und den Namen des Schlüsseltresors. Stellen Sie sicher, dass das Geheimnis/Zertifikat existiert und nicht gelöscht wurde oder abgelaufen ist.
  • Probleme mit verwalteten Identitäten: Stellen Sie sicher, dass die verwaltete Identität für die Azure-Ressource aktiviert wurde und dass die richtigen Berechtigungen in Key Vault gewährt wurden.
  • Latenz beim Abrufen von Geheimnissen: In einigen Fällen kann es beim Abrufen von Geheimnissen zu einer kleinen Latenz kommen. Stellen Sie sicher, dass Ihre Anwendung dies asynchron verarbeitet.
  • Verbindungsfehler: Überprüfen Sie die Netzwerkeinstellungen Ihrer Anwendung oder virtuellen Maschine. Stellen Sie sicher, dass keine Firewalls oder Netzwerksicherheitsgruppen den Zugriff auf Key Vault blockieren.

Fazit

Azure Key Vault ist ein wichtiger Dienst für jedes Unternehmen, das seine sensibelsten digitalen Assets in der Cloud schützen möchte. Durch die Zentralisierung der Verwaltung von Geheimnissen und Zertifikaten in einem sicheren, hochverfügbaren Repository wird die Compliance vereinfacht, das Risiko von Datenschutzverletzungen verringert und Ihre allgemeine Sicherheitslage verbessert. Durch die effektive Implementierung von Azure Key Vault in Kombination mit Best Practices für Sicherheit und Automatisierung können sich Entwickler und Betreiber auf Innovationen konzentrieren und wissen, dass ihre Anmeldeinformationen und Schlüssel geschützt sind. Mit diesem praktischen Leitfaden können Sicherheitsexperten Azure Key Vault verwenden, um Geheimnisse und Zertifikate sicher und effizient zu verwalten und so die Integrität und Vertraulichkeit ihrer Anwendungen und Daten in Azure sicherzustellen.


Referenzen:

[1]Microsoft Learn. Was ist Azure Key Vault?. Verfügbar unter: https://learn.microsoft.com/pt-br/azure/key-vault/general/overview [2] Microsoft Learn. Best Practices für die Verwaltung von Geheimnissen in Azure Key Vault. Verfügbar unter: https://learn.microsoft.com/pt-br/azure/key-vault/secrets/secrets-best-practices [3] Microsoft Learn. Informationen zu Azure Key Vault-Zertifikaten. Verfügbar unter: https://learn.microsoft.com/pt-br/azure/key-vault/certificates/about-certificates