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 door een beheerde identiteit te gebruiken, maar er zijn enkele scenario's waarin dit geen optie is. In dergelijke gevallen worden toegangssleutels of wachtwoorden gebruikt. U moet toegangssleutels en wachtwoorden regelmatig roteren.
Deze zelfstudie laat zien hoe u de periodieke rotatie van geheimen voor databases en services automatiseert die gebruikmaken van twee sets verificatiereferenties. Zie Inzicht in automatischerotatie in Azure Key Vault voor een uitgebreid overzicht van concepten en voordelen voor automatischerotatie in verschillende assettypen.
Deze zelfstudie laat zien hoe u sleutels van Azure Storage-accounts die als geheimen zijn opgeslagen in Azure Key Vault kunt roteren. U gebruikt een functie die wordt geactiveerd door een Azure Event Grid-melding.
Opmerking
Voor opslagaccountservices wordt het gebruik van Microsoft Entra-id voor het autoriseren van aanvragen aanbevolen. Zie Toegang tot blobs autoriseren met behulp van Microsoft Entra-id voor meer informatie. Er zijn services waarvoor verbindingsreeksen voor opslagaccounts met toegangssleutels zijn vereist. Voor dat scenario raden we deze oplossing aan.
Hier volgt de rotatieoplossing die in deze handleiding wordt beschreven:
In deze oplossing slaat Azure Key Vault afzonderlijke toegangssleutels voor het opslagaccount op als versies van hetzelfde geheim, afwisselend tussen de primaire en secundaire sleutel in volgende versies. Wanneer één toegangssleutel wordt opgeslagen in de nieuwste versie van het geheim, wordt de alternatieve sleutel opnieuw gegenereerd en toegevoegd aan Key Vault als de nieuwe nieuwste versie van het geheim. De oplossing biedt de volledige rotatiecyclus van de toepassing om te vernieuwen naar de nieuwste opnieuw gegenereerde sleutel.
- Dertig dagen vóór de vervaldatum van een geheim publiceert Key Vault de bijna verlopende gebeurtenis naar Event Grid.
- Event Grid controleert de gebeurtenisabonnementen en gebruikt HTTP POST om het eindpunt van de functie-app aan te roepen dat 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 nieuwe 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. Deze zelfstudie maakt gebruik van portal Cloud Shell met PowerShell env
- Azure Key Vault.
- Twee Azure-opslagaccounts.
Opmerking
Bij rotatie van de sleutel van het gedeelde opslagaccount wordt shared access signature (SAS) op accountniveau ingetrokken die op basis van die sleutel is gegenereerd. Nadat sleutelrotatie van het opslagaccount is uitgevoerd, moet u SAS-tokens op accountniveau opnieuw genereren om onderbrekingen van toepassingen te voorkomen.
U kunt deze implementatiekoppeling gebruiken als u geen bestaande sleutelkluis en bestaande opslagaccounts hebt:
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. U kunt deze installatie controleren in de Azure CLI of Azure PowerShell door deze opdracht uit te voeren:
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
Vervolgens maakt u een functie-app met een door het systeem beheerde identiteit, naast andere vereiste onderdelen. U implementeert ook de rotatiefunctie voor de sleutels van het opslagaccount.
Voor de functie-approtatiefunctie zijn de volgende onderdelen en configuratie vereist:
- Een Azure App Service-plan
- Een opslagaccount voor het beheren van triggers voor functie-apps
- Een toegangsbeleid voor toegang tot geheimen in Key Vault
- De rol Sleuteloperatorservice voor opslagaccounts die is toegewezen aan de functie-app, zodat deze toegang heeft tot toegangssleutels voor opslagaccounts
- Een sleutelrotatiefunctie met een gebeurtenistrigger en een HTTP-trigger (rotatie op aanvraag)
- Een Event Grid-gebeurtenisabonnement voor de gebeurtenis SecretNearExpiry
Selecteer de koppeling voor de implementatie van Azure-sjablonen:
Selecteer vaultrotation in de lijst Resourcegroepen.
Voer in het vak Opslagaccount RG de naam in van de resourcegroep waarin uw opslagaccount zich bevindt. Behoud de standaardwaarde [resourceGroup().name] als uw opslagaccount zich al in dezelfde resourcegroep bevindt waar u de sleutelrotatiefunctie implementeert.
Voer in het vak Naam van het opslagaccount de naam in van het opslagaccount dat de toegangssleutels bevat die u wilt draaien. Behoud de standaardwaarde [concat(resourceGroup().name, 'storage')] als u het opslagaccount gebruikt dat is gemaakt in Vereisten.
Voer in het vak Key Vault RG de naam in van de resourcegroep waarin uw sleutelkluis zich bevindt. Behoud de standaardwaarde [resourceGroup().name] als uw sleutelkluis al bestaat in dezelfde resourcegroep waar u de sleutelrotatiefunctie implementeert.
Voer in het vak Key Vault-naam de naam van de sleutelkluis in. Behoud de standaardwaarde [concat(resourceGroup().name, '-kv')] als u de sleutelkluis gebruikt die in Vereisten is gemaakt.
Selecteer in het vak Type App Service-plan het hostingabonnement. Premium-abonnement is alleen nodig wanneer uw sleutelkluis zich achter de firewall bevindt.
Voer in het vak Naam van de functie-app de naam van de functie-app in.
Voer in het vak Geheime naam de naam in van het geheim waar u toegangssleutels opslaat.
Voer in het vak URL van de opslagplaats de GitHub-locatie van de functiecode in. In deze zelfstudie kunt u https://github.com/Azure-Samples/KeyVault-Rotation-StorageAccountKey-PowerShell.git gebruiken.
Kies Beoordelen + creëren.
Klik op Creëren.
Nadat u de voorgaande stappen hebt voltooid, hebt u een opslagaccount, een serverfarm, een functie-app en Application Insights. Wanneer de implementatie is voltooid, ziet u deze pagina:
Opmerking
Als er een fout optreedt, kunt u Opnieuw implementeren selecteren om de implementatie van de onderdelen te voltooien.
U vindt implementatiesjablonen en code voor de rotatiefunctie in Azure-voorbeelden.
De toegangssleutels voor het opslagaccount toevoegen aan Key Vault-geheimen
Stel eerst uw toegangsbeleid in om beheer van geheimen machtigingen te verlenen aan uw gebruikersaccount.
az keyvault set-policy --upn <email-address-of-user> --name vaultrotation-kv --secret-permissions set delete get list
U kunt nu een nieuw geheim maken met een toegangssleutel voor een opslagaccount als waarde. U hebt ook de resource-id van het opslagaccount, de geldigheidsperiode van het geheim en de sleutel-id nodig om toe te voegen aan het geheim, zodat de rotatiefunctie de sleutel in het opslagaccount opnieuw kan genereren.
Bepaal de resource-id van het opslagaccount. U vindt deze waarde in 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 een geheim toe aan de sleutelkluis met een geldigheidsperiode van 60 dagen, de resource-ID van het opslagaccount, en stel voor demonstratiedoeleinden de rotatie direct in door de vervaldatum op morgen te zetten. Voer deze opdracht uit met behulp van 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 <key1Value> --tags "CredentialId=key1" "ProviderAddress=<storageAccountResourceId>" "ValidityPeriodDays=60" --expires $tomorrowDate
Het geheim activeert binnen enkele minuten een SecretNearExpiry gebeurtenis. Met deze gebeurtenis wordt de functie op zijn beurt geactiveerd om het geheim te roteren met verlooptijd ingesteld op 60 dagen. In deze configuratie wordt de gebeurtenis SecretNearExpiry elke 30 dagen (30 dagen vóór verloop) geactiveerd en de rotatiefunctie wisselt tussen key1 en key2.
U kunt controleren of toegangssleutels opnieuw zijn gegenereerd door de sleutel van het opslagaccount en het Key Vault-geheim op te halen en deze 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
Merk op dat value hetzelfde is als het geheim in de sleutelkluis.
Bestaande rotatiefunctie gebruiken voor meerdere opslagaccounts
U kunt dezelfde functie-app opnieuw gebruiken om sleutels voor meerdere opslagaccounts te roteren.
Als u opslagaccountsleutels wilt toevoegen aan een bestaande functie voor rotatie, hebt u het volgende nodig:
- De opslagaccount-sleuteloperatorrol 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 de implementatie van Azure-sjablonen:
Selecteer vaultrotation in de lijst Resourcegroepen.
Voer in het vak Opslagaccount RG de naam in van de resourcegroep waarin uw opslagaccount zich bevindt. Behoud de standaardwaarde [resourceGroup().name] als uw opslagaccount zich al in dezelfde resourcegroep bevindt waar u de sleutelrotatiefunctie implementeert.
Voer in het vak Naam van het opslagaccount de naam in van het opslagaccount dat de toegangssleutels bevat die u wilt draaien.
Voer in het vak Key Vault RG de naam in van de resourcegroep waarin uw sleutelkluis zich bevindt. Behoud de standaardwaarde [resourceGroup().name] als uw sleutelkluis al bestaat in dezelfde resourcegroep waar u de sleutelrotatiefunctie implementeert.
Voer in het vak Key Vault-naam de naam van de sleutelkluis in.
Voer in het vak Naam van de functie-app de naam van de functie-app in.
Voer in het vak Geheime naam de naam in van het geheim waar u toegangssleutels opslaat.
Kies Beoordelen + creëren.
Klik op Creëren.
Toegangssleutel voor opslagaccounts toevoegen aan Key Vault-geheimen
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 een geheim toe aan de sleutelkluis met een geldigheidsperiode van 60 dagen, de resource-ID van het opslagaccount, en stel voor demonstratiedoeleinden de rotatie direct in door de vervaldatum op morgen te zetten. Voer deze opdracht uit met behulp van 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 <key2Value> --tags "CredentialId=key2" "ProviderAddress=<storageAccountResourceId>" "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 vaultrotationstorage
Merk op dat value hetzelfde is als het geheim in de sleutelkluis.
Rotatie uitschakelen voor geheim
U kunt de rotatie van een geheim uitschakelen door het Event Grid-abonnement voor dat geheim te verwijderen. Gebruik de Azure PowerShell Remove-AzEventGridSubscription cmdlet of Azure CLI az event grid event--subscription delete opdracht.
Sleutelkluisrotatiefuncties voor twee sets referenties
Sjabloon voor rotatiefuncties voor twee sets inloggegevens en verschillende kant-en-klare functies:
Opmerking
Deze rotatiefuncties worden gemaakt door een lid van de community en niet door Microsoft. Communityfuncties worden niet ondersteund onder een Microsoft-ondersteuningsprogramma of -service en worden beschikbaar gesteld ALS IS zonder enige garantie.