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

GÄLLER FÖR: Nosql Mongodb Cassandra 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). Du kan också välja att lägga till ett andra krypteringslager med nycklar som du hanterar (kundhanterade nycklar eller CMK).

Diagram över krypteringsskikten kring 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. Den här nyckeln används till att kryptera alla data som lagras på kontot.

Kommentar

Om du vill aktivera kundhanterade nycklar på dina befintliga Azure Cosmos DB-konton kan du läsa länken här för mer information

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-resursprovidern

Om resursprovidern Microsoft.DocumentDB inte redan är registrerad bör du registrera den här providern som ett första steg.

  1. Logga in på Azure-portalen, gå till din Azure-prenumeration och välj Resursprovidrar under fliken Inställningar:

    Skärmbild av alternativet Resursproviders i resursnavigeringsmenyn.

  2. Sök efter resursprovidern Microsoft.DocumentDB . Kontrollera om resursprovidern redan har markerats som registrerad. Om inte väljer du resursprovidern och väljer Registrera:

    Skärmbild av alternativet Registrera för resursprovidern 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 kringgå brandväggen. En instans som är exklusivt tillgänglig via privata slutpunkter kan inte användas som värd för dina kundhanterade nycklar.

Om du använder kundhanterade nycklar med Azure Cosmos DB måste du ange två egenskaper för den Azure Key Vault-instans som du planerar att använda som värd för dina krypteringsnycklar: Mjuk borttagning och rensningsskydd.

  1. Om du skapar en ny Azure Key Vault-instans aktiverar du dessa egenskaper när du skapar:

    Skärmbild av Azure Key Vault-alternativ, inklusive skydd mot mjuk borttagning och rensning.

  2. Om du använder en befintlig Azure Key Vault-instans kan du kontrollera att dessa egenskaper är aktiverade genom att titta på avsnittet Egenskaper 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älja önskad säkerhetsmodell

När rensningsskydd och mjuk borttagning har aktiverats kan du välja önskad behörighetsmodell på fliken Åtkomstprincip. Åtkomstprinciper anges som standard, men rollbaserad åtkomstkontroll i Azure stöds också.

Nödvändiga behörigheter måste ges för att cosmos DB ska kunna använda krypteringsnyckeln. Det här steget varierar beroende på om Azure Key Vault använder antingen åtkomstprinciper eller rollbaserad åtkomstkontroll.

Kommentar

Det är viktigt att observera att endast en säkerhetsmodell kan vara aktiv i taget, så det finns inget behov av att ange rollbaserad åtkomstkontroll om Azure Key Vault är inställt på att använda åtkomstprinciper och vice versa)

Lägga till en åtkomstprincip

I den här varianten använder du Azure Cosmos DB-huvudkontot för att skapa en åtkomstprincip med rätt behörigheter.

  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 Åtkomstprinciper på den vänstra menyn:

    Skärmbild av alternativet Åtkomstprinciper i resursnavigeringsmenyn.

  2. Välj + Lägg till åtkomstprincip.

  3. Under den nedrullningsbara menyn Nyckelbehörigheter väljer du Behörigheter för Hämta, Packa upp nyckel och Radbryt nyckel :

    Skärmbild av behörigheter för åtkomstprinciper, inklusive Hämta, Packa upp nyckel och Radbryt nyckel.

  4. Under Välj huvudnamn väljer du Ingen markerad.

  5. Sök efter Azure Cosmos DB-huvudnamn och välj det (för att göra det lättare att hitta kan du också söka efter program-ID: a232010e-820c-4083-83bb-3ace5fc29d0b för alla Azure-regioner utom Azure Government-regioner där program-ID:t är 57506a73-e302-42a9-b869-6f12d9ec29e9).

    Dricks

    Detta registrerar Azure Cosmos DB-identiteten från första part i din Azure Key Vault-åtkomstprincip. Om Azure Cosmos DB-huvudkontot inte finns med i listan kan du behöva registrera resursprovidern Microsoft.DocumentDB igen.

  6. Välj Välj längst ned.

    Skärmbild av alternativet Välj huvudnamn på sidan Lägg till åtkomstprincip.

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

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

