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.

  1. 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    
    
  2. Följ de här anvisningarna för att ge din app åtkomst till ditt nyckelvalv:

  3. 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>"    
    
  4. Använd följande az webapp config appsettings set kommando för att skapa programinställningen WEBSITE_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ående az 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.

  1. 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.

  2. 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>"    
    
  3. 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ående az 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.

Nästa steg