Konfigurace klíčů spravovaných zákazníkem pro váš účet služby Azure Cosmos DB s využitím služby Azure Key Vault

PLATÍ PRO: SQL API rozhraní API Cassandra rozhraní Gremlin API rozhraní API pro tabulky rozhraní API služby Azure Cosmos DB pro MongoDB

Data uložená ve vašem účtu Azure Cosmos se automaticky a bez problémů šifrují pomocí klíčů spravovaných Microsoftem (klíče spravované službou). Volitelně můžete přidat druhou vrstvu šifrování pomocí klíčů, které spravujete (klíče spravované zákazníkem nebo CMK).

Layers of encryption around customer data

Klíče spravované zákazníkem musíte uložit v Azure Key Vault a zadat klíč pro každý účet Azure Cosmos, který je povolený pomocí klíčů spravovaných zákazníkem. Tento klíč slouží k šifrování všech dat uložených v tomto účtu.

Poznámka

Klíče spravované zákazníkem jsou v současné době dostupné jenom pro nové účty Azure Cosmos. Měli byste je nakonfigurovat při vytváření účtu.

Registrace poskytovatele prostředků Azure Cosmos DB pro vaše předplatné Azure

  1. Přihlaste se k Azure Portal, přejděte do předplatného Azure a vyberte poskytovatele prostředků na kartě Nastavení:

    Resource providers entry from the left menu

  2. Vyhledejte poskytovatele prostředků Microsoft.DocumentDB . Ověřte, jestli je poskytovatel prostředků již označený jako zaregistrovaný. Pokud ne, zvolte poskytovatele prostředků a vyberte Zaregistrovat:

    Registering the Microsoft.DocumentDB resource provider

Konfigurace instance Azure Key Vault

Důležité

Vaše instance Azure Key Vault musí být přístupná prostřednictvím přístupu k veřejné síti nebo umožnit důvěryhodným služby Microsoft obejít bránu firewall. Instanci, která je výhradně přístupná prostřednictvím privátních koncových bodů , se nedá použít k hostování klíčů spravovaných zákazníkem.

Použití klíčů spravovaných zákazníkem s Azure Cosmos DB vyžaduje, abyste nastavili dvě vlastnosti instance Azure Key Vault, kterou plánujete použít k hostování šifrovacích klíčů: obnovitelné odstranění a vymazání ochrany.

Pokud vytvoříte novou instanci Azure Key Vault, povolte během vytváření tyto vlastnosti:

Enabling soft delete and purge protection for a new Azure Key Vault instance

Pokud používáte existující instanci Azure Key Vault, můžete ověřit, že jsou tyto vlastnosti povolené, a to tak, že se podíváte do části Vlastnosti na Azure Portal. Pokud některé z těchto vlastností není povolené, podívejte se do části Povolení obnovitelného odstranění a Povolení ochrany před vymazáním v jednom z následujících článků:

Přidání zásad přístupu do instance Azure Key Vault

  1. V Azure Portal přejděte do instance Azure Key Vault, kterou plánujete použít k hostování šifrovacích klíčů. V nabídce vlevo vyberte Zásady přístupu :

    Access policies from the left menu

  2. Vyberte + Přidat zásady přístupu.

  3. V rozevírací nabídce Oprávnění ke klíči vyberte Získat, Rozbalit klíč a Zalamovat oprávnění ke klíči :

    Selecting the right permissions

  4. V části Vybrat objekt zabezpečení vyberte Možnost Žádný.

  5. Vyhledejte objekt zabezpečení azure Cosmos DB a vyberte ho (abyste ho mohli snadněji najít, můžete také hledat podle ID aplikace: a232010e-820c-4083-83bb-3ace5fc29d0b pro libovolnou oblast Azure kromě oblastí Azure Government oblastech, kde je 57506a73-e302-42a9-b869-6f12d9ec29e9ID aplikace). Pokud v seznamu není objekt zabezpečení azure Cosmos DB, možná budete muset znovu zaregistrovat poskytovatele prostředků Microsoft.DocumentDB, jak je popsáno v části Registrace poskytovatele prostředků v tomto článku.

    Poznámka

    Tím se v zásadách přístupu k Azure Key Vault zaregistruje identita azure Cosmos DB první strany. Pokud chcete tuto identitu první strany nahradit spravovanou identitou účtu Azure Cosmos DB, přečtěte si téma Použití spravované identity v zásadách přístupu k Azure Key Vault.

  6. V dolní části zvolte Vybrat .

    Select the Azure Cosmos DB principal

  7. Pokud chcete přidat novou zásadu přístupu, vyberte Přidat .

  8. Výběrem možnosti Uložit na instanci Key Vault uložte všechny změny.

