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 eine verwaltete Identität, aber in einigen Szenarien sind weiterhin Zugriffstasten oder Kennwörter erforderlich. Ändern Sie diese Zugangsdaten regelmäßig, um die Auswirkungen eines Datenlecks zu verringern.
Dieses Tutorial zeigt, wie Sie die regelmäßige Rotation von Geheimnissen für Datenbanken und Dienste automatisieren, die zwei Gruppen von Authentifizierungsdaten verwenden. Eine Übersicht über die Autorotation über verschiedene Objekttypen hinweg finden Sie unter Grundlegendes zur Autorotation in Azure Key Vault.
Insbesondere werden in diesem Lernprogramm Azure Storage-Kontoschlüssel rotiert, die als Geheimnisse in Azure Key Vault gespeichert sind. Sie verwendet eine Funktion, die von einer Azure Event Grid Benachrichtigung ausgelöst wird.
Wichtig
Für Azure Storage bevorzugen Sie Microsoft Entra ID Autorisierung mit einer verwalteten Identität gegenüber gemeinsam genutzten Kontoschlüsseln. Soweit Compliance-Anforderungen dies zulassen, deaktivieren Sie die Shared Key-Autorisierung für das Speicherkonto und machen eine Schlüsselrotation vollständig überflüssig. Verwenden Sie das Muster in diesem Lernprogramm nur, wenn ein Workload einen Speicherkontoschlüssel oder eine Verbindungszeichenfolge erfordert.
Hier ist die Rotationslösung dargestellt, die in diesem Tutorial beschrieben wird:
In dieser Lösung speichert Azure Key Vault jeden Speicherkontozugriffsschlüssel als Version desselben geheimen Schlüssels und wechselt zwischen primärem und sekundärem Schlüssel in aufeinander folgenden Versionen. Wenn ein Zugriffsschlüssel als neueste Version des geheimen Schlüssels gespeichert ist, wird der alternative Schlüssel neu generiert und als neue Version zu Key Vault hinzugefügt. Mit diesem Design erhält die Anwendung einen vollständigen Drehungszyklus, um den neu regenerierten Schlüssel aufzunehmen.
- 30 Tage vor dem Ablaufdatum eines Geheimnisses veröffentlicht Key Vault das Ereignis „Läuft demnächst ab“ in Event Grid.
- Event Grid überprüft die Ereignisabonnements und ruft mit HTTP POST den Funktions-App-Endpunkt auf, der dieses 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 neu generierten Schlüssel als neue Version des Geheimnisses in Azure Key Vault hinzu.
Voraussetzungen
- Ein Azure-Abonnement. Erstellen Sie ein kostenloses Abonnement.
- Azure Cloud Shell. In diesem Tutorial wird die Cloud Shell im Portal mit der PowerShell-Umgebung verwendet.
- Ein Azure-Schlüsseltresor.
- Zwei Azure Speicherkonten.
Hinweis
Das Rotieren eines gemeinsam verwendeten Speicherkontoschlüssels hebt alle Shared Access Signatures (SAS) auf Kontoebene auf, die mit diesem Schlüssel erstellt wurden. Nach der Rotation erneuern Sie SAS-Token auf Kontoebene, um Unterbrechungen bei Anwendungen zu vermeiden.
Wenn Sie nicht über einen vorhandenen Schlüsseltresor und zwei Speicherkonten verfügen, verwenden Sie diesen Bereitstellungslink:
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 Key Vault und zwei Speicherkonten. Überprüfen Sie dieses Setup im Azure CLI oder Azure PowerShell:
az resource list -o table -g vaultrotation
Das Ergebnis sieht der folgenden Ausgabe ähnlich:
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
Erstellen Sie als Nächstes eine Funktions-App mit einer vom System zugewiesenen verwalteten Identität zusammen mit den anderen erforderlichen Komponenten, und stellen Sie die Drehungsfunktion für die Speicherkontoschlüssel bereit.
Für die Drehungsfunktion sind die folgenden Komponenten und Konfigurationen erforderlich:
- Ein Azure App Service Plan.
- Ein Speicherkonto zum Verwalten von Funktions-App-Triggern.
- Eine Azure-Rollenzuweisung, mit der die Funktions-App auf Geheimnisse im Key Vault zugreifen kann.
- Die der Funktions-App zugewiesene Dienstrolle „Storage Account Key Operator Service Role“, damit sie auf die Zugriffsschlüssel des Speicherkontos zugreifen kann.
- Eine Funktion für die Schlüsselrotation mit einem Event Grid-Trigger und einem HTTP-Trigger (für die Rotation bei Bedarf).
- Ein Event Grid-Ereignisabonnement für das SecretNearExpiry-Ereignis .
Wählen Sie den Link zur Bereitstellung der Vorlage in Azure aus:
Wählen Sie in der Ressourcengruppenliste"Vaultrotation" aus.
Geben Sie in " Speicherkonto-RG" den Namen der Ressourcengruppe ein, in der sich das Speicherkonto befindet. Behalten Sie den Standardwert
[resourceGroup().name]bei, wenn sich das Speicherkonto in derselben Ressourcengruppe wie die Drehungsfunktion befindet.Geben Sie unter " Speicherkontoname" den Namen des Speicherkontos ein, dessen Zugriffstasten Sie drehen möchten. Behalten Sie die Standardeinstellung
[concat(resourceGroup().name, 'storage')]bei, wenn Sie das Speicherkonto unter "Voraussetzungen" verwenden.Geben Sie in Key Vault RG den Namen der Ressourcengruppe ein, in der sich die key vault befindet. Behalten Sie den Standardwert
[resourceGroup().name]bei, wenn sich der Schlüsseltresor in derselben Ressourcengruppe wie die Rotationsfunktion befindet.Geben Sie in Key Vault Name den Key-Vault-Namen ein. Behalten Sie den Standardwert
[concat(resourceGroup().name, '-kv')]bei, wenn Sie den Schlüsseltresor unter Voraussetzungen verwenden.Wählen Sie im App Service-Plantyp den Hostingplan aus. Premium-Plan ist nur erforderlich, wenn sich der Schlüsseltresor hinter einer Firewall befindet.
Geben Sie im Funktions-App-Namen den Namen der Funktions-App ein.
Geben Sie unter "Geheimer Name" den geheimen Namen ein, der die Zugriffstasten speichert.
Geben Sie in der Repository-URL den GitHub Speicherort des Funktionscodes ein:
https://github.com/Azure-Samples/KeyVault-Rotation-StorageAccountKey-PowerShell.git.Klicken Sie auf Überprüfen + erstellen.
Klicken Sie auf Erstellen.
Nach Abschluss der Bereitstellung verfügen Sie über ein Speicherkonto, eine Serverfarm, eine Funktions-App und eine Application Insights-Ressource:
Hinweis
Diese ARM-Vorlage verwendet die App Service-Quellcodeverwaltungsbereitstellung (Kudu), um den Funktionscode aus GitHub abzurufen. Für Produktionsworkloads empfehlen wir stattdessen eine paketbasierte Bereitstellung wie func azure functionapp publish oder ZIP-Bereitstellung mit WEBSITE_RUN_FROM_PACKAGE. Wenn die Bereitstellung fehlschlägt, wählen Sie "Erneut bereitstellen " aus, um den Vorgang erneut auszuführen.
Bereitstellungsvorlagen und Code für die Drehungsfunktion befinden sich in Azure-Samples/KeyVault-Rotation-StorageAccountKey-PowerShell.
Hinzufügen der Zugriffsschlüssel des Speicherkontos zu Key Vault-Geheimnissen
Weisen Sie sich zunächst die Rolle "Key Vault Secrets Officer" zu, damit Sie geheime Schlüssel im Tresor verwalten können:
az role assignment create --role "Key Vault Secrets Officer" --assignee <email-address-of-user> --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/vaults/vaultrotation-kv
Sie können jetzt einen geheimen Schlüssel erstellen, dessen Wert ein Speicherkontozugriffsschlüssel ist. Fügen Sie zusätzlich zum Wert die Speicherkonto-Ressourcen-ID, die Gültigkeitsdauer des Geheimnisses und die Schlüssel-ID als Tags hinzu, damit die Rotationsfunktion den Schlüssel im Speicherkonto neu generieren kann.
Ermitteln Sie die Ressourcen-ID des Speicherkontos. Dies ist die 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 (zur Demonstration) einem Ablaufdatum für morgen hinzu, um die Rotation sofort auszulösen. Führen Sie diesen Befehl mit den abgerufenen Werten für key1Value und storageAccountResourceId:
tomorrowDate=$(date -u -d "+1 day" +"%Y-%m-%dT%H:%M:%SZ")
az keyvault secret set --name storageKey --vault-name vaultrotation-kv --value <key1-value> --tags "CredentialId=key1" "ProviderAddress=<storage-account-resource-id>" "ValidityPeriodDays=60" --expires $tomorrowDate
Dieses Secret löst innerhalb weniger Minuten ein SecretNearExpiry-Ereignis aus, das wiederum die Funktion auslöst, das Secret mit einem Ablaufdatum in 60 Tagen zu rotieren. In dieser Konfiguration wird das SecretNearExpiry-Ereignis alle 30 Tage (30 Tage vor Ablauf) ausgelöst, und die Rotationsfunktion wechselt ab zwischen key1 und key2.
Stellen Sie sicher, dass die Zugriffsschlüssel neu generiert wurden, indem Sie den Speicherkontoschlüssel und das Key Vault-Geheimnis abrufen und anschließend 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 der Schlüsselwert dem geheimen Schlüssel im Schlüsseltresor entspricht:
Verwenden einer vorhandenen Drehungsfunktion für mehrere Speicherkonten
Sie können dieselbe Funktions-App wiederverwenden, um Schlüssel für mehrere Speicherkonten zu drehen.
Um die Schlüssel eines anderen Speicherkontos zu einer vorhandenen Drehungsfunktion hinzuzufügen, benötigen Sie Folgendes:
- Die der Function App zugewiesene Dienstrolle „Storage Account Key Operator“, damit sie auf die Zugriffsschlüssel des Speicherkontos zugreifen kann.
- Ein Event Grid-Ereignisabonnement für das SecretNearExpiry-Ereignis .
Wählen Sie den Link zur Bereitstellung der Vorlage in Azure aus:
Wählen Sie in der Ressourcengruppenliste"Vaultrotation" aus.
Geben Sie in " Speicherkonto-RG" den Namen der Ressourcengruppe ein, in der sich das Speicherkonto befindet. Behalten Sie den Standardwert
[resourceGroup().name]bei, wenn sich das Speicherkonto in derselben Ressourcengruppe wie die Drehungsfunktion befindet.Geben Sie unter " Speicherkontoname" den Namen des Speicherkontos ein, dessen Zugriffstasten Sie drehen möchten.
Geben Sie in Key Vault RG den Namen der Ressourcengruppe ein, in der sich die key vault befindet. Behalten Sie den Standardwert
[resourceGroup().name]bei, wenn sich der Schlüsseltresor in derselben Ressourcengruppe wie die Rotationsfunktion befindet.Geben Sie in Key Vault Name den Key-Vault-Namen ein.
Geben Sie im Funktions-App-Namen den Namen der Funktions-App ein.
Geben Sie unter "Geheimer Name" den geheimen Namen ein, der die Zugriffstasten speichert.
Klicken Sie auf Überprüfen + erstellen.
Klicken Sie auf Erstellen.
Speicherkonto-Zugriffsschlüssel zu Key Vault Geheimnissen hinzufügen.
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 (zur Demonstration) einem Ablaufdatum für morgen hinzu, um die Rotation sofort auszulösen. Führen Sie diesen Befehl mit den abgerufenen Werten für key2Value und storageAccountResourceId:
tomorrowDate=$(date -u -d "+1 day" +"%Y-%m-%dT%H:%M:%SZ")
az keyvault secret set --name storageKey2 --vault-name vaultrotation-kv --value <key2-value> --tags "CredentialId=key2" "ProviderAddress=<storage-account-resource-id>" "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 vaultrotationstorage2
Beachten Sie, dass der Schlüsselwert dem geheimen Schlüssel im Schlüsseltresor entspricht:
Rotation für ein Geheimnis deaktivieren
Um die Rotation für ein Geheimnis zu deaktivieren, löschen Sie das Event Grid-Abonnement für dieses Geheimnis. Verwenden Sie das Azure PowerShell-Cmdlet Remove-AzEventGridSubscription oder den Azure CLI-Befehl az eventgrid event-subscription delete.
Verwenden von KI zum Anpassen der Drehfunktion für andere Dienste
In diesem Lernprogramm wird die Geheimrotation für Azure-Storage-Konten veranschaulicht, aber Sie können die Rotationsfunktion auch für andere Azure-Dienste anpassen, die duale Anmeldeinformationen verwenden. GitHub Copilot können Sie beim Ändern des PowerShell-Rotationsfunktionscodes unterstützen, um mit Ihrem Dienst zu arbeiten.
I'm using the Azure Key Vault dual-credential secret rotation tutorial for Storage accounts. Help me modify the PowerShell rotation function to work with Azure Cosmos DB instead. The function should:
1. Connect to Cosmos DB and regenerate the secondary key
2. Store the new key in Key Vault as a new secret version
3. Alternate between primary and secondary keys on each rotation
Show me the changes needed to the PowerShell function code, including the correct Cosmos DB PowerShell cmdlets.
GitHub Copilot wird von KI unterstützt, sodass Überraschungen und Fehler möglich sind. Weitere Informationen finden Sie unter Copilot FAQs.
Nächste Schritte
- Rotation geheimer Schlüssel für einen Satz Anmeldeinformationen
- Das Verständnis der automatischen Rotation im Azure Key Vault
- Monitoring Key Vault mit Azure Event Grid
- Erstellen Sie Ihre erste Funktion im Azure-Portal
- E-Mail erhalten, wenn sich ein Geheimnis in Key Vault ändert
- Azure Event Grid-Ereignisschema für Azure Key Vault