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

APLICA-SE A: NoSQL MongoDB Cassandra Gremlin Tabela

Os dados armazenados em sua conta do Azure Cosmos DB são automaticamente e perfeitamente criptografados com chaves gerenciadas pela Microsoft (chaves gerenciadas pelo serviço). Opcionalmente, você pode optar por adicionar uma segunda camada de criptografia com chaves gerenciadas pelo cliente (chaves gerenciadas pelo cliente ou CMK).

Diagrama das camadas de criptografia em torno dos dados do cliente.

Você deve armazenar chaves gerenciadas pelo cliente no Cofre de Chaves do Azure e fornecer uma chave para cada conta do Azure Cosmos DB habilitada com chaves gerenciadas pelo cliente. Esta chave é utilizada para encriptar todos os dados armazenados nessa conta.

Nota

Se desejar habilitar chaves gerenciadas pelo cliente em suas contas existentes do Azure Cosmos DB, consulte o link aqui para obter mais detalhes

Aviso

Os seguintes nomes de campo são reservados nas tabelas da API Cassandra em contas que usam chaves gerenciadas pelo cliente:

  • id
  • ttl
  • _ts
  • _etag
  • _rid
  • _self
  • _attachments
  • _epk

Quando as Chaves gerenciadas pelo cliente não estão habilitadas, apenas os nomes de campo que começam com __sys_ são reservados.

Pré-requisitos

Registrar o provedor de recursos do Azure Cosmos DB

Se o provedor de recursos Microsoft.DocumentDB ainda não estiver registrado, você deverá registrar esse provedor como uma primeira etapa.

  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 sua instância do Azure Key Vault

Importante

Sua instância do Azure Key Vault deve estar acessível por meio de acesso à rede pública ou permitir que serviços confiáveis da Microsoft ignorem seu firewall. Uma instância que é exclusivamente acessível por meio de pontos de extremidade privados não pode ser usada para hospedar suas chaves gerenciadas pelo cliente.

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.

  1. Se você criar uma nova instância do Azure Key Vault, habilite estas propriedades durante a criação:

    Captura de ecrã das opções do Azure Key Vault, incluindo a proteção de eliminação suave e de limpeza.

  2. Se estiver a utilizar uma instância existente do Azure Key Vault, pode verificar se estas propriedades estão ativadas consultando a secção Propriedades no portal do Azure. Se alguma dessas propriedades não estiver habilitada, consulte as seções "Habilitando exclusão suave" e "Habilitando a proteção contra limpeza" em um dos seguintes artigos:

Escolher o modelo de segurança preferido

Depois que a proteção contra limpeza e a exclusão suave tiverem sido habilitadas, na guia política de acesso, você poderá escolher seu modelo de permissão preferido para usar. As políticas de acesso são definidas por padrão, mas o controle de acesso baseado em função do Azure também é suportado.

As permissões necessárias devem ser dadas para permitir que o Cosmos DB use sua chave de criptografia. Esta etapa varia dependendo se o Cofre da Chave do Azure está usando políticas de acesso ou controle de acesso baseado em função.

Nota

É importante observar que apenas um modelo de segurança pode estar ativo por vez, portanto, não há necessidade de semear o controle de acesso baseado em função se o Cofre de Chaves do Azure estiver definido para usar políticas de acesso e vice-versa)

Adicionar uma política de acesso

