Använda kundhanterade nycklar för att kryptera dina appkonfigurationsdata

Azure App Configuration krypterar känslig information i vila. Användningen av kundhanterade nycklar ger förbättrat dataskydd genom att du kan hantera dina krypteringsnycklar. När kryptering av hanterad nyckel används krypteras all känslig information i App Configuration med en Azure Key Vault-nyckel som tillhandahålls av användaren. Detta ger möjlighet att rotera krypteringsnyckeln på begäran. Det ger också möjlighet att återkalla Åtkomsten till känslig information i Azure App Configuration genom att återkalla appkonfigurationsinstansens åtkomst till nyckeln.

Översikt

Azure App Configuration krypterar känslig information i vila med hjälp av en 256-bitars AES-krypteringsnyckel som tillhandahålls av Microsoft. Varje appkonfigurationsinstans har en egen krypteringsnyckel som hanteras av tjänsten och används för att kryptera känslig information. Känslig information innehåller de värden som finns i nyckel/värde-par. När funktionen för kundhanterad nyckel är aktiverad använder App Configuration en hanterad identitet som tilldelats appkonfigurationsinstansen för att autentisera med Microsoft Entra-ID. Den hanterade identiteten anropar sedan Azure Key Vault och omsluter appkonfigurationsinstansens krypteringsnyckel. Den omslutna krypteringsnyckeln lagras sedan och den oöppnade krypteringsnyckeln cachelagras i App Configuration i en timme. Varje timme uppdaterar appkonfigurationen den oöppnade versionen av App Configuration-instansens krypteringsnyckel. Den här processen säkerställer tillgänglighet under normala driftsförhållanden.

Viktigt!

Om den identitet som tilldelats appkonfigurationsinstansen inte längre har behörighet att packa upp instansens krypteringsnyckel, eller om den hanterade nyckeln tas bort permanent, går det inte längre att dekryptera känslig information som lagras i appkonfigurationsinstansen. Genom att använda Funktionen mjuk borttagning i Azure Key Vault minskar du risken för att du oavsiktligt tar bort krypteringsnyckeln.

När användarna aktiverar funktionen för kundhanterad nyckel i sin Azure App Configuration-instans kontrollerar de tjänstens möjlighet att komma åt känslig information. Den hanterade nyckeln fungerar som en rotkrypteringsnyckel. Användare kan återkalla appkonfigurationsinstansens åtkomst till sin hanterade nyckel genom att ändra åtkomstprincipen för nyckelvalvet. När den här åtkomsten återkallas förlorar App Configuration möjligheten att dekryptera användardata inom en timme. Nu förbjuder appkonfigurationsinstansen alla åtkomstförsök. Den här situationen kan återställas genom att tjänsten får åtkomst till den hanterade nyckeln igen. Inom en timme kommer App Configuration att kunna dekryptera användardata och fungera under normala förhållanden.

Kommentar

Alla Azure App Configuration-data lagras i upp till 24 timmar i en isolerad säkerhetskopia. Detta inkluderar den oöppnade krypteringsnyckeln. Dessa data är inte omedelbart tillgängliga för tjänsten eller tjänstteamet. I händelse av en nödåterställning återkallar Azure App Configuration sig själv igen från hanterade nyckeldata.

Krav

Följande komponenter krävs för att aktivera den kundhanterade nyckelfunktionen för Azure App Configuration:

  • En Azure App Configuration-instans på Standard- eller Premium-nivå.
  • Ett Azure Key Vault med funktioner för mjuk borttagning och rensningsskydd aktiverat.
  • En RSA- eller RSA-HSM-nyckel i Nyckelvalvet.
    • Nyckeln får inte ha upphört att gälla, den måste vara aktiverad och både wrap- och unwrap-funktionerna måste vara aktiverade.

När dessa resurser har konfigurerats använder du följande steg så att Azure App Configuration kan använda Key Vault-nyckeln:

  1. Tilldela en hanterad identitet till Azure App Configuration-instansen.
  2. Bevilja behörigheter till identiteten för att kunna komma åt Key Vault-nyckeln.
    • För Key Vault med Azure RBAC aktiverat tilldelar du identiteten Key Vault Crypto Service Encryption User rollen på målnyckelvalvet.
    • För Key Vault använder du åtkomstprincipauktorisering, beviljar identiteten GET, WRAPoch UNWRAP behörigheter i målnyckelvalvets åtkomstprincip.

