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
Inicie sessão no portal do Azure, aceda à sua subscrição do Azure e selecione Fornecedores de recursos no separador Definições:
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:
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
- Saiba mais sobre a encriptação de dados no Azure Cosmos DB.
- Obtenha uma descrição geral do acesso seguro aos dados no Azure Cosmos DB.