Lägga till rollbaserade åtkomstkontrollroller

  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 Åtkomstkontroll (IAM) på den vänstra menyn och välj Bevilja åtkomst till den här resursen.

    Skärmbild av alternativet Åtkomstkontroll i resursnavigeringsmenyn.

    Skärmbild av alternativet Bevilja åtkomst till den här resursen på sidan Åtkomstkontroll.

  2. Sök efter rollen "Key Vault-administratör" 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ärmbild av nyckelvalvsadministratörsrollen i sökresultaten.

    Skärmbild av en rolltilldelning på sidan Åtkomstkontroll.

  3. Sedan måste nödvändiga behörigheter tilldelas till Cosmos DB:s huvudnamn. 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. Du hittar huvudnamnet genom att söka efter Azure Cosmos DB-huvudkontot och välja det.

    Skärmbild av det Azure Cosmos DB-huvudnamn som tilldelas en behörighet.

    Viktigt!

    I Azure Government-regionen är 57506a73-e302-42a9-b869-6f12d9ec29e9program-ID:t .

  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 för åtkomstkontroll för att kontrollera att allt har angetts korrekt.

    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 Cosmos DB-huvudnamnet har rollen Key Vault Crypto Encryption User.

    Skärmbild av omfångsjusteringsalternativet för en rolltilldelningsfråga.

Generera en nyckel i Azure Key Vault

Här skapar du en ny nyckel med Hjälp av Azure Key Vault och hämtar 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 Nycklar på den vänstra menyn:

    Skärmbild av alternativet Nycklar 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ärmbild av dialogrutan för att skapa en ny nyckel.

    Dricks

    Du kan också 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>
    

    Mer information om hur du hanterar ett nyckelvalv med Azure CLI finns i Hantera Azure Key Vault med Azure CLI.

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

  4. Kopiera nyckelns nyckelidentifierare, förutom delen efter det sista snedstrecket:

    Skärmbild av nyckelidentifierarfä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äljer du Kundhanterad nyckel i steget Kryptering . I fältet Nyckel-URI klistrar du in URI/nyckelidentifieraren för Azure Key Vault-nyckeln som du kopierade från föregående steg:

Skärmbild av sidan Kryptering med en anpassad hanterad nyckel-URI konfigurerad.

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. Åtkomstprincipen implementeras genom att ge åtkomst till en specifik Microsoft Entra-identitet. Två typer av identiteter stöds:

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

Inte tillgängliga

Använda kundhanterade nycklar med kontinuerlig säkerhetskopiering

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

För närvarande stöds endast användartilldelad hanterad identitet för att skapa konton för kontinuerlig säkerhetskopiering.

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

Alternativt kan användaren också skapa en systemidentitet med periodiskt säkerhetskopieringsläge först och sedan migrera kontot till läget För kontinuerlig säkerhetskopiering med hjälp av de här anvisningarna Migrera ett Azure Cosmos DB-konto från periodiskt till kontinuerligt säkerhetskopieringsläge

Inte tillgängliga

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

Inte tillgängliga

Kundhanterade nycklar och dubbel kryptering

De data som du lagrar i ditt Azure Cosmos DB-konto när du använder kundhanterade nycklar krypteras två gånger:

  • En gång via standardkryptering som utförs med Microsoft-hanterade nycklar.
  • En gång genom den extra kryptering som utförs med kundhanterade nycklar.

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

Nyckelrotation

Du kan rotera den kundhanterade nyckel som används av ditt Azure Cosmos DB-konto på två sätt.

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

    Skärmbild av alternativet Ny version på sidan Versioner i Azure-portalen.

  • Växla den nyckel som för närvarande används med en annan genom att uppdatera nyckel-URI:n för ditt konto. Från Azure-portalen går du till ditt Azure Cosmos DB-konto och väljer Datakryptering på den vänstra menyn:

    Skärmbild av alternativet Datakryptering på resursnavigeringsmenyn.

    Ersätt sedan nyckel-URI :n med den nya nyckel som du vill använda och välj Spara:

    Skärmbild av alternativet Spara på sidan Nyckel.

    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 tidigare nyckel- eller nyckelversionen kan inaktiveras när Azure Key Vault-granskningsloggarna inte längre visar aktivitet från Azure Cosmos DB på den nyckel- eller nyckelversionen. Ingen mer aktivitet ska utföras på den tidigare nyckel- eller nyckelversionen efter 24 timmars nyckelrotation.

Felhantering

Om det finns fel med kundhanterade nycklar i Azure Cosmos DB returnerar Azure Cosmos DB felinformationen tillsammans med en HTTP-understatuskod i svaret. Du kan använda HTTP-understatuskoden för att felsöka rotorsaken till problemet. Se artikeln HTTP-statuskoder för Azure Cosmos DB för att hämta listan över HTTP-understatuskoder som stöds.

Vanliga frågor och svar

Här finns vanliga frågor och svar om hur du konfigurerar kundhanterade nycklar i Azure Cosmos DB.

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

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

Hur påverkar kundhanterade nycklar kapacitetsplaneringen?