Aktivera kundhanterad nyckelkryptering för appkonfigurationsarkivet

  1. Skapa ett appkonfigurationsarkiv på standard- eller Premium-nivån om du inte har något.

  2. Använd Azure CLI och skapa ett Azure Key Vault med rensningsskydd aktiverat. Mjuk borttagning är aktiverat som standard. Både vault-name och resource-group-name är användarspecifika och måste vara unika. Vi använder contoso-vault och contoso-resource-group i dessa exempel.

    az keyvault create --name contoso-vault --resource-group contoso-resource-group --enable-purge-protection
    
  3. Skapa en Key Vault-nyckel. Ange en unik key-name för den här nyckeln och ersätt namnet på nyckelvalvet (contoso-vault) som skapades i steg 2. Ange om du föredrar RSA eller RSA-HSM kryptering (RSA-HSM är endast tillgängligt på Premium-nivån).

    az keyvault key create --name key-name --kty {RSA or RSA-HSM} --vault-name contoso-vault
    

    Utdata från det här kommandot visar nyckel-ID :t (kid) för den genererade nyckeln. Anteckna nyckel-ID:t som ska användas senare i den här övningen. Nyckel-ID:t har formuläret: https://{my key vault}.vault.azure.net/keys/{key-name}/{key-version}. Nyckel-ID:t har tre viktiga komponenter:

    1. Key Vault-URI: https://{my key vault}.vault.azure.net
    2. Nyckelnamn för Key Vault: {key-name}
    3. Key Vault-nyckelversion: {key-version}
  4. Skapa en systemtilldelad hanterad identitet med hjälp av Azure CLI och ersätt namnet på din appkonfigurationsinstans och resursgrupp som användes i föregående steg. Den hanterade identiteten används för att komma åt den hanterade nyckeln. Vi använder contoso-app-config för att illustrera namnet på en App Configuration-instans:

    az appconfig identity assign --name contoso-app-config --resource-group contoso-resource-group --identities [system]
    

    Utdata från det här kommandot innehåller huvud-ID :t ("principalId") och klientorganisations-ID :t ("tenandId") för den systemtilldelade identiteten. Dessa ID:er används för att ge identiteten åtkomst till den hanterade nyckeln.

    {
        "principalId": {Principal Id},
        "tenantId": {Tenant Id},
        "type": "SystemAssigned",
        "userAssignedIdentities": null
    }
    
  5. Den hanterade identiteten för Azure App Configuration-instansen behöver åtkomst till nyckeln för att utföra nyckelverifiering, kryptering och dekryptering. Den specifika uppsättning åtgärder som den behöver åtkomst till omfattar: GET, WRAPoch UNWRAP för nycklar. Dessa behörigheter kan beviljas genom att Key Vault Crypto Service Encryption User tilldela rollen för Azure RBAC-aktiverade Nyckelvalv. För Key Vaults med åtkomstprincipauktorisering anger du principen för ovan nämnda nyckelbehörigheter. För att bevilja åtkomst krävs huvud-ID för appkonfigurationsinstansens hanterade identitet. Ersätt värdet som visas nedan som med det huvudnamns-ID som contoso-principalId erhölls i föregående steg. Bevilja behörighet till den hanterade nyckeln med hjälp av kommandoraden:

    Använd följande kommando för Key Vaults med Azure RBAC aktiverat.

    az role assignment create --assignee contoso-principalId --role "Key Vault Crypto Service Encryption User" --scope key-vault-resource-id
    
  6. Nu när Azure App Configuration-instansen har åtkomst till den hanterade nyckeln kan vi aktivera funktionen för kundhanterad nyckel i tjänsten med hjälp av Azure CLI. Kom ihåg följande egenskaper som registrerades under stegen för att skapa nycklar: key name key vault URI.

    az appconfig update -g contoso-resource-group -n contoso-app-config --encryption-key-name key-name --encryption-key-version key-version --encryption-key-vault key-vault-Uri
    

Din Azure App Configuration-instans är nu konfigurerad för att använda en kundhanterad nyckel som lagras i Azure Key Vault.

Nästa steg

I den här artikeln konfigurerade du din Azure App Configuration-instans att använda en kundhanterad nyckel för kryptering. Om du vill veta mer om hur du integrerar din apptjänst med hanterade Azure-identiteter fortsätter du till nästa steg.