Vygenerování klíče v Azure Key Vault

  1. Z Azure Portal přejděte do instance Azure Key Vault, kterou plánujete použít k hostování šifrovacích klíčů. Pak v nabídce vlevo vyberte Klávesy :

    Keys entry from the left menu

  2. Vyberte Generovat/Importovat, zadejte název nového klíče a vyberte velikost klíče RSA. Pro zajištění nejlepšího zabezpečení se doporučuje minimálně 3072. Pak vyberte Vytvořit:

    Create a new key

  3. Po vytvoření klíče vyberte nově vytvořený klíč a pak jeho aktuální verzi.

  4. Zkopírujte identifikátor klíče s výjimkou části za posledním lomítkem:

    Copying the key's key identifier

Vytvoření nového účtu Azure Cosmos

Použití webu Azure Portal

Při vytváření nového účtu Azure Cosmos DB z Azure Portal zvolte klíč spravovaný zákazníkem v kroku Šifrování. Do pole Identifikátor URI klíče vložte identifikátor URI nebo klíče klíče Azure Key Vault, který jste zkopírovali z předchozího kroku:

Setting CMK parameters in the Azure portal

Použití Azure Powershell

Při vytváření nového účtu Azure Cosmos DB pomocí PowerShellu:

  • Předejte identifikátor URI klíče Azure Key Vault zkopírovaný dříve v části keyVaultKeyUri vlastnost PropertyObject.

  • Jako verzi rozhraní API použijte verzi rozhraní API 2019-12-12 nebo novější.

Důležité

Vlastnost musíte explicitně nastavit locations , aby se účet úspěšně vytvořil pomocí klíčů spravovaných zákazníkem.

$resourceGroupName = "myResourceGroup"
$accountLocation = "West US 2"
$accountName = "mycosmosaccount"

$failoverLocations = @(
    @{ "locationName"="West US 2"; "failoverPriority"=0 }
)

$CosmosDBProperties = @{
    "databaseAccountOfferType"="Standard";
    "locations"=$failoverLocations;
    "keyVaultKeyUri" = "https://<my-vault>.vault.azure.net/keys/<my-key>";
}

New-AzResource -ResourceType "Microsoft.DocumentDb/databaseAccounts" `
    -ApiVersion "2019-12-12" -ResourceGroupName $resourceGroupName `
    -Location $accountLocation -Name $accountName -PropertyObject $CosmosDBProperties

Po vytvoření účtu můžete ověřit, že klíče spravované zákazníkem jsou povolené načtením identifikátoru URI klíče Azure Key Vault:

Get-AzResource -ResourceGroupName $resourceGroupName -Name $accountName `
    -ResourceType "Microsoft.DocumentDb/databaseAccounts" `
    | Select-Object -ExpandProperty Properties `
    | Select-Object -ExpandProperty keyVaultKeyUri

Použití šablony Azure Resource Manager

Když vytvoříte nový účet Azure Cosmos prostřednictvím šablony Azure Resource Manager:

  • Předejte identifikátor URI klíče Azure Key Vault, který jste zkopírovali dříve v vlastnosti keyVaultKeyUri v objektu properties.

  • Jako verzi rozhraní API použijte verzi rozhraní API 2019-12-12 nebo novější.

Důležité

Vlastnost musíte explicitně nastavit locations , aby se účet úspěšně vytvořil pomocí klíčů spravovaných zákazníkem.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "accountName": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "keyVaultKeyUri": {
            "type": "string"
        }
    },
    "resources": 
    [
        {
            "type": "Microsoft.DocumentDB/databaseAccounts",
            "name": "[parameters('accountName')]",
            "apiVersion": "2019-12-12",
            "kind": "GlobalDocumentDB",
            "location": "[parameters('location')]",
            "properties": {
                "locations": [ 
                    {
                        "locationName": "[parameters('location')]",
                        "failoverPriority": 0,
                        "isZoneRedundant": false
                    }
                ],
                "databaseAccountOfferType": "Standard",
                "keyVaultKeyUri": "[parameters('keyVaultKeyUri')]"
            }
        }
    ]
}

Nasaďte šablonu pomocí následujícího skriptu PowerShellu:

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$accountLocation = "West US 2"
$keyVaultKeyUri = "https://<my-vault>.vault.azure.net/keys/<my-key>"

New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -TemplateFile "deploy.json" `
    -accountName $accountName `
    -location $accountLocation `
    -keyVaultKeyUri $keyVaultKeyUri

Použití Azure CLI

Když vytvoříte nový účet Azure Cosmos prostřednictvím Azure CLI, předejte identifikátor URI klíče Azure Key Vault, který jste zkopírovali dříve pod parametrem--key-uri.

resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
keyVaultKeyUri = 'https://<my-vault>.vault.azure.net/keys/<my-key>'

az cosmosdb create \
    -n $accountName \
    -g $resourceGroupName \
    --locations regionName='West US 2' failoverPriority=0 isZoneRedundant=False \
    --key-uri $keyVaultKeyUri

Po vytvoření účtu můžete ověřit, že klíče spravované zákazníkem jsou povolené načtením identifikátoru URI klíče Azure Key Vault:

az cosmosdb show \
    -n $accountName \
    -g $resourceGroupName \
    --query keyVaultKeyUri

Použití spravované identity v zásadách přístupu azure Key Vault

Tato zásada přístupu zajišťuje, že k šifrovacím klíčům bude mít přístup váš účet Azure Cosmos DB. To se provádí udělením přístupu ke konkrétní identitě Azure Active Directory (AD). Podporují se dva typy identit:

  • Identitu první strany služby Azure Cosmos DB je možné použít k udělení přístupu ke službě Azure Cosmos DB.
  • Spravovanou identitu účtu Azure Cosmos DB můžete použít k udělení přístupu k vašemu účtu konkrétně.

Použití spravované identity přiřazené systémem

Vzhledem k tomu, že spravovanou identitu přiřazenou systémem je možné načíst jenom po vytvoření účtu, musíte nejprve vytvořit účet pomocí identity první strany, jak je popsáno výše. Potom:

  1. Pokud jste to neudělali během vytváření účtu, povolte na svém účtu spravovanou identitu přiřazenou systémem a zkopírujte principalId přiřazenou identitu.

  2. Přidejte do účtu Azure Key Vault novou zásadu přístupu, jak je popsáno výše, ale místo identity první strany azure Cosmos DB použijete principalId zkopírovanou zásadu zkopírovanou v předchozím kroku.

  3. Aktualizujte účet azure Cosmos DB, abyste určili, že chcete při přístupu k šifrovacím klíčům v Azure Key Vault použít spravovanou identitu přiřazenou systémem. Můžete to udělat:

    • zadáním této vlastnosti do šablony Azure Resource Manager vašeho účtu:
    {
        "type": " Microsoft.DocumentDB/databaseAccounts",
        "properties": {
            "defaultIdentity": "SystemAssignedIdentity",
            // ...
        },
        // ...
    }
    
    • aktualizací účtu pomocí Azure CLI:
        resourceGroupName='myResourceGroup'
        accountName='mycosmosaccount'
    
        az cosmosdb update --resource-group $resourceGroupName --name $accountName --default-identity "SystemAssignedIdentity"
    
  4. Volitelně můžete z zásad přístupu azure Key Vault odebrat identitu první strany azure Cosmos DB.