Nessa variação, use a entidade de segurança do Azure Cosmos DB para criar uma política de acesso com as permissões apropriadas.

  1. No portal do Azure, vá para a instância do Cofre de Chaves do Azure que você planeja usar para hospedar suas chaves de criptografia. Selecione Políticas de Acesso no menu à esquerda:

    Captura de ecrã da opção Políticas do Access no menu de navegação de recursos.

  2. Selecione + Adicionar Política de Acesso.

  3. No menu suspenso Permissões de chave, selecione Get, Unwrap Key e Wrap Key permissions:

    Captura de ecrã das permissões da política de acesso, incluindo Get, Unwrap key e Wrap key.

  4. Em Selecionar entidade de segurança, selecione Nenhuma selecionada.

  5. Pesquise a entidade de segurança do Azure Cosmos DB e selecione-a (para facilitar a localização, você também pode pesquisar por ID do aplicativo: para qualquer região do Azure, a232010e-820c-4083-83bb-3ace5fc29d0b exceto regiões do Azure Government onde a ID do aplicativo está 57506a73-e302-42a9-b869-6f12d9ec29e9).

    Gorjeta

    Isso registra a identidade de primeira parte do Azure Cosmos DB em sua política de acesso ao Cofre da Chave do Azure. Se a entidade de segurança do Azure Cosmos DB não estiver na lista, talvez seja necessário registrar novamente o provedor de recursos Microsoft.DocumentDB.

  6. Escolha Selecionar na parte inferior.

    Captura de ecrã da opção Selecionar entidade na página Adicionar política de acesso.

  7. Selecione Adicionar para adicionar a nova política de acesso.

  8. Selecione Salvar na instância do Cofre da Chave para salvar todas as alterações.

Adicionando funções de controle de acesso baseadas em função

  1. No portal do Azure, vá para a instância do Cofre de Chaves do Azure que você planeja usar para hospedar suas chaves de criptografia. Selecione Controle de acesso (IAM) no menu à esquerda e selecione Conceder acesso a este recurso.

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

    Captura de ecrã da opção Conceder acesso a este recurso na página Controlo de acesso.

  2. Pesquise a "função de Administrador do Cofre de Chaves" e atribua-a a si mesmo. Esta tarefa é feita pesquisando primeiro o nome da função na lista e, em seguida, clicando na guia "Membros ". Uma vez na guia, selecione a opção "Usuário, grupo ou entidade de serviço" no rádio e, em seguida, procure sua conta do Azure. Uma vez selecionada a conta, a função pode ser atribuída.

    Captura de ecrã da função de administrador do Cofre de chaves nos resultados da pesquisa.

    Captura de ecrã de uma atribuição de função na página Controlo de acesso.

  3. Em seguida, as permissões necessárias devem ser atribuídas ao principal do Cosmos DB. Então, como a última atribuição de função, vá para a página de atribuição, mas desta vez procure a função "Key Vault Crypto Service Encryption User" e na guia de membros procure o principal do Cosmos DB. Para localizar a entidade de segurança, procure a entidade de segurança do Azure Cosmos DB e selecione-a.

    Captura de tela da entidade de segurança do Azure Cosmos DB sendo atribuída a uma permissão.

    Importante

    Na região Governo do Azure, a ID do aplicativo é 57506a73-e302-42a9-b869-6f12d9ec29e9.

  4. Selecione Rever + atribuir e a função será atribuída ao Cosmos DB.

Validar se as funções foram definidas corretamente

Em seguida, use a página de controle de acesso para confirmar se todas as funções foram configuradas corretamente.

  1. Depois que as funções tiverem sido atribuídas, selecione "Exibir acesso a este recurso" na página do IAM de controle de acesso para verificar se tudo foi definido corretamente.

    Captura de ecrã da opção Ver acesso ao recurso na página Controlo de acesso.

  2. Na página, defina o escopo como "este recurso" e verifique se você tem a função de Administrador do Cofre de Chaves e se a entidade do Cosmos DB tem a função de Usuário de Criptografia de Criptografia do Cofre de Chaves.

    Captura de tela da opção de ajuste de escopo para uma consulta de atribuição de função.

Gerar uma chave no Azure Key Vault

Aqui, crie uma nova chave usando o Azure Key Vault e recupere o identificador exclusivo.

  1. No portal do Azure, vá para a instância do Cofre da Chave do Azure que você planeja usar para hospedar suas chaves de criptografia. Em seguida, selecione Teclas no menu à esquerda:

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

  2. Selecione Gerar/Importar, forneça um nome para a nova chave e selecione um tamanho de chave RSA. Um mínimo de 3072 é recomendado para melhor segurança. Em seguida, selecione Criar:

    Captura de ecrã da caixa de diálogo para criar uma nova chave.

    Gorjeta

    Como alternativa, você pode usar a CLI do Azure para gerar uma chave com:

    az keyvault key create \
        --vault-name <name-of-key-vault> \
        --name <name-of-key>
    

    Para obter mais informações sobre como gerenciar um cofre de chaves com a CLI do Azure, consulte gerenciar o Cofre da Chave do Azure com a CLI do Azure.

  3. Depois que a chave for criada, selecione a chave recém-criada e, em seguida, sua versão atual.

  4. Copie o identificador de chave da chave, exceto a parte após a última barra para frente:

    Captura de ecrã do campo identificador de chave e da ação de cópia.

