Dela via


Konfigurera kundhanterade nycklar för ditt Azure Cosmos DB-konto med Azure Key Vault

GÄLLER FÖR: NoSQL MongoDB Kassandra Gremlin Tabell

Data som lagras i ditt Azure Cosmos DB-konto krypteras automatiskt och sömlöst med nycklar som hanteras av Microsoft (tjänsthanterade nycklar). Valfritt kan du välja att lägga till ett andra lager av kryptering med nycklar som du hanterar (kundhanterade nycklar eller CMK).

Diagram över lager av kryptering runt kunddata.

Du måste lagra kundhanterade nycklar i Azure Key Vault och ange en nyckel för varje Azure Cosmos DB-konto som är aktiverat med kundhanterade nycklar. Denna nyckel används för att kryptera all data som lagras i det kontot.

Anteckning

Om du vill aktivera kundhanterade nycklar på dina befintliga Azure Cosmos DB-konton kan du läsa Konfigurera kundhanterade nycklar för ditt befintliga Azure Cosmos DB-konto med Azure Key Vault.

Varning

Följande fältnamn är reserverade i Cassandra API-tabeller i konton med kundhanterade nycklar:

  • id
  • ttl
  • _ts
  • _etag
  • _rid
  • _self
  • _attachments
  • _epk

När kundhanterade nycklar inte är aktiverade är endast fältnamn som börjar med __sys_ reserverade.

Förutsättningar

Registrera Azure Cosmos DB-resursleverantören

Om Microsoft.DocumentDB resursleverantören inte redan är registrerad, bör du registrera denna leverantör som ett första steg.

  1. Logga in på Azure-portalen, gå till ditt Azure-abonnemang och välj Resource providers under fliken Inställningar:

    Skärmdump av alternativet Resursleverantörer i resursnavigeringsmenyn.

  2. Sök efter tillhandahållaren av resurser Microsoft.DocumentDB. Kontrollera om resursleverantören redan är markerad som registrerad. Om inte, välj resurstillhandahållaren och välj Register:

    Skärmdump av registreringsalternativet för resursleverantören Microsoft.DocumentDB.

Konfigurera din Azure Key Vault-instans

Viktigt

Din Azure Key Vault-instans måste vara tillgänglig via offentlig nätverksåtkomst eller tillåta betrodda Microsoft-tjänster att kringgå dess brandvägg. En instans som är exklusivt tillgänglig via privata slutpunkter kan inte användas som värd för dina kundhanterade nycklar.

Vi rekommenderar starkt att den skapade Azure Key Vault-resursen har datareplikering aktiverad för att säkerställa kontinuerlig tillgänglighet vid oväntade regionala avbrott.

Användning av kundhanterade nycklar med Azure Cosmos DB kräver att du ställer in två egenskaper på den Azure Key Vault-instans som du planerar att använda för att hantera dina krypteringsnycklar: Mjuk borttagning och Rensningsskydd.

  1. Om du skapar en ny Azure Key Vault-instans, aktivera dessa egenskaper under skapandet av instansen:

Skärmdump av Azure Key Vault-alternativ inklusive mjuk borttagning och rensningsskydd.

  1. Om du använder en befintlig Azure Key Vault-instans kan du kontrollera att dessa egenskaper är aktiverade genom att titta på Egenskaper-avsnittet på Azure-portalen. Om någon av dessa egenskaper inte är aktiverad kan du läsa avsnitten Aktivera mjuk borttagning och Aktivera rensningsskydd i någon av följande artiklar:

Välj önskad säkerhetsmodell

När rensningsskydd och mjuk borttagning har aktiverats kan du på fliken Åtkomstprincip välja den behörighetsmodell som du vill använda. Åtkomstprinciper är inställda som standard, men Azure rollbaserad åtkomstkontroll stöds också.

Nödvändiga behörigheter måste ges för att tillåta Cosmos DB att använda din krypteringsnyckel. Det här steget varierar beroende på om Azure Key Vault använder antingen åtkomstprinciper eller rollbaserad åtkomstkontroll.

Anteckning

Det är viktigt att observera att endast en säkerhetsmodell kan vara aktiv i taget, så du behöver inte ange den rollbaserade åtkomstkontrollen om Azure Key Vault är inställt på att använda åtkomstprinciper och vice versa.

Lägg till en åtkomstpolicy

I den här varianten, använd Azure Cosmos DB-principalen för att skapa en åtkomstpolicy med lämpliga behörigheter.

  1. Gå till Azure Key Vault-instansen du planerar att använda för att vara värd för dina krypteringsnycklar från Azure-portalen. Välj Access Policies från menyn till vänster:

Skärmbild av alternativet Åtkomstpolicyer i navigeringsmenyn för resurser.

  1. Välj + Lägg till åtkomstpolicy.

  2. Under rullgardinsmenyn för Nyckelbehörigheter, välj behörigheterna Hämta, Packa upp nyckel och Förpacka nyckel:

Skärmdump av behörigheter i åtkomstpolicy inklusive 'Get', 'Unwrap key' och 'Wrap key'.

  1. Under Välj huvudman, välj Ingen vald.

  2. Sök efter Azure Cosmos DB-principal och välj det.

    Tips

    Detta registrerar Azure Cosmos DB:s identitet för första part i din Azure Key Vault-åtkomstpolicy. Om Azure Cosmos DB-huvudansvarig inte finns med i listan kan du behöva registrera om resursleverantören Microsoft.DocumentDB.

  3. Välj Välj längst ner.

    Skärmdump av alternativet Välj huvudman på sidan Lägg till åtkomstpolicy.

  4. Välj Lägg till för att lägga till den nya åtkomstprincipen.

  5. Välj Spara på Key Vault-instansen för att spara alla ändringar.

Lägga till rollbaserade åtkomstkontrollroller

  1. Gå till Azure Key Vault-instansen du planerar att använda för att vara värd för dina krypteringsnycklar från Azure-portalen. Välj Åtkomstkontroll (IAM) från menyn till vänster och välj Ge åtkomst till den här resursen.

    Skärmdump av alternativet för åtkomstkontroll i resursnavigeringsmenyn.

    Skärmbild av alternativet Bevilja åtkomst till denna resurs på sidan för Åtkomstkontroll.

  2. Sök efter rollen Key Vault Administrator och tilldela den till dig själv. Den här tilldelningen görs genom att först söka efter rollnamnet i listan och sedan klicka på fliken Medlemmar . På fliken väljer du alternativet Användare, grupp eller tjänstens huvudnamn i radion och letar sedan upp ditt Azure-konto. När kontot har valts kan rollen tilldelas.

    Skärmdump av en rolltilldelning på sidan för åtkomstkontroll.

  3. Därefter måste de nödvändiga behörigheterna tilldelas Cosmos DB:s huvudansvarig. Precis som den senaste rolltilldelningen går du till tilldelningssidan, men den här gången letar du efter rollen Key Vault Crypto Service Encryption User och letar efter Cosmos DB:s huvudnamn på fliken Medlemmar. För att hitta huvudprincipen, sök efter Azure Cosmos DB huvudprincip och välj den.

    Skärmdump av Azure Cosmos DB-huvudidentiteten som tilldelas en behörighet.

  4. Välj Granska + tilldela, så tilldelas rollen till Cosmos DB.

Kontrollera att rollerna har angetts korrekt

Använd sedan åtkomstkontrollsidan för att bekräfta att alla roller har konfigurerats korrekt.

  1. När rollerna har tilldelats väljer du Visa åtkomst till den här resursen på IAM-sidan åtkomstkontroll för att kontrollera att allt är korrekt inställt.

    Skärmbild av alternativet Visa åtkomst till resurs på sidan Åtkomstkontroll.

  2. På sidan anger du omfånget till den här resursen och kontrollerar att du har rollen Key Vault-administratör, och att Cosmos DB-principal har rollen Key Vault Crypto Encryption User.

Skapa en nyckel i Azure Key Vault

Här ska du skapa en ny nyckel med hjälp av Azure Key Vault och hämta den unika identifieraren.

  1. Från Azure-portalen går du till den Azure Key Vault-instans som du planerar att använda som värd för dina krypteringsnycklar. Välj sedan Keys från menyn till vänster:

    Skärmdump av nyckelalternativet i resursnavigeringsmenyn.

  2. Välj Generera/Importera, ange ett namn för den nya nyckeln, och välj en RSA-nyckelstorlek. Minst 3 072 rekommenderas för bästa säkerhet. Välj sedan Skapa:

    Skärmdump av dialogrutan för att skapa en ny nyckel.

    Tips

    Alternativt kan du använda Azure CLI för att generera en nyckel med:

    az keyvault key create \
        --vault-name <name-of-key-vault> \
        --name <name-of-key>
    

    För mer information om hur du hanterar ett nyckelvalv med Azure CLI, se hantera Azure Key Vault med Azure CLI.

  3. När nyckeln har skapats väljer du den nyss skapade nyckeln och sedan dess aktuella version.

  4. Kopiera nyckelns Nyckelidentifierare, utom delen efter det sista snedstrecket:

    Skärmdump av nyckelidentifieringsfältet och kopieringsåtgärden.

