Partilhar via


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

APLICA-SE A: NoSQL MongoDB Cassandra Gremlin Tabela

Consulte o link Configurar chaves gerenciadas pelo cliente com o Azure Key Vault

Nota

Atualmente, as chaves gerenciadas pelo cliente estão disponíveis apenas para novas contas do Azure Cosmos DB. Você deve configurá-los durante a criação da conta.

Registrar o provedor de recursos do Azure Cosmos DB para sua assinatura do Azure

  1. Entre no portal do Azure, vá para sua assinatura do Azure e selecione Provedores de recursos na guia Configurações:

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

  2. Procure o provedor de recursos Microsoft.DocumentDB . Verifique se o provedor de recursos já está marcado como registrado. Caso contrário, escolha o provedor de recursos e selecione Registrar:

    Captura de tela da opção Registrar para o provedor de recursos Microsoft.DocumentDB.

Configurar o Azure Managed HSM Key Vault

O uso de chaves gerenciadas pelo cliente com o Azure Cosmos DB exige que você defina duas propriedades na instância do Cofre de Chaves do Azure que planeja usar para hospedar suas chaves de criptografia: Soft Delete e Purge Protection.

Como a exclusão suave está ativada por padrão, somente a proteção contra limpeza deve ser habilitada. Ao criar seu HSM gerenciado, use 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 você estiver usando uma instância existente do Azure Managed HSM Key Vault, poderá verificar se essas propriedades estão habilitadas examinando a seção Propriedades com o seguinte comando:

az keyvault show $hsmName $rgName

Se a proteção contra limpeza não estiver ativada, o seguinte comando poderá ser usado:

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 HSM gerenciado, consulte o seguinte Azure Key Vault

Criando a chave de criptografia e atribuindo as funções correspondentes

Uma vez que o HSM gerenciado tenha sido ativado, a chave que será usada para a conta CMK precisa ser criada. Para isso, a função "Managed HSM Crypto User" é atribuída ao administrador. Para ler mais sobre como o RBAC (controle de acesso baseado em função) funciona com o HSM gerenciado, consulte os seguintes artigos: Funções internas do RBAC local do HSM gerenciado - Azure Key Vault | Controle 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 correspondente precisa ser atribuída à ID Principal do Cosmos DB ou à Identidade Gerenciada do Azure para provisionar a conta. A função "Managed HSM Crypto Service Encryption User" é usada porque tem as únicas três permissões necessárias para trabalhar com uma conta CMK, sendo: get, wrap e unwrap. Essas permissões também têm escopo para serem úteis apenas nas chaves armazenadas no HSM gerenciado do Azure.

Sem identidade gerenciada 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 gerenciada 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

Isso provisionará uma conta CMK do Cosmos DB com uma chave armazenada em um Cofre de Chaves HSM Gerenciado do Azure.

Mudar para a identidade gerida atribuída ao sistema.

O Cosmos DB suporta o uso de uma identidade gerenciada atribuída ao sistema para uma conta CMK Cosmos DB. Para obter mais informações sobre a CMK de identidade gerenciada atribuída ao sistema, consulte: Configurar chaves gerenciadas pelo cliente para sua conta do Azure Cosmos DB

Execute os seguintes comandos para alternar da identidade padrão para a identidade gerenciada atribuída ao 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 observação opcional, a atribuição de função original à ID principal do Cosmos DB ou à Identidade Gerenciada do Azure pode ser removida.

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

Próximos passos