Použití spravované identity přiřazené uživatelem

  1. Při vytváření nových zásad přístupu v účtu Azure Key Vault, jak je popsáno výše, použijte Object ID spravovanou identitu, kterou chcete použít místo identity první strany azure Cosmos DB.

  2. Při vytváření účtu Azure Cosmos DB musíte povolit spravovanou identitu přiřazenou uživatelem a určit, že chcete tuto identitu použít při přístupu k šifrovacím klíčům v Azure Key Vault. Můžete to udělat:

    • v šabloně Azure Resource Manager:
    {
        "type": "Microsoft.DocumentDB/databaseAccounts",
        "identity": {
            "type": "UserAssigned",
            "userAssignedIdentities": {
                "<identity-resource-id>": {}
            }
        },
        // ...
        "properties": {
            "defaultIdentity": "UserAssignedIdentity=<identity-resource-id>"
            "keyVaultKeyUri": "<key-vault-key-uri>"
            // ...
        }
    }
    
    • pomocí Azure CLI:
    resourceGroupName='myResourceGroup'
    accountName='mycosmosaccount'
    keyVaultKeyUri = 'https://<my-vault>.vault.azure.net/keys/<my-key>'
    
    az cosmosdb create \
        -n $accountName \
        -g $resourceGroupName \
        --key-uri $keyVaultKeyUri
        --assign-identity <identity-resource-id>
        --default-identity "UserAssignedIdentity=<identity-resource-id>"  
    

Použití CMK s průběžným zálohováním

Účet průběžného zálohování můžete vytvořit pomocí Azure CLI nebo šablony Azure Resource Manager.

V současné době se pro vytváření účtů průběžného zálohování podporuje jenom spravovaná identita přiřazená uživatelem.

Vytvoření účtu průběžného zálohování pomocí Azure CLI

resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
keyVaultKeyUri = 'https://<my-vault>.vault.azure.net/keys/<my-key>'

az cosmosdb create \
    -n $accountName \
    -g $resourceGroupName \
    --key-uri $keyVaultKeyUri \
    --locations regionName=<Location> \
    --assign-identity <identity-resource-id> \
    --default-identity "UserAssignedIdentity=<identity-resource-id>" \
    --backup-policy-type Continuous 

Vytvoření účtu průběžného zálohování pomocí šablony Azure Resource Manager

Když vytvoříte nový účet Azure Cosmos prostřednictvím šablony Azure Resource Manager:

  • Předejte identifikátor URI klíče Azure Key Vault, který jste zkopírovali dříve v vlastnosti keyVaultKeyUri v objektu properties.
  • Jako verzi rozhraní API použijte verzi rozhraní API 2021-11-11-15 nebo novější.

Důležité

Vlastnost musíte explicitně nastavit locations tak, aby se účet úspěšně vytvořil pomocí klíčů spravovaných zákazníkem, jak je znázorněno v předchozím příkladu.

 {
    "type": "Microsoft.DocumentDB/databaseAccounts",
    "identity": {
        "type": "UserAssigned",
        "backupPolicy": {"type": "Continuous"},
        "userAssignedIdentities": {
            "<identity-resource-id>": {}
        }
    },
    // ...
    "properties": {
        "defaultIdentity": "UserAssignedIdentity=<identity-resource-id>"
        "keyVaultKeyUri": "<key-vault-key-uri>"
        // ...
    }
}

Klíče spravované zákazníkem a dvojité šifrování

Při použití klíčů spravovaných zákazníkem se data uložená ve vašem účtu Azure Cosmos DB zašifrují dvakrát:

  • Jednou prostřednictvím výchozího šifrování prováděného s klíči spravovanými Microsoftem.
  • Jednou prostřednictvím dalšího šifrování prováděného s klíči spravovanými zákazníkem.

