Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De beste manier om te verifiëren bij Azure services is met een beheerde identiteit, maar sommige scenario's vereisen nog steeds toegangssleutels of wachtwoorden. Wijzig die inloggegevens regelmatig om de impact van een datalek te beperken.
Deze zelfstudie laat zien hoe u periodieke geheimrotatie automatiseert voor databases en services die gebruikmaken van twee sets verificatiereferenties. Zie Autorotatie in Azure Key Vault begrijpen voor een overzicht van autorotatie voor verschillende typen assets.
Meer specifiek roteert deze zelfstudie Azure Storage-accountsleutels die als geheimen zijn opgeslagen in Azure Key Vault. Er wordt een functie gebruikt die wordt geactiveerd door een Azure Event Grid melding.
Important
Voor Azure Storage geeft u de voorkeur aan Microsoft Entra ID autorisatie met een beheerde identiteit via gedeelde accountsleutels. Wanneer naleving is toegestaan, schakelt u autorisatie van gedeelde sleutels in het opslagaccount uit en verwijdert u de noodzaak voor sleutelrotatie volledig. Gebruik het patroon in deze zelfstudie alleen wanneer voor een workload een opslagaccountsleutel of een verbindingsreeks is vereist.
Hier volgt de rotatieoplossing die in deze handleiding wordt beschreven:
In deze oplossing slaat Azure Key Vault elke toegangssleutel van het opslagaccount op als een versie van hetzelfde geheim, afwisselend tussen de primaire en secundaire sleutel in opeenvolgende versies. Wanneer één toegangssleutel wordt opgeslagen als de nieuwste versie van het geheim, wordt de alternatieve sleutel opnieuw gegenereerd en toegevoegd aan Key Vault als de nieuwe nieuwste versie. Dit ontwerp geeft de toepassing een volledige rotatiecyclus om de zojuist opnieuw gegenereerde sleutel op te halen.
- Dertig dagen vóór de vervaldatum van een geheim publiceert Key Vault de bijna-verlopen-gebeurtenis in Event Grid.
- Event Grid controleert de gebeurtenisabonnementen en maakt gebruik van HTTP POST om het eindpunt voor de functie-app aan te roepen die is geabonneerd op de gebeurtenis.
- De functie-app identificeert de alternatieve sleutel (niet de meest recente) en roept het opslagaccount aan om het opnieuw te genereren.
- De functie-app voegt de opnieuw gegenereerde sleutel toe aan Azure Key Vault als de nieuwe versie van het geheim.
Vereiste voorwaarden
- Een Azure-abonnement. Maak gratis een account.
- Azure Cloud Shell. In deze zelfstudie wordt gebruikgemaakt van portal Cloud Shell met de PowerShell-omgeving.
- Een Azure-sleutelkluis.
- Twee Azure opslagaccounts.
Opmerking
Als u een sleutel voor een gedeeld opslagaccount roteert, wordt elke SAS (Shared Access Signature) die op accountniveau is gegenereerd op basis van die sleutel, ingetrokken. Na rotatie genereert u SAS-tokens op accountniveau opnieuw om onderbreking van toepassingen te voorkomen.
Als u geen bestaande sleutelkluis en twee opslagaccounts hebt, gebruikt u deze implementatiekoppeling:
Selecteer voor Resourcegroep de optie Nieuwe maken. Geef de groepskluis een naam en selecteer VERVOLGENS OK.
Kies Beoordelen + creëren.
Klik op Creëren.
U hebt nu een sleutelkluis en twee opslagaccounts. Controleer deze instelling in de Azure CLI of Azure PowerShell:
az resource list -o table -g vaultrotation
Het resultaat ziet er ongeveer als volgt uit:
Name ResourceGroup Location Type Status
----------------------- -------------------- ---------- --------------------------------- --------
vaultrotation-kv vaultrotation westus Microsoft.KeyVault/vaults
vaultrotationstorage vaultrotation westus Microsoft.Storage/storageAccounts
vaultrotationstorage2 vaultrotation westus Microsoft.Storage/storageAccounts
De sleutelrotatiefunctie maken en implementeren
Maak vervolgens een functie-app met een door het systeem toegewezen beheerde identiteit samen met de andere vereiste onderdelen en implementeer de rotatiefunctie voor de sleutels van het opslagaccount.
Voor de rotatiefunctie zijn de volgende onderdelen en configuratie vereist:
- Een Azure App Service plan.
- Een opslagaccount voor het beheren van triggers voor functie-apps.
- Een Azure roltoewijzing waarmee de functie-app toegang heeft tot geheimen in de sleutelkluis.
- De servicerol Sleuteloperator voor opslagaccounts die is toegewezen aan de functie-app, zodat deze toegang heeft tot toegangssleutels voor opslagaccounts.
- Een sleutelrotatiefunctie met een Event Grid-trigger en een HTTP-trigger (voor rotatie op aanvraag).
- Een event-abonnement in Event Grid voor de gebeurtenis SecretNearExpiry.
Selecteer de koppeling voor Azure-sjabloonimplementatie:
Selecteer vaultrotation in de lijst Resourcegroepen.
Voer in opslagaccount RG de naam in van de resourcegroep waarin het opslagaccount zich bevindt. Behoud de standaardwaarde
[resourceGroup().name]als het opslagaccount zich in dezelfde resourcegroep bevindt als de rotatiefunctie.Voer in Naam van opslagaccount de naam in van het opslagaccount waarvan u de toegangssleutels wilt roteren. Behoud de standaardwaarde
[concat(resourceGroup().name, 'storage')]als u het opslagaccount uit Prerequisites gebruikt.Voer in Key Vault RG de naam in van de resourcegroep waarin de key vault zich bevindt. Behoud de standaardwaarde
[resourceGroup().name]als de sleutelkluis zich in dezelfde resourcegroep bevindt als de rotatiefunctie.Voer in Key Vault Naam de naam van de key vault in. Behoud de standaard
[concat(resourceGroup().name, '-kv')]als u de sleutelkluis uit Vereisten gebruikt.Selecteer in Het type App Service-plan het hostingabonnement. Premium-abonnement is alleen vereist wanneer de sleutelkluis zich achter een firewall bevindt.
Voer in De naam van de functie-app de naam van de functie-app in.
Voer in Geheime naam de geheime naam in waarin de toegangssleutels worden opgeslagen.
Voer in de OPSLAGPLAATS-URL de GitHub locatie van de functiecode in:
https://github.com/Azure-Samples/KeyVault-Rotation-StorageAccountKey-PowerShell.git.Kies Beoordelen + creëren.
Klik op Creëren.
Nadat de implementatie is voltooid, hebt u een opslagaccount, een serverfarm, een functie-app en een Application Insights-resource:
Opmerking
Deze ARM-sjabloon maakt gebruik van Kudu-implementatie (Broncodebeheer) van App Service om de functiecode op te halen uit GitHub. Voor een productieworkload raden we een implementatie op basis van pakketten aan, zoals func azure functionapp publish of zip-implementatie met WEBSITE_RUN_FROM_PACKAGE in plaats daarvan. Als de implementatie mislukt, selecteert u Opnieuw implementeren om het opnieuw te proberen.
Implementatiesjablonen en code voor de rotatiefunctie bevinden zich in Azure-Samples/KeyVault-Rotation-StorageAccountKey-PowerShell.
De toegangssleutels voor het opslagaccount toevoegen aan Key Vault-secrets
Wijs uzelf eerst de rol Key Vault Secrets Officer toe, zodat u geheimen in de kluis kunt beheren:
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
U kunt nu een geheim maken waarvan de waarde een toegangssleutel voor een opslagaccount is. Voeg samen met de waarde de resource-id van het opslagaccount, de geldigheidsperiode van het geheim en de sleutel-id toe als tags, zodat de rotatiefunctie de sleutel in het opslagaccount opnieuw kan genereren.
Bepaal de resource-id van het opslagaccount. Dit is de id eigenschap:
az storage account show -n vaultrotationstorage
Geef de toegangssleutels voor het opslagaccount weer zodat u de sleutelwaarden kunt ophalen:
az storage account keys list -n vaultrotationstorage
Voeg het geheim toe aan de sleutelkluis met een geldigheidsduur van 60 dagen en, ter demonstratie, als vervaldatum morgen om de rotatie onmiddellijk te starten. Voer deze opdracht uit met de opgehaalde waarden voor key1Value en 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
Dit geheim activeert een SecretNearExpiry gebeurtenis binnen enkele minuten, waardoor de functie op zijn beurt wordt geactiveerd om het geheim te roteren met een verloopperiode van 60 dagen. In die configuratie wordt de SecretNearExpiry gebeurtenis elke 30 dagen (30 dagen vóór de vervaldatum) geactiveerd en schakelt de rotatiefunctie tussen key1 en key2.
Controleer of toegangssleutels opnieuw zijn gegenereerd door de sleutel van het opslagaccount en het Key Vault geheim op te halen en deze vervolgens te vergelijken.
Gebruik deze opdracht om de geheime informatie op te halen:
az keyvault secret show --vault-name vaultrotation-kv --name storageKey
Merk op dat CredentialId is bijgewerkt naar de alternatieve keyName en dat value is geregenereerd.
Haal de toegangssleutels op om de waarden te vergelijken:
az storage account keys list -n vaultrotationstorage
U ziet dat de sleutelwaarde overeenkomt met het geheim in de sleutelkluis:
Een bestaande rotatiefunctie gebruiken voor meerdere opslagaccounts
U kunt dezelfde functie-app opnieuw gebruiken om sleutels voor meer dan één opslagaccount te roteren.
Als u de sleutels van een ander opslagaccount wilt toevoegen aan een bestaande rotatiefunctie, hebt u het volgende nodig:
- De servicerol Sleuteloperator voor opslagaccounts die is toegewezen aan de functie-app, zodat deze toegang heeft tot toegangssleutels voor opslagaccounts.
- Een event-abonnement in Event Grid voor de gebeurtenis SecretNearExpiry.
Selecteer de koppeling voor Azure-sjabloonimplementatie:
Selecteer vaultrotation in de lijst Resourcegroepen.
Voer in opslagaccount RG de naam in van de resourcegroep waarin het opslagaccount zich bevindt. Behoud de standaardwaarde
[resourceGroup().name]als het opslagaccount zich in dezelfde resourcegroep bevindt als de rotatiefunctie.Voer in Naam van opslagaccount de naam in van het opslagaccount waarvan u de toegangssleutels wilt roteren.
Voer in Key Vault RG de naam in van de resourcegroep waarin de key vault zich bevindt. Behoud de standaardwaarde
[resourceGroup().name]als de sleutelkluis zich in dezelfde resourcegroep bevindt als de rotatiefunctie.Voer in Key Vault Naam de naam van de key vault in.
Voer in De naam van de functie-app de naam van de functie-app in.
Voer in Geheime naam de geheime naam in waarin de toegangssleutels worden opgeslagen.
Kies Beoordelen + creëren.
Klik op Creëren.
Toegangssleutel voor opslagaccounts toevoegen aan geheimen in Key Vault
Bepaal de resource-id van het opslagaccount. U vindt deze waarde in de id eigenschap.
az storage account show -n vaultrotationstorage2
Geef de toegangssleutels voor het opslagaccount weer zodat u de sleutel2-waarde kunt ophalen:
az storage account keys list -n vaultrotationstorage2
Voeg het geheim toe aan de sleutelkluis met een geldigheidsperiode van 60 dagen en (ter demonstratie) als vervaldatum morgen om de rotatie onmiddellijk te starten. Voer deze opdracht uit met de opgehaalde waarden voor key2Value en 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
Gebruik deze opdracht om de geheime informatie op te halen:
az keyvault secret show --vault-name vaultrotation-kv --name storageKey2
Merk op dat CredentialId is bijgewerkt naar de alternatieve keyName en dat value is geregenereerd.
Haal de toegangssleutels op om de waarden te vergelijken:
az storage account keys list -n vaultrotationstorage2
U ziet dat de sleutelwaarde overeenkomt met het geheim in de sleutelkluis:
Rotatie voor een geheim uitschakelen
Als u rotatie voor een geheim wilt uitschakelen, verwijdert u het Event Grid-abonnement voor dat geheim. Gebruik de cmdlet Azure PowerShell Remove-AzEventGridSubscription of de opdracht Azure CLI az eventgrid event-subscription delete.
AI gebruiken om de rotatiefunctie voor andere services aan te passen
In deze handleiding demonstreren we sleutelrotatie voor Azure Storage-accounts, maar u kunt de rotatiefunctie aanpassen voor andere Azure-services die gebruikmaken van dubbele referenties. GitHub Copilot kan u helpen de code van de PowerShell-rotatiefunctie te wijzigen zodat deze met uw service werkt.
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 wordt aangedreven door AI, dus verrassingen en fouten zijn mogelijk. Zie Copilot veelgestelde vragen voor meer informatie.