Criar uma nova conta do Azure Cosmos DB

Crie uma nova conta do Azure Cosmos DB usando o portal do Azure ou a CLI do Azure.

Ao criar uma nova conta do Azure Cosmos DB no portal do Azure, escolha Chave gerenciada pelo cliente na etapa Criptografia . No campo URI da chave, cole o identificador de URI/chave da chave do Cofre da Chave do Azure que você copiou da etapa anterior:

Captura de ecrã da página Encriptação com um URI de chave gerido personalizado configurado.

Usando uma identidade gerenciada na política de acesso do Cofre da Chave do Azure

Essa política de acesso garante que suas chaves de criptografia possam ser acessadas pela sua conta do Azure Cosmos DB. A política de acesso é implementada concedendo acesso a uma identidade específica do Microsoft Entra. Há suporte para dois tipos de identidades:

  • A identidade de primeira parte do Azure Cosmos DB pode ser usada para conceder acesso ao serviço Azure Cosmos DB.
  • A identidade gerenciada da sua conta do Azure Cosmos DB pode ser usada para conceder acesso à sua conta especificamente.

Não disponível

Use chaves gerenciadas pelo cliente com backup contínuo

Você pode criar uma conta de backup contínuo usando a CLI do Azure ou um modelo do Azure Resource Manager.

Atualmente, apenas a identidade gerenciada atribuída pelo usuário é suportada para a criação de contas de backup contínuo.

Depois que a conta for criada, você poderá atualizá-la para a identidade gerenciada atribuída ao sistema.

Como alternativa, o usuário também pode criar uma identidade do sistema com o modo de backup periódico primeiro e, em seguida, migrar a conta para o modo de backup contínuo usando estas instruções Migrar uma conta do Azure Cosmos DB do modo de backup periódico para o modo de backup contínuo

Não disponível

Restaurar uma conta contínua configurada com identidade gerenciada

Uma identidade atribuída pelo usuário é necessária na solicitação de restauração porque a identidade gerenciada da conta de origem (identidades atribuídas pelo usuário e atribuídas pelo sistema) não pode ser transferida automaticamente para a conta do banco de dados de destino.

Não disponível

Chaves gerenciadas pelo cliente e criptografia dupla

Os dados que você armazena em sua conta do Azure Cosmos DB ao usar chaves gerenciadas pelo cliente acabam sendo criptografados duas vezes:

  • Uma vez através da criptografia padrão realizada com chaves gerenciadas pela Microsoft.
  • Uma vez através da criptografia extra realizada com chaves gerenciadas pelo cliente.

A criptografia dupla só se aplica ao armazenamento transacional principal do Azure Cosmos DB. Alguns recursos envolvem a replicação interna de seus dados para um segundo nível de armazenamento onde a criptografia dupla não é fornecida, mesmo com chaves gerenciadas pelo cliente. Estas funcionalidades incluem:

Rotação de chaves

A rotação da chave gerenciada pelo cliente usada pela sua conta do Azure Cosmos DB pode ser feita de duas maneiras.

  • Crie uma nova versão da chave atualmente usada no Cofre de Chaves do Azure:

    Captura de ecrã da opção Nova Versão na página Versões do portal do Azure.

  • Troque a chave usada atualmente por outra atualizando o URI da chave na sua conta. No portal do Azure, vá para sua conta do Azure Cosmos DB e selecione Criptografia de Dados no menu à esquerda:

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

    Em seguida, substitua o URI da chave pela nova chave que deseja usar e selecione Salvar:

    Captura de ecrã da opção Guardar na página Chave.

    Veja como obter o mesmo resultado no 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
    