Mějte na paměti, že to platí jenom pro hlavní transakční úložiště Azure Cosmos DB. Některé funkce zahrnují interní replikaci dat do druhé úrovně úložiště, kde není poskytováno dvojité šifrování, i když používáte klíče spravované zákazníkem. Patří k nim:

Obměna klíčů

Obměně klíče spravovaného zákazníkem používaným vaším účtem Azure Cosmos můžete provést dvěma způsoby.

  • Vytvořte novou verzi klíče, která se aktuálně používá v Azure Key Vault:

    Create a new key version

  • Prohoďte klíč, který se aktuálně používá s úplně jiným kódem, aktualizací identifikátoru URI klíče ve vašem účtu. V Azure Portal přejděte do svého účtu Azure Cosmos a v nabídce vlevo vyberte Šifrování dat:

    The Data Encryption menu entry

    Pak identifikátor URI klíče nahraďte novým klíčem, který chcete použít, a vyberte Uložit:

    Update the key URI

    Tady je postup, jak dosáhnout stejného výsledku v PowerShellu:

    $resourceGroupName = "myResourceGroup"
    $accountName = "mycosmosaccount"
    $newKeyUri = "https://<my-vault>.vault.azure.net/keys/<my-new-key>"
    
    $account = Get-AzResource -ResourceGroupName $resourceGroupName -Name $accountName `
        -ResourceType "Microsoft.DocumentDb/databaseAccounts"
    
    $account.Properties.keyVaultKeyUri = $newKeyUri
    
    $account | Set-AzResource -Force
    

Předchozí klíč nebo verze klíče je možné zakázat poté, co protokoly auditu Azure Key Vault nezobrazují aktivitu z Azure Cosmos DB pro tento klíč nebo verzi klíče. Po 24 hodinách obměně klíčů by se neměla provádět žádná další aktivita u předchozího klíče nebo verze klíče.

Zpracování chyb

Pokud používáte klíče spravované zákazníkem v Azure Cosmos DB, azure Cosmos DB vrátí podrobnosti o chybě spolu s dílčím stavovým kódem HTTP v odpovědi. Pomocí tohoto dílčího stavového kódu můžete ladit původní příčinu problému. Seznam podporovaných dílčích stavových kódů HTTP najdete v článku o stavových kódech HTTP pro Azure Cosmos DB.

Nejčastější dotazy

Je potřeba účtovat další poplatky za povolení klíčů spravovaných zákazníkem?

Ne, za tuto funkci se neúčtují žádné poplatky.

Jaký vliv mají klíče spravované zákazníkem na plánování kapacity?

Při použití klíčů spravovaných zákazníkem se jednotky žádostí spotřebované vašimi databázovými operacemi zobrazí zvýšení, aby odráželo další zpracování potřebné k šifrování a dešifrování dat. To může vést k mírně vyššímu využití zřízené kapacity. Pokyny najdete v následující tabulce:

Typ operace Zvýšení jednotky žádosti
Čtení bodů (načítání položek podle jejich ID) + 5 % na operaci
Jakákoli operace zápisu + 6 % na operaci
Přibližně + 0,06 RU na indexovanou vlastnost
Dotazy, kanál změn čtení nebo konfliktní informační kanál + 15 % na operaci

Jaká data se šifrují pomocí klíčů spravovaných zákazníkem?

Všechna data uložená ve vašem účtu Azure Cosmos se šifrují pomocí klíčů spravovaných zákazníkem s výjimkou následujících metadat:

Podporují se klíče spravované zákazníkem pro stávající účty Azure Cosmos?

Tato funkce je aktuálně dostupná jenom pro nové účty.

Je možné používat klíče spravované zákazníkem ve spojení s analytickým úložištěm Azure Cosmos DB?

Ano, Azure Synapse Link podporuje konfiguraci klíčů spravovaných zákazníkem pouze pomocí spravované identity účtu Azure Cosmos DB. Před povolením Azure Synapse odkazu na váš účet azure musíte použít spravovanou identitu účtu Azure Cosmos DB ve svých zásadách přístupu k Azure Key Vault.

Existuje plán podpory jemněji členitosti než klíče na úrovni účtu?

V současné době ne, ale klíče na úrovni kontejneru se považují za.

Jak zjistím, jestli jsou v účtu Azure Cosmos povolené klíče spravované zákazníkem?

V Azure Portal přejděte do svého účtu Azure Cosmos a v levé nabídce sledujte položku Šifrování dat. Pokud tato položka existuje, jsou pro váš účet povolené klíče spravované zákazníkem:

The Data Encryption menu entry

Můžete také programově načíst podrobnosti o účtu Azure Cosmos a vyhledat přítomnost keyVaultKeyUri vlastnosti. Podívejte se na výše uvedené způsoby, jak to udělat v PowerShellu a pomocí Azure CLI.

Jak mají klíče spravované zákazníkem vliv na pravidelné zálohování?

Azure Cosmos DB přijímá pravidelné a automatické zálohy dat uložených ve vašem účtu. Tato operace zálohuje šifrovaná data.

K úspěšnému obnovení pravidelné zálohy jsou nezbytné následující podmínky:

  • Šifrovací klíč, který jste použili v době zálohování, je povinný a musí být dostupný v Azure Key Vault. To znamená, že nebyly provedeny žádné odvolání a verze klíče, který byl použit v době zálohování, je stále povolen.
  • Pokud jste použili spravovanou identitu přiřazenou systémem v zásadách přístupu azure Key Vault zdrojového účtu, musíte před obnovením dat dočasně udělit přístup k identitě azure Cosmos DB. Důvodem je to, že spravovaná identita přiřazená systémem je specifická pro účet a nedá se v cílovém účtu znovu použít. Po úplném obnovení dat do cílového účtu můžete nastavit požadovanou konfiguraci identity a odebrat identitu první strany ze zásad přístupu Key Vault.

Jak mají klíče spravované zákazníkem vliv na průběžné zálohování?

Azure Cosmos DB nabízí možnost konfigurovat průběžné zálohování ve vašem účtu. Díky průběžným zálohám můžete data obnovit k libovolnému bodu v čase během posledních 30 dnů. Pokud chcete používat průběžné zálohování na účtu, ve kterém jsou povolené klíče spravované zákazníkem, musíte použít spravovanou identitu přiřazenou uživatelem v zásadách přístupu Key Vault. Identita první strany azure Cosmos DB nebo spravovaná identita přiřazená systémem se v současné době nepodporuje u účtů pomocí průběžných záloh.

K úspěšnému obnovení k určitému bodu v čase jsou nezbytné následující podmínky:

  • Šifrovací klíč, který jste použili v době zálohování, je povinný a musí být dostupný v Azure Key Vault. To znamená, že nebyly provedeny žádné odvolání a verze klíče, který byl použit v době zálohování, je stále povolen.
  • Musíte zajistit, aby spravovaná identita přiřazená uživatelem původně použitá ve zdrojovém účtu byla deklarována v zásadách přístupu Key Vault.

Důležité

Pokud před odstraněním účtu odvoláte šifrovací klíč, záloha vašeho účtu může zmeškat data zapsaná do 1 hodiny před zrušením.

Návody odvolat šifrovací klíč?

Odvolání klíče se provádí zakázáním nejnovější verze klíče:

Disable a key's version

Pokud chcete odvolat všechny klíče z instance Azure Key Vault, můžete odstranit zásady přístupu udělené instančnímu objektu Azure Cosmos DB:

Deleting the access policy for the Azure Cosmos DB principal

Jaké operace jsou k dispozici po odvolání klíče spravovaného zákazníkem?

Jedinou operací, která je možná v případech, kdy byl šifrovací klíč odvolán, je odstranění účtu.

Další kroky