Kryptera dina programdata i vila med hjälp av kundhanterade nycklar
Kryptering av funktionsappens programdata i vila kräver ett Azure Storage-konto och en Azure-Key Vault. Dessa tjänster används när du kör din app från ett distributionspaket.
- Azure Storage tillhandahåller kryptering i vila. Du kan använda systemspecifika nycklar eller egna kundhanterade nycklar. Här lagras dina programdata när de inte körs i en funktionsapp i Azure.
- Att köra från ett distributionspaket är en distributionsfunktion i App Service. Det gör att du kan distribuera webbplatsinnehållet från ett Azure Storage-konto med hjälp av en SAS-URL (Signatur för delad åtkomst).
- Key Vault referenser är en säkerhetsfunktion i App Service. Det gör att du kan importera hemligheter vid körning som programinställningar. Använd detta för att kryptera SAS-URL:en för ditt Azure Storage-konto.
Konfigurera kryptering i vila
Skapa ett Azure Storage-konto
Skapa först ett Azure Storage-konto och kryptera det med kundhanterade nycklar. När lagringskontot har skapats använder du Azure Storage Explorer för att ladda upp paketfiler.
Använd sedan Storage Explorer för att generera en SAS.
Anteckning
Spara den här SAS-URL:en. Detta används senare för att aktivera säker åtkomst till distributionspaketet vid körning.
Konfigurera körning från ett paket från ditt lagringskonto
När du har överfört filen till Blob Storage och har en SAS-URL för filen ställer du in programinställningen WEBSITE_RUN_FROM_PACKAGE
på SAS-URL:en. I följande exempel används Azure CLI:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_RUN_FROM_PACKAGE="<your-SAS-URL>"
Om du lägger till den här programinställningen startas funktionsappen om. När appen har startats om bläddrar du till den och kontrollerar att appen har startats korrekt med hjälp av distributionspaketet. Om programmet inte startade korrekt kan du läsa felsökningsguiden Kör från paket.
Kryptera programinställningen med hjälp av Key Vault referenser
Nu kan du ersätta värdet för programinställningen WEBSITE_RUN_FROM_PACKAGE
med en Key Vault referens till DEN SAS-kodade URL:en. Detta håller SAS-URL:en krypterad i Key Vault, vilket ger ett extra säkerhetslager.
Använd följande
az keyvault create
kommando för att skapa en Key Vault-instans.az keyvault create --name "Contoso-Vault" --resource-group <group-name> --location eastus
Följ de här anvisningarna för att ge din app åtkomst till ditt nyckelvalv:
Använd följande
az keyvault secret set
kommando för att lägga till din externa URL som en hemlighet i nyckelvalvet:az keyvault secret set --vault-name "Contoso-Vault" --name "external-url" --value "<SAS-URL>"
Använd följande
az webapp config appsettings set
kommando för att skapa programinställningenWEBSITE_RUN_FROM_PACKAGE
med värdet som en Key Vault referens till den externa URL:en:az webapp config appsettings set --settings WEBSITE_RUN_FROM_PACKAGE="@Microsoft.KeyVault(SecretUri=https://Contoso-Vault.vault.azure.net/secrets/external-url/<secret-version>"
<secret-version>
Kommer att finnas i utdata från föregåendeaz keyvault secret set
kommando.
Om du uppdaterar den här programinställningen startas funktionsappen om. När appen har startats om bläddrar du till den och kontrollerar att den har startats korrekt med hjälp av referensen för Key Vault.
Rotera åtkomsttoken
Det är bästa praxis att regelbundet rotera SAS-nyckeln för ditt lagringskonto. För att säkerställa att funktionsappen inte oavsiktligt förlorar åtkomst måste du även uppdatera SAS-URL:en i Key Vault.
Rotera SAS-nyckeln genom att gå till ditt lagringskonto i Azure Portal. Under Inställningar>Åtkomstnycklar väljer du ikonen för att rotera SAS-nyckeln.
Kopiera den nya SAS-URL:en och använd följande kommando för att ange den uppdaterade SAS-URL:en i nyckelvalvet:
az keyvault secret set --vault-name "Contoso-Vault" --name "external-url" --value "<SAS-URL>"
Uppdatera referensen för nyckelvalvet i programinställningen till den nya hemliga versionen:
az webapp config appsettings set --settings WEBSITE_RUN_FROM_PACKAGE="@Microsoft.KeyVault(SecretUri=https://Contoso-Vault.vault.azure.net/secrets/external-url/<secret-version>"
<secret-version>
Kommer att finnas i utdata från föregåendeaz keyvault secret set
kommando.
Återkalla funktionsappens dataåtkomst
Det finns två metoder för att återkalla funktionsappens åtkomst till lagringskontot.
Rotera SAS-nyckeln för Azure Storage-kontot
Om SAS-nyckeln för lagringskontot roteras har funktionsappen inte längre åtkomst till lagringskontot, men den fortsätter att köras med den senast nedladdade versionen av paketfilen. Starta om funktionsappen för att rensa den senast nedladdade versionen.
Ta bort funktionsappens åtkomst till Key Vault
Du kan återkalla funktionsappens åtkomst till platsdata genom att inaktivera funktionsappens åtkomst till Key Vault. Det gör du genom att ta bort åtkomstprincipen för funktionsappens identitet. Det här är samma identitet som du skapade tidigare när du konfigurerade key vault-referenser.
Sammanfattning
Programfilerna krypteras nu i vila i ditt lagringskonto. När din funktionsapp startar hämtar den SAS-URL:en från nyckelvalvet. Slutligen läser funktionsappen in programfilerna från lagringskontot.
Om du behöver återkalla funktionsappens åtkomst till ditt lagringskonto kan du antingen återkalla åtkomsten till nyckelvalvet eller rotera lagringskontonycklarna, som båda ogiltigförklarar SAS-URL:en.
Vanliga frågor och svar
Tillkommer någon extra avgift för att köra min funktionsapp från distributionspaketet?
Endast kostnaden som är kopplad till Azure Storage-kontot och eventuella tillämpliga utgående avgifter.
Hur påverkar körningen från distributionspaketet min funktionsapp?
- Om du kör appen från distributionspaketet blir
wwwroot/
den skrivskyddad. Appen får ett fel när den försöker skriva till den här katalogen. - TAR- och GZIP-format stöds inte.
- Den här funktionen är inte kompatibel med lokal cache.