Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die beste Methode zum Authentifizieren bei Azure-Diensten ist die Verwendung einer verwalteten Identität, aber es gibt einige Szenarien, in denen dies keine Option ist. In diesen Fällen werden Zugriffstasten oder Kennwörter verwendet. Sie sollten Zugriffstasten und Kennwörter häufig drehen.
In diesem Lernprogramm wird gezeigt, wie Sie die regelmäßige Rotation von Geheimnissen für Datenbanken und Dienste automatisieren, die zwei Sätze von Authentifizierungsanmeldeinformationen verwenden. Eine umfassende Übersicht über Autorotation-Konzepte und -Vorteile in verschiedenen Objekttypen finden Sie unter Grundlegendes zur Autorotation in Azure Key Vault.
Dieses Tutorial zeigt, wie Sie Azure Storage-Kontoschlüssel rotieren, die in Azure Key Vault als Geheimnisse gespeichert sind. Sie verwenden eine Funktion, die von der Azure Event Grid-Benachrichtigung ausgelöst wird.
Hinweis
Für Speicherkontodienste wird die Verwendung der Microsoft Entra-ID zum Autorisieren von Anforderungen empfohlen. Weitere Informationen finden Sie unter Autorisieren des Zugriffs auf Blobs mit Microsoft Entra ID. Es gibt Dienste, die Verbindungszeichenfolgen für Speicherkonten mit Zugriffsschlüsseln erfordern. Für dieses Szenario empfehlen wir diese Lösung.
Hier ist die Rotationslösung dargestellt, die in diesem Tutorial beschrieben wird:
In dieser Lösung speichert Azure Key Vault die einzelnen Zugriffsschlüssel des Speicherkontos als Versionen desselben Geheimnisses und wechselt zwischen primärem und sekundärem Schlüssel in nachfolgenden Versionen. Wenn ein Zugriffsschlüssel in der neuesten Version des geheimen Schlüssels gespeichert wird, wird der alternative Schlüssel neu generiert und als neue version des geheimen Schlüssels dem Key Vault hinzugefügt. Die Lösung stellt den gesamten Rotationszyklus der Anwendung bereit, um auf den neuesten neu generierten Schlüssel zu aktualisieren.
- Dreißig Tage vor dem Ablaufdatum eines Geheimnisses veröffentlicht Key Vault das Beinahe-Ablauf-Ereignis im Event Grid.
- Das Ereignisraster überprüft die Ereignisabonnements und verwendet HTTP POST, um den Funktions-App-Endpunkt aufzurufen, der das Ereignis abonniert hat.
- Die Funktions-App identifiziert den alternativen Schlüssel (nicht das neueste Schlüssel) und ruft das Speicherkonto auf, um ihn neu zu generieren.
- Die Funktions-App fügt den neuen neu generierten Schlüssel als neue Version des geheimen Schlüssels zu Azure Key Vault hinzu.
Voraussetzungen
- Ein Azure-Abonnement. Erstellen Sie ein kostenloses Abonnement.
- Azure Cloud Shell. Dieses Tutorial verwendet die Cloud Shell im Azure-Portal mit der PowerShell-Umgebung
- Azure Key Vault.
- Zwei Azure-Speicherkonten.
Hinweis
Die Rotation des Schlüssels des freigegebenen Speicherkontos widerruft die Shared Access Signature (SAS) auf Kontoebene, die basierend auf diesem Schlüssel generiert wurde. Nach der Erneuerung des Speicherkontoschlüssels müssen Sie SAS-Token auf Kontoebene neu generieren, um Unterbrechungen bei Anwendungen zu vermeiden.
Sie können den folgenden Bereitstellungslink verwenden, falls Sie nicht über einen vorhandenen Schlüsseltresor und vorhandene Speicherkonten verfügen:
Wählen Sie unter Ressourcengruppe die Option Neu erstellen aus. Benennen Sie die Gruppe Vault Rotation und wählen Sie dann „OK“ aus.
Klicken Sie auf Überprüfen + erstellen.
Klicken Sie auf Erstellen.
Sie verfügen jetzt über einen Schlüsseltresor und zwei Speicherkonten. Sie können dieses Setup in der Azure CLI oder Azure PowerShell überprüfen, indem Sie den folgenden Befehl ausführen:
az resource list -o table -g vaultrotation
Das Ergebnis sieht in etwa wie diese Ausgabe aus:
Name ResourceGroup Location Type Status
----------------------- -------------------- ---------- --------------------------------- --------
vaultrotation-kv vaultrotation westus Microsoft.KeyVault/vaults
vaultrotationstorage vaultrotation westus Microsoft.Storage/storageAccounts
vaultrotationstorage2 vaultrotation westus Microsoft.Storage/storageAccounts
Erstellen und Bereitstellen der Funktion für die Schlüsselrotation
Als Nächstes erstellen Sie eine Funktions-App mit einer vom System verwalteten Identität zusätzlich zu anderen erforderlichen Komponenten. Außerdem stellen Sie die Drehungsfunktion für die Speicherkontoschlüssel bereit.
Für die Rotationsfunktion der Funktions-App werden die folgenden Komponenten und Konfigurationseinstellungen benötigt:
- Ein Azure App Service-Plan
- Ein Speicherkonto zum Verwalten von Funktions-App-Triggern
- Eine Zugriffsrichtlinie für den Zugriff auf geheime Schlüssel im Key Vault
- Eine Zuweisung der Dienstrolle „Speicherkonto-Schlüsseloperator“ zur Funktions-App, um den Zugriff auf die Zugriffsschlüssel des Speicherkontos zu ermöglichen
- Eine Funktion für die Schlüsselrotation mit einem Ereignisauslöser und einem HTTP-Trigger (bedarfsgesteuerte Rotation)
- Ein Event Grid-Ereignisabonnement für das SecretNearExpiry-Ereignis
Wählen Sie den Azure-Vorlagenbereitstellungslink aus:
Wählen Sie in der Ressourcengruppenliste"Vaultrotation" aus.
Geben Sie im Feld " Speicherkonto RG " den Namen der Ressourcengruppe ein, in der sich Ihr Speicherkonto befindet. Behalten Sie den Standardwert [resourceGroup().name] bei, wenn sich Ihr Speicherkonto bereits in derselben Ressourcengruppe befindet, in der Sie die Schlüsseldrehungsfunktion bereitstellen.
Geben Sie im Feld " Speicherkontoname " den Namen des Speicherkontos ein, das die zu drehenden Zugriffstasten enthält. Behalten Sie den Standardwert [concat(resourceGroup().name, 'storage')] bei, wenn Sie das in den Voraussetzungen erstellte Speicherkonto verwenden.
Geben Sie im Feld Schlüsseltresor-RG den Namen der Ressourcengruppe ein, in der sich Ihr Schlüsseltresor befindet. Behalten Sie den Standardwert [resourceGroup().name] bei, wenn Ihr Schlüsseltresor bereits in derselben Ressourcengruppe vorhanden ist, in der Sie die Schlüsseldrehungsfunktion bereitstellen.
Geben Sie im Feld Schlüsseltresorname den Namen des Schlüsseltresors ein. Behalten Sie den Standardwert [concat(resourceGroup().name, '-kv')], wenn Sie den in „Voraussetzungen“ erstellten Schlüsseltresor verwenden.
Wählen Sie im Feld "App-Dienstplantyp " den Hostingplan aus. Premium-Plan wird nur benötigt, wenn Ihr Schlüsseltresor hinter der Firewall liegt.
Geben Sie im Feld "Funktions-App-Name " den Namen der Funktions-App ein.
Geben Sie im Feld "Geheimer Name " den Namen des geheimen Schlüssels ein, in dem Sie Zugriffstasten speichern.
Geben Sie im Feld " Repository-URL " den GitHub-Speicherort des Funktionscodes ein. In dieser Anleitung können Sie https://github.com/Azure-Samples/KeyVault-Rotation-StorageAccountKey-PowerShell.git verwenden.
Klicken Sie auf Überprüfen + erstellen.
Klicken Sie auf Erstellen.
Nachdem Sie die vorstehenden Schritte abgeschlossen haben, verfügen Sie über ein Speicherkonto, eine Serverfarm, eine Funktions-App und Application Insights. Nach Abschluss der Bereitstellung wird diese Seite angezeigt:
Hinweis
Wenn ein Fehler auftritt, können Sie die Erneute Bereitstellung auswählen, um die Bereitstellung der Komponenten abzuschließen.
Sie finden Bereitstellungsvorlagen und Code für die Drehungsfunktion in Azure Samples.
Hinzufügen der Speicherkonto-Zugriffsschlüssel zu Key Vault-Geheimnissen
Legen Sie zuerst Ihre Zugriffsrichtlinie so fest, dass für Ihren Benutzerprinzipal Berechtigungen zum Verwalten von Geheimnissen gewährt werden:
az keyvault set-policy --upn <email-address-of-user> --name vaultrotation-kv --secret-permissions set delete get list
Sie können jetzt einen neuen geheimen Schlüssel mit einem Speicherkontozugriffsschlüssel als Wert erstellen. Außerdem benötigen Sie die Ressourcen-ID des Speicherkontos, die Gültigkeitsdauer des Geheimnisses und die Schlüssel-ID, um diese dem Geheimnis hinzuzufügen, damit die Rotationsfunktion den Schlüssel im Speicherkonto neu generieren kann.
Ermitteln Sie die Ressourcen-ID des Speicherkontos. Sie finden diesen Wert in der id
Eigenschaft.
az storage account show -n vaultrotationstorage
Listen Sie die Zugriffsschlüssel des Speicherkontos auf, um die Schlüsselwerte zu erhalten.
az storage account keys list -n vaultrotationstorage
Fügen Sie dem Schlüsseltresor ein Geheimnis mit einer Gültigkeitsdauer von 60 Tagen und der Ressourcen-ID des Speicherkontos hinzu. Setzen Sie das Ablaufdatum zu Demonstrationszwecken auf morgen, um eine sofortige Rotation auszulösen. Führen Sie diesen Befehl aus, indem Sie die abgerufenen Werte für key1Value
und storageAccountResourceId
verwenden.
tomorrowDate=$(date -u -d "+1 day" +"%Y-%m-%dT%H:%M:%SZ")
az keyvault secret set --name storageKey --vault-name vaultrotation-kv --value <key1Value> --tags "CredentialId=key1" "ProviderAddress=<storageAccountResourceId>" "ValidityPeriodDays=60" --expires $tomorrowDate
Dieses Geheimnis löst das Ereignis SecretNearExpiry
innerhalb weniger Minuten aus. Dieses Ereignis löst wiederum die Funktion aus, um den geheimen Schlüssel mit dem Ablaufdatum zu rotieren, das auf 60 Tage festgelegt ist. In dieser Konfiguration würde das Ereignis „SecretNearExpiry“ alle 30 Tage (30 Tage vor Ablauf) ausgelöst, und die Rotationsfunktion würde zwischen key1 und key2 abwechseln.
Sie können überprüfen, ob Zugriffsschlüssel neu generiert wurden, indem Sie den Speicherkontoschlüssel und das Geheimnis des Schlüsseltresors abrufen und diese vergleichen.
Verwenden Sie diesen Befehl, um die geheimen Informationen abzurufen:
az keyvault secret show --vault-name vaultrotation-kv --name storageKey
Beachten Sie, dass CredentialId
auf die alternative keyName
aktualisiert wird und dass value
neu generiert wird.
Rufen Sie die Zugriffstasten ab, um die Werte zu vergleichen:
az storage account keys list -n vaultrotationstorage
Beachten Sie, dass value
des Schlüssels mit dem Geheimnis im Schlüsseltresor übereinstimmt:
Verwenden einer vorhandenen Drehungsfunktion für mehrere Speicherkonten
Sie können dieselbe Funktions-App wiederverwenden, um Schlüssel für mehrere Speicherkonten zu drehen.
Zum Hinzufügen von Speicherkontoschlüsseln zu einer vorhandenen Funktion zur Drehung benötigen Sie Folgendes:
- Eine Zuweisung der Dienstrolle „Speicherkonto-Schlüsseloperator“ zur Funktions-App, um den Zugriff auf die Zugriffsschlüssel des Speicherkontos zu ermöglichen.
- Ein Event Grid-Ereignisabonnement für das SecretNearExpiry-Ereignis .
Wählen Sie den Azure-Vorlagenbereitstellungslink aus:
Wählen Sie in der Ressourcengruppenliste"Vaultrotation" aus.
Geben Sie im Feld " Speicherkonto RG " den Namen der Ressourcengruppe ein, in der sich Ihr Speicherkonto befindet. Behalten Sie den Standardwert [resourceGroup().name] bei, wenn sich Ihr Speicherkonto bereits in derselben Ressourcengruppe befindet, in der Sie die Schlüsseldrehungsfunktion bereitstellen.
Geben Sie im Feld " Speicherkontoname " den Namen des Speicherkontos ein, das die zu drehenden Zugriffstasten enthält.
Geben Sie im Feld Schlüsseltresor-RG den Namen der Ressourcengruppe ein, in der sich Ihr Schlüsseltresor befindet. Behalten Sie den Standardwert [resourceGroup().name] bei, wenn Ihr Schlüsseltresor bereits in derselben Ressourcengruppe vorhanden ist, in der Sie die Schlüsseldrehungsfunktion bereitstellen.
Geben Sie im Feld Schlüsseltresorname den Namen des Schlüsseltresors ein.
Geben Sie im Feld "Funktions-App-Name " den Namen der Funktions-App ein.
Geben Sie im Feld "Geheimer Name " den Namen des geheimen Schlüssels ein, in dem Sie Zugriffstasten speichern.
Klicken Sie auf Überprüfen + erstellen.
Klicken Sie auf Erstellen.
Hinzufügen eines Speicherkonto-Zugriffsschlüssels zu Key Vault-Geheimnissen
Ermitteln Sie die Ressourcen-ID des Speicherkontos. Sie finden diesen Wert in der id
Eigenschaft.
az storage account show -n vaultrotationstorage2
Listen Sie die Zugriffsschlüssel des Speicherkontos auf, damit Sie den Wert von Schlüssel2 abrufen können.
az storage account keys list -n vaultrotationstorage2
Fügen Sie dem Schlüsseltresor ein Geheimnis mit einer Gültigkeitsdauer von 60 Tagen und der Ressourcen-ID des Speicherkontos hinzu. Setzen Sie das Ablaufdatum zu Demonstrationszwecken auf morgen, um eine sofortige Rotation auszulösen. Führen Sie diesen Befehl aus, indem Sie die abgerufenen Werte für key2Value
und storageAccountResourceId
verwenden.
tomorrowDate=$(date -u -d "+1 day" +"%Y-%m-%dT%H:%M:%SZ")
az keyvault secret set --name storageKey2 --vault-name vaultrotation-kv --value <key2Value> --tags "CredentialId=key2" "ProviderAddress=<storageAccountResourceId>" "ValidityPeriodDays=60" --expires $tomorrowDate
Verwenden Sie diesen Befehl, um die geheimen Informationen abzurufen:
az keyvault secret show --vault-name vaultrotation-kv --name storageKey2
Beachten Sie, dass CredentialId
auf die alternative keyName
aktualisiert wird und dass value
neu generiert wird.
Rufen Sie die Zugriffstasten ab, um die Werte zu vergleichen:
az storage account keys list -n vaultrotationstorage
Beachten Sie, dass value
des Schlüssels mit dem Geheimnis im Schlüsseltresor übereinstimmt:
Deaktivieren der Rotation für Geheimnisse
Sie können die Rotation eines Geheimnisses deaktivieren, indem Sie einfach das Event Grid-Abonnement für dieses Geheimnis löschen. Verwenden Sie das Azure PowerShell Remove-AzEventGridSubscription-Cmdlet oder den Azure CLI az event grid event-subscription delete command.
Key Vault-Rotationsfunktionen für zwei Sätze von Anmeldeinformationen
Vorlage für Rotationsfunktionen für zwei Sätze von Anmeldeinformationen und einige sofort einsatzbereite Funktionen:
Hinweis
Diese Drehungsfunktionen werden von einem Mitglied der Community und nicht von Microsoft erstellt. Community-Funktionen werden von keinem Microsoft-Supportprogramm oder -dienst unterstützt und ohne jegliche Garantie in der vorliegenden Form zur Verfügung gestellt.
Nächste Schritte
- Rotation geheimer Schlüssel für einen Satz Anmeldeinformationen
- Grundlegendes zur Autorotation in Azure Key Vault
- Überwachen von Key Vault mit Azure Event Grid
- Erstellen Ihrer ersten Funktion im Azure-Portal
- Verwenden von Logic Apps zum Empfangen einer E-Mail bei Statusänderungen von Key Vault-Geheimnissen
- Azure Event Grid-Ereignisschema für Azure Key Vault