A chave ou versão de chave anterior pode ser desabilitada depois que os logs de auditoria do Cofre de Chaves do Azure não mostram mais a atividade do Azure Cosmos DB nessa chave ou versão de chave. Nenhuma atividade adicional deve ocorrer na chave anterior ou na versão da chave após 24 horas de rotação da chave.

Processamento de erros

Se houver erros com chaves gerenciadas pelo cliente no Azure Cosmos DB, o Azure Cosmos DB retornará os detalhes do erro junto com um código de substatus HTTP na resposta. Você pode usar o código de substatus HTTP para depurar a causa raiz do problema. Consulte o artigo Códigos de status HTTP para o Azure Cosmos DB para obter a lista de códigos de substatus HTTP suportados.

Perguntas mais frequentes

Aqui estão incluídas perguntas frequentes sobre como configurar chaves gerenciadas pelo cliente no Azure Cosmos DB.

Há mais cobranças para habilitar chaves gerenciadas pelo cliente?

Não, não há nenhum custo para ativar esse recurso.

Como as chaves gerenciadas pelo cliente influenciam o planejamento de capacidade?

As unidades de solicitação consumidas por suas operações de banco de dados veem um aumento para refletir o processamento extra necessário para executar a criptografia e a descriptografia de seus dados ao usar chaves gerenciadas pelo cliente. O consumo extra de RU pode levar a uma utilização ligeiramente maior da capacidade provisionada. Use esta tabela para orientação:

Tipo de operação Solicitar aumento de unidade
Leituras pontuais (buscar itens por sua ID) + 5% por operação
Qualquer operação de gravação + 6% por operação | Aproximadamente + 0,06 RU por propriedade indexada
Consultas, feed de alterações de leitura ou feed de conflitos + 15% por operação

Quais dados são criptografados com as chaves gerenciadas pelo cliente?

Todos os dados armazenados em sua conta do Azure Cosmos DB são criptografados com as chaves gerenciadas pelo cliente, exceto os seguintes metadados:

As chaves gerenciadas pelo cliente são suportadas para contas existentes do Azure Cosmos DB?

Atualmente, esse recurso está disponível apenas para novas contas.

É possível usar chaves gerenciadas pelo cliente com o repositório analítico do Azure Cosmos DB?

Sim, o Azure Synapse Link suporta apenas a configuração de chaves gerenciadas pelo cliente usando a identidade gerenciada da sua conta do Azure Cosmos DB. Você deve usar a identidade gerenciada da sua conta do Azure Cosmos DB em sua política de acesso do Cofre da Chave do Azure antes de habilitar o Azure Synapse Link em sua conta. Para obter um guia de instruções sobre como habilitar a identidade gerenciada e usá-la em uma política de acesso, consulte acessar o Cofre da Chave do Azure a partir do Azure Cosmos DB usando uma identidade gerenciada.

Existe um plano para suportar uma granularidade mais fina do que as chaves no nível da conta?

Atualmente, não, mas as chaves no nível do contêiner estão sendo consideradas.

Como posso saber se as chaves gerenciadas pelo cliente estão habilitadas na minha conta do Azure Cosmos DB?

No portal do Azure, vá para sua conta do Azure Cosmos DB e observe a entrada de Criptografia de Dados no menu à esquerda, se essa entrada existir, as chaves gerenciadas pelo cliente serão habilitadas em sua conta:

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

Você também pode buscar programaticamente os detalhes de sua conta do Azure Cosmos DB e procurar a keyVaultKeyUri presença da propriedade.

Como as chaves gerenciadas pelo cliente afetam os backups periódicos?

O Azure Cosmos DB faz backups regulares e automáticos dos dados armazenados em sua conta. Esta operação faz backup dos dados criptografados.

As seguintes condições são necessárias para restaurar com êxito um backup periódico:

  • A chave de criptografia que você usou no momento do backup é necessária e deve estar disponível no Cofre de Chaves do Azure. Essa condição requer que nenhuma revogação tenha sido feita e que a versão da chave que foi usada no momento do backup ainda esteja habilitada.
  • Se você usou uma identidade gerenciada atribuída ao sistema na política de acesso, conceda temporariamente acesso à identidade de primeira parte do Azure Cosmos DB antes de restaurar seus dados. Esse requisito existe porque uma identidade gerenciada atribuída ao sistema é específica de uma conta e não pode ser reutilizada na conta de destino. Depois que os dados forem totalmente restaurados para a conta de destino, você poderá definir a configuração de identidade desejada e remover a identidade de primeira parte da política de acesso ao Cofre de Chaves.

