Share via


Configurar chaves geridas pelo cliente para a sua conta do Azure Cosmos DB com o Azure Managed HSM Key Vault

APLICA-SE A: NoSQL MongoDB Cassandra Gremlin Tabela

Veja a ligação Configurar chaves geridas pelo cliente com o Azure Key Vault

Nota

Atualmente, as chaves geridas pelo cliente só estão disponíveis para novas contas do Azure Cosmos DB. Deve configurá-los durante a criação da conta.

Registar o fornecedor de recursos do Azure Cosmos DB para a sua subscrição do Azure

  1. Inicie sessão no portal do Azure, aceda à sua subscrição do Azure e selecione Fornecedores de recursos no separador Definições:

    Captura de ecrã da opção Fornecedores de recursos no menu de navegação de recursos.

  2. Procure o fornecedor de recursos Microsoft.DocumentDB . Verifique se o fornecedor de recursos já está marcado como registado. Caso contrário, escolha o fornecedor de recursos e selecione Registar:

    Captura de ecrã a mostrar a opção Registar do fornecedor de recursos Microsoft.DocumentDB.

Configurar o Key Vault do Azure Managed HSM

A utilização de chaves geridas pelo cliente com o Azure Cosmos DB requer que defina duas propriedades na instância do Azure Key Vault que planeia utilizar para alojar as chaves de encriptação: Eliminação Recuperável e Proteção contra Remoção.

Uma vez que a eliminação recuperável está ativada por predefinição, apenas a proteção de remoção tem de ser ativada. Ao criar o HSM gerido, utilize o seguinte comando da CLI:

objectId = az ad signed-in-user show --query id -o tsv
az keyvault create --hsm-name $hsmName --resource-group $rgName --location $location --enable-purge-protection true --administrators $objectId --retention-days 7

Se estiver a utilizar uma instância de Key Vault do Azure Managed HSM existente, pode verificar se estas propriedades estão ativadas ao consultar a secção Propriedades com o seguinte comando:

az keyvault show $hsmName $rgName

Se a proteção contra remoção não estiver ativada, pode utilizar o seguinte comando:

az keyvault update-hsm --enable-purge-protection true --hsm-name $hsmName --resource-group $rgName

Para obter mais informações sobre os comandos da CLI disponíveis para o HSM gerido, veja o seguinte Key Vault do Azure

Criar a chave de encriptação e atribuir as funções de correspondente

Assim que o HSM Gerido tiver sido ativado, a chave que vai ser utilizada para a conta CMK tem de ser criada. Para tal, a função "Utilizador Criptografo HSM Gerido" é atribuída ao administrador. Para ler mais sobre como o RBAC (controlo de acesso baseado em funções) funciona com o HSM Gerido, veja os seguintes artigos: Funções incorporadas do RBAC local do HSM Gerido – Azure Key Vault | Controlo de acesso do Microsoft Learn e do Azure Managed HSM | Microsoft Learn

objectId = az ad signed-in-user show --query id -o tsv
$keyName = "Name of your key"
az keyvault role assignment create --hsm-name $hsmName --role "Managed HSM Crypto User" --assignee $objectId --scope /keys
az keyvault key create --hsm-name $hsmName --name $keyName --ops wrapKey unwrapKey --kty RSA-HSM --size 3072

Agora que a chave foi criada, a função de correspondente tem de ser atribuída ao ID principal do Cosmos DB ou à Identidade Gerida do Azure para aprovisionar a conta. A função "Utilizador de Encriptação de Serviço Criptografo do HSM Gerido" é utilizada porque tem as únicas três permissões necessárias para trabalhar com uma conta CMK, sendo: obter, encapsular e desembrulhar. Estas permissões também são confinadas para serem úteis apenas nas chaves armazenadas no Azure Managed HSM.

Sem a identidade gerida do Azure:

$cosmosPrincipal = az ad sp show --id a232010e-820c-4083-83bb-3ace5fc29d0b --query id -o tsv
az keyvault role assignment create --hsm-name $hsmName --role "Managed HSM Crypto Service Encryption User" --assignee $cosmosPrincipal --scope /keys
$keyURI = "https://{0}.managedhsm.azure.net/keys/{1}" -f $hsmName, $keyName
az cosmosdb create -n $cosmosName -g $rgName --key-uri $keyURI

Com a identidade gerida do Azure:

$identityResourceID = az identity show -g $rgName -n $identityName --query id -o tsv
$identityPrincipal = az identity show -g $rgName -n $identityName --query principalId -o tsv
$defaultIdentity = "UserAssignedIdentity={0}" -f $identityResourceID
az keyvault role assignment create --hsm-name $hsmName --role "Managed HSM Crypto Service Encryption User" --assignee $cosmosPrincipal --scope /keys
$keyURI = "https://{0}.managedhsm.azure.net/keys/{1}" -f $hsmName, $keyName
az cosmosdb create -n $cosmosName -g $rgName --key-uri $keyURI --assign-identity $identityResourceID --default-identity $defaultIdentity

Esta ação aprovisionará uma conta CMK do Cosmos DB com uma chave armazenada num Key Vault do Azure Managed HSM.

Mudar para a identidade gerida atribuída pelo sistema.

O Cosmos DB suporta a utilização de uma identidade gerida atribuída pelo sistema para uma conta cmk do Cosmos DB. Para obter mais informações sobre a CMK de identidade gerida atribuída pelo sistema, veja: Configurar chaves geridas pelo cliente para a sua conta do Azure Cosmos DB

Execute os seguintes comandos para mudar da identidade predefinida para a identidade gerida atribuída pelo sistema:

az cosmosdb identity assign -n $cosmosName -g $rgName
$principalMSIId = az cosmosdb identity show -n $cosmosName -g $rgName --query principalId -o tsv
az keyvault role assignment create --hsm-name $hsmName --role "Managed HSM Crypto Service Encryption User" --assignee $principalMSIId --scope /keys
az cosmosdb update --resource-group $rgName --name $cosmosName --default-identity "SystemAssignedIdentity"

Como nota opcional, a atribuição de função original ao ID principal do Cosmos DB ou à Identidade Gerida do Azure pode ser removida.

az keyvault role assignment delete --hsm-name $hsmName --role "Managed HSM Crypto Service Encryption User" --assignee $cosmosPrincipal --scope /keys

Passos seguintes