Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det bästa sättet att autentisera till Azure-tjänster är att använda en hanterad identitet, men det finns vissa scenarier där det inte är ett alternativ. I dessa fall används åtkomstnycklar eller lösenord. Du bör rotera åtkomstnycklar och lösenord ofta.
Den här självstudien visar hur du automatiserar den periodiska rotationen av hemligheter för databaser och tjänster som använder två uppsättningar autentiseringsuppgifter. En omfattande översikt över autorotationsbegrepp och fördelar för olika tillgångstyper finns i Förstå autorotation i Azure Key Vault.
Den här självstudien visar specifikt hur du roterar Azure Storage-kontonycklar som lagras som hemlig information i Azure Key Vault. Du använder en funktion som utlöses av Azure Event Grid-meddelande.
Anmärkning
För Lagringskontotjänster rekommenderar vi att du använder Microsoft Entra-ID för att auktorisera begäranden. Mer information finns i Auktorisera åtkomst till blobar med hjälp av Microsoft Entra-ID. Det finns tjänster som kräver anslutningssträngar för lagringskontot med åtkomstnycklar. I det scenariot rekommenderar vi den här lösningen.
Här är rotationslösningen som beskrivs i denna handledning:
I den här lösningen lagrar Azure Key Vault enskilda åtkomstnycklar för lagringskonton som versioner av samma hemlighet och växlar mellan den primära och sekundära nyckeln i efterföljande versioner. När en åtkomstnyckel lagras i den senaste versionen av hemligheten återskapas den alternativa nyckeln och läggs till i Key Vault som den nya senaste versionen av hemligheten. Lösningen tillhandahåller programmets hela rotationscykel för att uppdatera till den senaste återskapade nyckeln.
- Trettio dagar före förfallodatumet för en hemlighet publicerar Key Vault den händelse som snart upphör att gälla till Event Grid.
- Event Grid kontrollerar händelseprenumerationerna och använder HTTP POST för att anropa funktionsappens slutpunkt som prenumererar på händelsen.
- Funktionsappen identifierar den alternativa nyckeln (inte den senaste) och anropar lagringskontot för att återskapa den.
- Funktionsappen lägger till den nya återskapade nyckeln i Azure Key Vault som den nya versionen av hemligheten.
Förutsättningar
- Ett Azure-abonnemang. Skapa en kostnadsfritt.
- Azure Cloud Shell. Den här självstudien använder Cloud Shell-portalen med PowerShell-miljön.
- Azure Key Vault.
- Två Azure Storage-konton.
Anmärkning
Rotation av delad lagringskontonyckel återkallar signatur för delad åtkomst (SAS) på kontonivå som genererats baserat på den nyckeln. Efter nyckelrotationen för lagringskontot måste du återskapa SAS-token på kontonivå för att undvika avbrott i program.
Du kan använda den här distributionslänken om du inte har ett befintligt nyckelvalv och befintliga lagringskonton:
Välj Skapa ny under Resursgrupp. Ge gruppvalvet namnet rotation och välj sedan OK.
Välj Förhandsgranska + skapa.
Välj Skapa.
Nu har du ett nyckelvalv och två lagringskonton. Du kan verifiera den här konfigurationen i Azure CLI eller Azure PowerShell genom att köra det här kommandot:
az resource list -o table -g vaultrotation
Resultatet ser ut ungefär så här:
Name ResourceGroup Location Type Status
----------------------- -------------------- ---------- --------------------------------- --------
vaultrotation-kv vaultrotation westus Microsoft.KeyVault/vaults
vaultrotationstorage vaultrotation westus Microsoft.Storage/storageAccounts
vaultrotationstorage2 vaultrotation westus Microsoft.Storage/storageAccounts
Skapa och distribuera nyckelroteringsfunktionen
Därefter skapar du en funktionsapp med en systemhanterad identitet, utöver andra nödvändiga komponenter. Du implementerar också rotationsfunktionen för lagringskontots nycklar.
Funktionsappens rotationsfunktion kräver följande komponenter och konfiguration:
- Ett Azure App Service-plan
- Ett lagringskonto för att hantera app-utlösare för funktioner
- En åtkomstprincip för åtkomst till hemligheter i Key Vault
- Rollen Nyckeloperatortjänst för lagringskonto som tilldelats funktionsappen så att den kan komma åt åtkomstnycklar för lagringskonto
- En nyckelrotationsfunktion med en händelseutlösare och en HTTP-utlösare (rotation på begäran)
- En Event Grid-händelseprenumeration för SecretNearExpiry-händelsen
Välj distributionslänken för Azure-mallen:
I listan Resursgrupp väljer du valvrotation.
I rutan Lagringskonto-RG anger du namnet på resursgruppen där ditt lagringskonto finns. Behåll standardvärdet [resourceGroup().name] om ditt lagringskonto redan finns i samma resursgrupp där du distribuerar nyckelroteringsfunktionen.
I rutan Lagringskontonamn anger du namnet på det lagringskonto som innehåller de åtkomstnycklar som ska roteras. Behåll standardvärdet [concat(resourceGroup().name, 'storage')] om du använder lagringskontot som skapats i Krav.
I rutan Key Vault RG anger du namnet på resursgruppen där nyckelvalvet finns. Behåll standardvärdet [resourceGroup().name] om nyckelvalvet redan finns i samma resursgrupp där du distribuerar nyckelroteringsfunktionen.
I rutan Key Vault-namn anger du namnet på nyckelvalvet. Behåll standardvärdet [concat(resourceGroup().name, '-kv')] om du använder nyckelvalv som skapats i Krav.
I rutan Typ av App Service-plan väljer du värdplan. Premium-plan behövs bara när ditt nyckelvalv ligger bakom brandväggen.
I rutan Funktionsappnamn anger du namnet på funktionsappen.
I rutan Hemligt namn anger du namnet på hemligheten där du ska lagra åtkomstnycklar.
I rutan Repo-URL anger du GitHub-platsen för funktionskoden. I den här handledningen kan du använda https://github.com/Azure-Samples/KeyVault-Rotation-StorageAccountKey-PowerShell.git .
Välj Förhandsgranska + skapa.
Välj Skapa.
När du har slutfört föregående steg har du ett lagringskonto, en servergrupp, en funktionsapp och Application Insights. När distributionen är klar visas den här sidan:
Anmärkning
Om det uppstår ett fel kan du välja Omdistribuera för att slutföra distributionen av komponenterna.
Du hittar distributionsmallar och kod för rotationsfunktionen i Azure Samples.
Lägga till lagringskontots åtkomstnycklar till Key Vault-hemligheter
Ange först åtkomstprincipen för att bevilja behörigheter för hantering av hemligheter till användarens huvudnamn:
az keyvault set-policy --upn <email-address-of-user> --name vaultrotation-kv --secret-permissions set delete get list
Nu kan du skapa en ny hemlighet med åtkomstnyckeln för lagringskontot som värde. Du behöver också resurs-ID för lagringskontot, hemlig giltighetsperiod och nyckel-ID för att lägga till i hemligheten så att rotationsfunktionen kan återskapa nyckeln i lagringskontot.
Fastställa lagringskontots resurs-ID. Du hittar det här värdet i egenskapen id .
az storage account show -n vaultrotationstorage
Ange åtkomstnycklarna för lagringskontot så att du kan hämta nyckelvärdena:
az storage account keys list -n vaultrotationstorage
Lägg till en hemlighet i nyckelvalvet med giltighetsperiod på 60 dagar, resurs-ID för lagringskontot, och för demonstrationssyfte samt för att omedelbart utlösa rotationen, ange förfallodatum till i morgon. Kör det här kommandot med dina hämtade värden för key1Value och 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
Den här hemligheten utlöser SecretNearExpiry händelsen inom flera minuter. Den här händelsen utlöser i sin tur funktionen för att rotera hemligheten med förfallotiden inställd på 60 dagar. I den konfigurationen utlöses händelsen "SecretNearExpiry" var 30:e dag (30 dagar före förfallodatum) och rotationsfunktionen växlar rotation mellan key1 och key2.
Du kan kontrollera att åtkomstnycklarna har återskapats genom att hämta lagringskontonyckeln och Key Vault-hemligheten och jämföra dem.
Använd det här kommandot för att hämta den hemliga informationen:
az keyvault secret show --vault-name vaultrotation-kv --name storageKey
Observera att CredentialId har uppdaterats till det alternativa keyName och som value återskapas:
Hämta åtkomstnycklarna för att jämföra värdena:
az storage account keys list -n vaultrotationstorage
Observera att value nyckeln är densamma som hemligheten i nyckelvalvet:
Använda befintlig rotationsfunktion för flera lagringskonton
Du kan återanvända samma funktionsapp för att rotera nycklar för flera lagringskonton.
Om du vill lägga till lagringskontonycklar till en befintlig funktion för rotation behöver du:
- Rollen Lagringskontots nyckeloperatörtjänst tilldelad till funktionsappen så att den kan komma åt lagringskontots åtkomstnycklar.
- En Event Grid-händelseprenumeration för SecretNearExpiry-händelsen .
Välj distributionslänken för Azure-mallen:
I listan Resursgrupp väljer du valvrotation.
I rutan Lagringskonto-RG anger du namnet på resursgruppen där ditt lagringskonto finns. Behåll standardvärdet [resourceGroup().name] om ditt lagringskonto redan finns i samma resursgrupp där du distribuerar nyckelroteringsfunktionen.
I rutan Lagringskontonamn anger du namnet på det lagringskonto som innehåller de åtkomstnycklar som ska roteras.
I rutan Key Vault RG anger du namnet på resursgruppen där nyckelvalvet finns. Behåll standardvärdet [resourceGroup().name] om nyckelvalvet redan finns i samma resursgrupp där du distribuerar nyckelroteringsfunktionen.
I rutan Key Vault-namn anger du namnet på nyckelvalvet.
I rutan Funktionsappnamn anger du namnet på funktionsappen.
I rutan Hemligt namn anger du namnet på hemligheten där du ska lagra åtkomstnycklar.
Välj Förhandsgranska + skapa.
Välj Skapa.
Lägga till åtkomstnyckel för lagringskonto till Key Vault-hemligheter
Fastställa lagringskontots resurs-ID. Du hittar det här värdet i egenskapen id .
az storage account show -n vaultrotationstorage2
Visa en lista över åtkomstnycklarna för lagringskontot så att du kan hämta key2-värdet:
az storage account keys list -n vaultrotationstorage2
Lägg till en hemlighet i nyckelvalvet med giltighetsperiod på 60 dagar, resurs-ID för lagringskontot, och för demonstrationssyfte samt för att omedelbart utlösa rotationen, ange förfallodatum till i morgon. Kör det här kommandot med dina hämtade värden för key2Value och 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
Använd det här kommandot för att hämta den hemliga informationen:
az keyvault secret show --vault-name vaultrotation-kv --name storageKey2
Observera att CredentialId har uppdaterats till det alternativa keyName och som value återskapas:
Hämta åtkomstnycklarna för att jämföra värdena:
az storage account keys list -n vaultrotationstorage
Observera att value nyckeln är densamma som hemligheten i nyckelvalvet:
Inaktivera rotation för hemlighet
Du kan inaktivera rotation av en hemlighet genom att helt enkelt ta bort Event Grid-prenumerationen för den hemligheten. Använd cmdleten Azure PowerShell Remove-AzEventGridSubscription eller Azure CLI az event grid event –-subscription delete command.
Key Vault-rotationsfunktioner för två uppsättningar autentiseringsuppgifter
Mall för rotationsfunktioner med två uppsättningar autentiseringsuppgifter och flera färdiga funktioner att använda.
Anmärkning
Dessa rotationsfunktioner skapas av en medlem i communityn och inte av Microsoft. Community-funktioner stöds inte under Microsofts supportprogram eller -tjänster och görs tillgängliga i befintligt skick utan någon som helst garanti.