Como as chaves gerenciadas pelo cliente afetam os backups contínuos?

O Azure Cosmos DB oferece a opção de configurar backups contínuos em sua conta. Com backups contínuos, você pode restaurar seus dados para qualquer point-in-time nos últimos 30 dias. Para usar backups contínuos em uma conta onde as chaves gerenciadas pelo cliente estão habilitadas, você deve usar uma identidade gerenciada atribuída pelo sistema ou pelo usuário na política de acesso ao Cofre de Chaves. Atualmente, não há suporte para identidades de primeira parte do Azure Cosmos DB em contas que usam backups contínuos.

Etapas de pré-requisito para contas habilitadas para Chaves Gerenciadas pelo Cliente para atualizar a identidade atribuída pelo usuário.

  • Adicione uma identidade atribuída pelo usuário à conta do Cosmos DB e conceda permissões na política de acesso ao cofre de chaves.
  • Defina a identidade atribuída pelo usuário como padrão por meio da CLI ou ARM do Azure.
az cosmosdb update --resource-group MyResourceGroup --name MyAccountName --default-identity UserAssignedIdentity=/subscriptions/MySubscriptionId/resourcegroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyUserAssignedIdentity

As seguintes condições são necessárias para executar com êxito uma restauração point-in-time:

  • A chave de criptografia que você usou no momento do backup é necessária e deve estar disponível no Cofre de Chaves do Azure. Esse requisito significa que nenhuma revogação foi feita e a versão da chave que foi usada no momento do backup ainda está habilitada.
  • Você deve garantir que a identidade gerenciada atribuída pelo usuário originalmente usada na conta de origem ainda esteja declarada na política de acesso ao Cofre da Chave.

Importante

Se você revogar a chave de criptografia antes de excluir sua conta, o backup da sua conta poderá perder os dados gravados até 1 hora antes da revogação ser feita.

Como posso revogar uma chave de encriptação?

A revogação da chave é feita desativando a versão mais recente da chave:

Captura de ecrã de uma versão de chave personalizada desativada.

Como alternativa, para revogar todas as chaves de uma instância do Cofre de Chaves do Azure, você pode excluir a política de acesso concedida à entidade de segurança do Azure Cosmos DB:

Captura de ecrã da opção Eliminar para uma política de acesso.

Quais operações estão disponíveis depois que uma chave gerenciada pelo cliente é revogada?

A única operação possível quando a chave de criptografia foi revogada é a exclusão da conta.

Atribua uma nova identidade gerenciada à conta de banco de dados restaurada para continuar acessando ou recuperando o acesso à conta de banco de dados

A Identidade Atribuída pelo Usuário está vinculada a uma conta especificada do Cosmos DB, sempre que atribuímos uma Identidade Atribuída pelo Usuário a uma conta, o ARM encaminha a solicitação para identidades de serviço gerenciado para fazer essa conexão. Atualmente, transferimos informações de identidade do usuário da conta do banco de dados de origem para a conta do banco de dados de destino durante a restauração (para restauração de backup contínua e periódica) de CMK + identidade atribuída pelo usuário,

Como os metadados de identidade são vinculados à conta do banco de dados de origem e a restauração do fluxo de trabalho não redefine o escopo da identidade para a conta do banco de dados de destino. Isso fará com que as contas de banco de dados restauradas fiquem em mau estado e fiquem inacessíveis depois que a conta de origem for excluída e o tempo de renovação da identidade expirar.

Etapas para atribuir uma nova identidade gerenciada:

  1. Crie uma nova identidade gerenciada atribuída pelo usuário.
  2. Conceda acesso à chave KeyVault a essa identidade.
  3. Atribua essa nova identidade à sua conta de banco de dados restaurada.

Próximos passos