Enheter för programbegäran som förbrukas av dina databasåtgärder ser en ökning 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 den här tabellen för vägledning:

Åtgärdstyp Ökning av begärandeenhet
Punktläsningar (hämtar objekt efter deras ID) + 5 % per åtgärd
Skrivåtgärder + 6 % per åtgärd | Cirka + 0,06 RU per indexerad egenskap
Frågor, läsning av ändringsflöde eller konfliktflöde + 15 % per åtgärd

Vilka data krypteras med kundhanterade nycklar?

Alla 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?

Den här funktionen är för närvarande endast tillgänglig för nya konton.

Går det att använda kundhanterade nycklar med Azure Cosmos DB-analysarkivet?

Ja, Azure Synapse Link stöder endast konfigurering av kundhanterade nycklar med hjälp av ditt Azure Cosmos DB-kontos hanterade identitet. Du måste använda ditt Azure Cosmos DB-kontos hanterade identitet i din Azure Key Vault-åtkomstprincip innan du aktiverar Azure Synapse Link för ditt konto. En instruktionsguide om hur du aktiverar hanterad identitet och använder den i en åtkomstprincip finns i komma åt Azure Key Vault från Azure Cosmos DB med hjälp av en hanterad identitet.

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

Inte för närvarande, men nycklar på containernivå övervägs.

Hur vet jag 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 finns aktiveras kundhanterade nycklar för ditt konto:

Skärmbild av alternativet Datakryptering i resursnavigeringsmenyn.

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

Hur påverkar kundhanterade nycklar periodiska säkerhetskopieringar?

Azure Cosmos DB gör regelbundna och automatiska säkerhetskopieringar av data som lagras i ditt konto. Den här åtgärden säkerhetskopierar krypterade data.

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

  • Krypteringsnyckeln som du använde vid tidpunkten för säkerhetskopieringen krävs och måste vara tillgänglig i Azure Key Vault. Det här villkoret kräver att inget återkallande har gjorts och att den version av nyckeln som användes vid tidpunkten för säkerhetskopieringen fortfarande är aktiverad.
  • Om du använde en systemtilldelad hanterad identitet i åtkomstprincipen beviljar du tillfälligt åtkomst till Azure Cosmos DB-identiteten från första part innan du återställer dina data. Det här kravet 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 ange önskad identitetskonfiguration och ta bort den första partens identitet från key vault-åtkomstprincipen.

Hur påverkar kundhanterade nycklar kontinuerliga säkerhetskopieringar?

Med Azure Cosmos DB kan du konfigurera kontinuerliga säkerhetskopior för ditt konto. Med kontinuerliga säkerhetskopior kan du återställa dina data till valfri tidpunkt under de senaste 30 dagarna. Om du vill 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 vault-åtkomstprincipen. Azure Cosmos DB-identiteter från första part stöds för närvarande inte på konton som använder kontinuerliga säkerhetskopieringar.

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

  • Lägg till en användartilldelad identitet till Cosmos DB-kontot och bevilja behörigheter i key vault-åtkomstprincipen.
  • Ange den användartilldelade som standardidentitet via Azure CLI eller 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 utföra en återställning till tidpunkt:

  • Krypteringsnyckeln som du använde vid tidpunkten för säkerhetskopieringen krävs och måste vara tillgänglig i Azure Key Vault. Det här kravet innebär att inget återkallande har gjorts och att den version av nyckeln som användes vid tidpunkten för säkerhetskopieringen fortfarande är aktiverad.
  • Du måste se till att den användartilldelade hanterade identiteten som ursprungligen användes på källkontot fortfarande deklareras i key vault-åtkomstprincipen.

Viktigt!

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

Hur gör jag för att återkalla en krypteringsnyckel?

Nyckelåterkallning görs genom att inaktivera den senaste versionen av nyckeln:

Skärmbild av en inaktiverad anpassad nyckelversion.

Om du vill återkalla alla nycklar från en Azure Key Vault-instans kan du också ta bort åtkomstprincipen som beviljats Azure Cosmos DB-huvudkontot:

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

Vilka åtgärder är tillgängliga när en kundhanterad nyckel har återkallats?

Den enda åtgärd som är möjlig när krypteringsnyckeln har återkallats är kontoborttagning.

Tilldela en ny hanterad identitet till det återställde databaskontot för att fortsätta komma åt eller återställa åtkomsten 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) för CMK + användartilldelad identitet.

Eftersom identitetsmetadata är bundna till källdatabaskontot och återställningsarbetsflödet inte omfång identitet 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 KeyVault-nyckelåtkomst till den här identiteten.
  3. Tilldela den här nya identiteten till ditt återställde databaskonto.

Nästa steg