Skapa ett nytt Azure Cosmos DB-konto

Skapa ett nytt Azure Cosmos DB-konto med hjälp av Azure-portalen eller Azure CLI.

När du skapar ett nytt Azure Cosmos DB-konto från Azure-portalen, välj kundhanterad nyckel i krypteringssteget. I fältet Key URI, klistra in URI/nyckelidentifieraren för Azure Key Vault-nyckeln som du kopierade från föregående steg:

Skärmdump av krypteringssidan med en användarhanterad nyckel-URI konfigurerad.

Viktigt

Beroende på nätverkskonfigurationen kan du behöva tillåta åtkomst till Azure Cosmos DB från andra Azure-tjänster.

Använda en hanterad identitet i Azure Key Vault-åtkomstprincipen

Den här åtkomstprincipen säkerställer att dina krypteringsnycklar kan nås av ditt Azure Cosmos DB-konto. Åtkomstpolicyn implementeras genom att bevilja åtkomst till en specifik Microsoft Entra-identitet. Två typer av identiteter stöds:

  • Azure Cosmos DB:s förstapartidentitet kan användas för att ge åtkomst till Azure Cosmos DB-tjänsten.
  • Ditt Azure Cosmos DB-kontos hanterade identitet kan användas för att specifikt bevilja åtkomst till ditt konto.

Ej tillgänglig

Använd kundhanterade nycklar med kontinuerlig säkerhetskopiering

Du kan skapa ett konto för kontinuerlig säkerhetskopiering med hjälp av Azure CLI eller en ARM-mall.

För närvarande stöds endast användartilldelad hanterad identitet för att skapa kontinuerliga säkerhetskopieringskonton.

När kontot har skapats kan du uppdatera identiteten till systemtilldelad hanterad identitet.

Alternativt kan användarna också skapa en systemidentitet med periodiskt säkerhetskopieringsläge först och sedan migrera kontot till läget Kontinuerlig säkerhetskopiering. Detaljerade steg finns i Migrera ett Azure Cosmos DB-konto från periodiskt till kontinuerligt säkerhetskopieringsläge.

Ej tillgänglig

Återställa ett kontinuerligt konto som har konfigurerats med hanterad identitet

En användartilldelad identitet krävs i återställningsbegäran eftersom källkontots hanterade identitet (användartilldelade och systemtilldelade identiteter) inte kan överföras automatiskt till måldatabaskontot.

Ej tillgänglig

Kundhanterade nycklar och dubbel kryptering

De data du lagrar i ditt Azure Cosmos DB-konto, när du använder kundhanterade nycklar, blir krypterade två gånger.

  • En gång genom den förinställda krypteringen utförd med Microsoft-hanterade nycklar.
  • När den extra krypteringen utförs med kundhanterade nycklar.

Dubbel kryptering gäller endast för huvudtransaktionslagringen i Azure Cosmos DB. Vissa funktioner innebär intern replikering av dina data till en andra nivå av lagring där dubbel kryptering inte tillhandahålls, även med kundhanterade nycklar. Dessa funktioner innefattar följande:

Nyckelrotation

Rotering av den kundhanterade nyckeln som används av ditt Azure Cosmos DB-konto kan göras på två sätt.

  • Skapa en ny version av nyckeln som för närvarande används från Azure Key Vault.

    Skärmdump av alternativet Ny version på Versionssidan i Azure-portalen.

  • Byt ut den nyckel som för närvarande används mot en annan genom att uppdatera nyckelns URI på ditt konto. Från Azure-portalen, gå till ditt Azure Cosmos DB-konto och välj Datakryptering från menyn till vänster:

    Skärmbild av alternativet Datakryptering på resursnavigeringsmenyn.

    Därefter, ersätt Key URI med den nya nyckeln du vill använda och välj Spara:.

    Skärmdump av Spara-alternativet på Nyckelsidan.

    Så här uppnår du samma resultat i PowerShell:

    # Variable for resource group name
    $RESOURCE_GROUP_NAME = "<resource-group-name>"
    
    # Variable for account name
    $ACCOUNT_NAME = "<globally-unique-account-name>"
    
    # Variable for new key URI in the key vault
    $NEW_KEY_VAULT_KEY_URI="https://<key-vault-name>.vault.azure.net/keys/<new-key-name>"
    
    $parameters = @{
        ResourceGroupName = $RESOURCE_GROUP_NAME 
        Name = $ACCOUNT_NAME
        ResourceType = "Microsoft.DocumentDb/databaseAccounts"
    }
    $ACCOUNT = Get-AzResource @parameters
    
    $ACCOUNT.Properties.keyVaultKeyUri = $NEW_KEY_VAULT_KEY_URI
    
    $ACCOUNT | Set-AzResource -Force
    

Den föregående nyckeln eller nyckelversionen kan inaktiveras efter att Azure Key Vault-revisionsloggarna inte längre visar aktivitet från Azure Cosmos DB på den nyckeln eller nyckelversionen. Ingen ytterligare aktivitet bör ske på den tidigare nyckeln eller nyckelversionen efter 24 timmar av nyckelrotation.

Autorotation av nycklar i Azure Key Vault stöds så länge den tidigare nyckeln inte är inaktiverad eller borttagen. De interna systemen behöver lite tid för att komma ikapp den nya versionen av nyckeln efter att ha verifierat att kontot inte är i återkallat tillstånd eller i övergång för att aktivera kundhanterade nycklar.

Felhantering

Om det uppstår några fel med kundhanterade nycklar i Azure Cosmos DB, returnerar Azure Cosmos DB felförklaringarna tillsammans med en HTTP-substatuskod i svaret. Du kan använda HTTP-understatuskoden för att felsöka grundorsaken till problemet. Information om hur du hämtar listan över HTTP-understatuskoder som stöds finns i HTTP-statuskoder för Azure Cosmos DB.

Vanliga frågor

Här inkluderas ofta ställda frågor om att konfigurera kundhanterade nycklar i Azure Cosmos DB.

Tillkommer det fler avgifter för att aktivera kundhanterade nycklar?

Nej, det kostar inget att aktivera den här funktionen.

Hur påverkar kundhanterade nycklar kapacitetsplanering?

Request Units (RU) som förbrukas av dina databasåtgärder ökar för att återspegla den extra bearbetning som krävs för att utföra kryptering och dekryptering av dina data när du använder kundhanterade nycklar. Den extra RU-förbrukningen kan leda till något högre användning av din etablerade kapacitet. Använd denna tabell för vägledning.

Typ av operation Begär enhetsökning
Punktläsningar (hämtar objekt med deras ID) + 5% per åtgärd
Varje skrivoperation + 6% per operation | Cirka + 0.06 RU per indexerad egenskap
Förfrågningar, läsa ändringsflöde eller konfliktflöde + 15% per åtgärd

Vilka data krypteras med kundhanterade nycklar?

All data som lagras i ditt Azure Cosmos DB-konto krypteras med kundhanterade nycklar, förutom följande metadata:

Stöds kundhanterade nycklar för befintliga Azure Cosmos DB-konton?

Ja. Mer information finns i Konfigurera kundhanterade nycklar för ditt befintliga Azure Cosmos DB-konto med Azure Key Vault.

Är det möjligt att använda kundhanterade nycklar med Azure Cosmos DB:s analyslagringsplats?

Ja, Azure Synapse Link stöder endast konfiguration av kundhanterade nycklar med hjälp av den hanterade identiteten för ditt Azure Cosmos DB-konto. Du måste använda din Azure Cosmos DB-kontos hanterade identitet i din åtkomstpolicy för Azure Key Vault innan du aktiverar Azure Synapse Link på ditt konto. För en guide om hur du aktiverar hanterad identitet och använder den i en åtkomstpolicy, se åtkomst till Azure Key Vault från Azure Cosmos DB med en hanterad identitet.

Finns det en plan för att stödja en finare granularitet än kontonivånycklar?

För närvarande inte, men nycklar på container-nivå övervägs.

Hur kan jag ta reda på om kundhanterade nycklar är aktiverade på mitt Azure Cosmos DB-konto?

Från Azure-portalen går du till ditt Azure Cosmos DB-konto och tittar efter posten Datakryptering i den vänstra menyn. Om den här posten existerar, är kundhanterade nycklar aktiverade på ditt konto:

Skärmbild av alternativet för datakryptering i resursnavigeringsmenyn.

Du kan också hämta information om ditt Azure Cosmos DB-konto programmässigt och leta efter förekomsten av egenskapen keyVaultKeyUri.

Hur påverkar kundhanterade nycklar periodiska säkerhetskopior?

Azure Cosmos DB skapar regelbundna och automatiska säkerhetskopior av den data som lagras i ditt konto. Den här operationen säkerhetskopierar de krypterade uppgifterna.

Följande villkor är nödvändiga för att framgångsrikt återställa en periodisk säkerhetskopia:

  • Krypteringsnyckeln som du använde vid tidpunkten för säkerhetskopieringen krävs och måste finnas tillgänglig i Azure Key Vault. Denna förutsättning kräver att ingen återkallelse har gjorts och att versionen av nyckeln som användes vid tiden för säkerhetskopieringen fortfarande är aktiverad.
  • Om du använde en systemanvisad hanterad identitet i åtkomstpolicyn, ge tillfälligt åtkomst till Azure Cosmos DB:s förstapartsidentitet innan du återställer dina data. Detta krav finns eftersom en systemtilldelad hanterad identitet är specifik för ett konto och inte kan återanvändas i målkontot. När data har återställts helt till målkontot kan du konfigurera önskad identitetskonfiguration och ta bort förstapartsidentiteten från Key Vaults åtkomstpolicy.

Hur påverkar kundhanterade nycklar kontinuerliga säkerhetskopior?

Azure Cosmos DB ger dig möjlighet att konfigurera kontinuerliga säkerhetskopior på ditt konto. Med kontinuerliga säkerhetskopior kan du återställa dina data till valfri tidpunkt under de senaste 30 dagarna. För att använda kontinuerliga säkerhetskopior på ett konto där kundhanterade nycklar är aktiverade måste du använda en systemtilldelad eller användartilldelad hanterad identitet i Key Vaults åtkomstpolicy. Azure Cosmos DB-identiteter från första part stöds för närvarande inte på konton som använder kontinuerliga säkerhetskopior.

Nödvändiga steg för konton som är aktiverade med kundhanterade nycklar för att uppdatera användartilldelad identitet.

  • Lägg till en användartilldelad identitet i Cosmos DB-kontot och bevilja behörigheter i nyckelvalvets åtkomstpolicy.
  • Ställ in den användartilldelade identiteten som standardidentitet via Azure CLI eller Azure Resource Manager (ARM).
az cosmosdb update --resource-group MyResourceGroup --name MyAccountName --default-identity UserAssignedIdentity=/subscriptions/MySubscriptionId/resourcegroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyUserAssignedIdentity

Följande villkor är nödvändiga för att framgångsrikt utföra en återställning från en specifik tidpunkt:

  • Åtkomst till den kundhanterade nyckeln måste vara tillgänglig för kontots standardidentitet. Om nyckeln har roterats måste rotationsprocessen vara helt slutförd eller så måste kontot ha åtkomst till både de gamla och nya nyckelversionerna.

  • Du måste se till att den användartilldelade hanterade identiteten som ursprungligen användes på källkontot fortfarande är deklarerad i Key Vaults åtkomstpolicy.

Viktigt

Om du återkallar krypteringsnyckeln innan du tar bort ditt konto kan ditt kontos säkerhetskopia missa data som skrivits upp till en timme innan återkallningen gjordes.

Hur upphäver jag en krypteringsnyckel?

Nyckelåterkallelse sker genom att inaktivera den senaste versionen av nyckeln.

Skärmdump av en inaktiverad anpassad nyckelversion.

Alternativt, för att återkalla alla nycklar från en Azure Key Vault-instans, kan du ta bort den åtkomstpolicy som beviljats till Azure Cosmos DB-huvudordningen:

Skärmbild av alternativet Ta bort för en åtkomstpolicy.

Vilka operationer är tillgängliga efter att en kundhanterad nyckel har återkallats?

Kontoborttagning är den enda möjliga åtgärden när krypteringsnyckeln har återkallats.

Tilldela en ny hanterad identitet till det återställda databaskontot för att fortsätta ha åtkomst till eller återfå åtkomst till databaskontot.

Användartilldelad identitet är kopplad till ett angivet Cosmos DB-konto, när vi tilldelar en användartilldelad identitet till ett konto vidarebefordrar ARM begäran till hanterade tjänstidentiteter för att upprätta den här anslutningen. För närvarande överför vi användaridentitetsinformation från källdatabaskontot till måldatabaskontot under återställningen (för både kontinuerlig och periodisk säkerhetskopieringsåterställning) av CMK + användartilldelad identitet.

Identitetsmetadata är bundna till källdatabaskontot och återställningsarbetsflödet omskopierar inte identiteten till måldatabaskontot. Detta gör att de återställda databaskontona är i ett felaktigt tillstånd och blir otillgängliga när källkontot har tagits bort och identitetens förnyelsetid har upphört att gälla.

Steg för att tilldela en ny hanterad identitet:

  1. Skapa en ny användartilldelad hanterad identitet
  2. Bevilja Key Vault-nyckelåtkomst till den här identiteten
  3. Tilldela den här nya identiteten till ditt återställde databaskonto

Nästa steg