Configurar chaves geridas pelo cliente para a sua conta do Azure Cosmos DB com o Azure Key Vault
APLICA-SE A: NoSQL
MongoDB
Cassandra
Gremlin
Tabela
Os dados armazenados na sua conta do Azure Cosmos DB são encriptados automaticamente e de forma totalmente integrada com chaves geridas pela Microsoft (chaves geridas pelo serviço). Opcionalmente, pode optar por adicionar uma segunda camada de encriptação com chaves que gere (chaves geridas pelo cliente ou CMK).
Tem de armazenar chaves geridas pelo cliente no Azure Key Vault e fornecer uma chave para cada conta do Azure Cosmos DB que esteja ativada com chaves geridas pelo cliente. Esta chave é utilizada para encriptar todos os dados armazenados nessa conta.
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.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
Registar o fornecedor de recursos do Azure Cosmos DB
Se o fornecedor de recursos Microsoft.DocumentDB ainda não estiver registado, deve registar este fornecedor como um primeiro passo.
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 a instância do Azure Key Vault
Importante
A instância do Azure Key Vault tem de estar acessível através do acesso à rede pública ou permitir que os serviços Microsoft fidedignos ignorem a firewall. Uma instância exclusivamente acessível através de pontos finais privados não pode ser utilizada para alojar as chaves geridas pelo cliente.
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.
Se criar uma nova instância do Azure Key Vault, ative estas propriedades durante a criação:
Se estiver a utilizar uma instância do Azure Key Vault existente, pode verificar se estas propriedades estão ativadas ao consultar a secção Propriedades no portal do Azure. Se alguma destas propriedades não estiver ativada, veja as secções "Ativar a eliminação recuperável" e "Ativar a Proteção contra Remoção" num dos seguintes artigos:
Escolher o modelo de segurança preferencial
Assim que a proteção contra remoção e a eliminação recuperável tiverem sido ativadas, no separador política de acesso, pode escolher o modelo de permissão preferencial a utilizar. As políticas de acesso são definidas por predefinição, mas o controlo de acesso baseado em funções do Azure também é suportado.
As permissões necessárias têm de ser dadas para permitir que o Cosmos DB utilize a sua chave de encriptação. Este passo varia consoante o Azure Key Vault esteja a utilizar políticas de acesso ou controlo de acesso baseado em funções.
Nota
É importante ter em atenção que apenas um modelo de segurança pode estar ativo de cada vez, pelo que não é necessário propagar o controlo de acesso baseado em funções se o Key Vault do Azure estiver definido para utilizar políticas de acesso e vice-versa)
Adicionar uma política de acesso
Nesta variação, utilize o principal do Azure Cosmos DB para criar uma política de acesso com as permissões adequadas.
A partir do portal do Azure, aceda à instância do Azure Key Vault que planeia utilizar para alojar as chaves de encriptação. Selecione Políticas de Acesso no menu esquerdo:
Selecione + Adicionar Política de Acesso.
No menu pendente Permissões de chaves , selecione Obter, Desembrulhar Chave e Moldar Permissões de Chave :
Em Selecionar principal, selecione Nenhum selecionado.
Procure o principal do Azure Cosmos DB e selecione-o (para facilitar a localização, também pode procurar por ID da aplicação:
a232010e-820c-4083-83bb-3ace5fc29d0b
para qualquer região do Azure, exceto Azure Government regiões onde o ID da aplicação é57506a73-e302-42a9-b869-6f12d9ec29e9
).Dica
Isto regista a identidade de primeira entidade do Azure Cosmos DB na sua política de acesso Key Vault do Azure. Se o principal do Azure Cosmos DB não estiver na lista, poderá ter de voltar a registar o fornecedor de recursos Microsoft.DocumentDB .
Selecione Selecionar na parte inferior.
Selecione Adicionar para adicionar a nova política de acesso.
Selecione Guardar na instância Key Vault para guardar todas as alterações.
Adicionar funções de controlo de acesso baseadas em funções
A partir do portal do Azure, aceda à instância do Azure Key Vault que planeia utilizar para alojar as chaves de encriptação. Selecione Controlo de acesso (IAM) no menu esquerdo e selecione Conceder acesso a este recurso.
Pesquise a "função de Administrador Key Vault" e atribua-a a si próprio. Esta atribuição é efetuada ao procurar primeiro o nome da função a partir da lista e, em seguida, ao clicar no separador "Membros ". Uma vez no separador, selecione a opção "Utilizador, grupo ou principal de serviço" no rádio e, em seguida, procure a sua conta do Azure. Assim que a conta estiver selecionada, a função pode ser atribuída.
Em seguida, as permissões necessárias têm de ser atribuídas ao principal do Cosmos DB. Por isso, tal como a última atribuição de função, aceda à página de atribuição, mas desta vez procure a função "Utilizador de Encriptação de Serviço criptoptografia" Key Vault e, no separador membros, procure o principal do Cosmos DB. Para localizar o principal, procure o principal do Azure Cosmos DB e selecione-o.
Importante
Na região Azure Government, o ID da aplicação é
57506a73-e302-42a9-b869-6f12d9ec29e9
.Selecione Rever + atribuir e a função será atribuída ao Cosmos DB.
Validar que as funções foram definidas corretamente
Em seguida, utilize a página de controlo de acesso para confirmar que todas as funções foram configuradas corretamente.
Assim que as funções tiverem sido atribuídas, selecione "Ver acesso a este recurso" na página Controlo de Acesso IAM para verificar se tudo foi definido corretamente.
Na página, defina o âmbito como "este recurso" e verifique se tem a função de Administrador Key Vault e que o principal do Cosmos DB tem a função utilizador Key Vault Criptoptografia.
Gerar uma chave no Azure Key Vault
Aqui, crie uma nova chave com o Azure Key Vault e obtenha o identificador exclusivo.
A partir do portal do Azure, aceda à instância do Azure Key Vault que planeia utilizar para alojar as chaves de encriptação. Em seguida, selecione Chaves no menu esquerdo:
Selecione Gerar/Importar, forneça um nome para a nova chave e selecione um tamanho de chave RSA. É recomendado um mínimo de 3072 para uma melhor segurança. Em seguida, selecione Criar:
Após a criação da chave, selecione a chave recentemente criada e, em seguida, a versão atual.
Copie o Identificador de Chave da chave, exceto a parte após a última barra para a frente:
Criar uma nova conta do Azure Cosmos DB
Crie uma nova conta do Azure Cosmos DB com o portal do Azure ou a CLI do Azure.
Quando cria uma nova conta do Azure Cosmos DB a partir do portal do Azure, selecione Chave gerida pelo cliente no passo Encriptação. No campo URI da Chave, cole o identificador de chave/URI da chave de Key Vault do Azure que copiou do passo anterior:
Utilizar uma identidade gerida na política de acesso do Azure Key Vault
Esta política de acesso garante que as chaves de encriptação podem ser acedidas pela sua conta do Azure Cosmos DB. A política de acesso é implementada ao conceder acesso a uma identidade específica do Azure Active Directory (AD). São suportados dois tipos de identidades:
- A identidade original do Azure Cosmos DB pode ser utilizada para conceder acesso ao serviço do Azure Cosmos DB.
- A identidade gerida da sua conta do Azure Cosmos DB pode ser utilizada para conceder acesso especificamente à sua conta.
Não disponível
Utilizar chaves geridas pelo cliente com cópia de segurança contínua
Pode criar uma conta de cópia de segurança contínua com a CLI do Azure ou um modelo do Azure Resource Manager.
Atualmente, apenas a identidade gerida atribuída pelo utilizador é suportada para a criação de contas de cópia de segurança contínuas.
Assim que a conta tiver sido criada, pode atualizar a identidade para a identidade gerida atribuída pelo sistema.
Nota
A identidade atribuída pelo sistema e o modo de cópia de segurança contínua estão atualmente em Pré-visualização Pública e podem mudar no futuro.
Em alternativa, o utilizador também pode criar uma identidade do sistema com o modo de cópia de segurança periódico primeiro e, em seguida, migrar a conta para o modo de cópia de segurança contínua com estas instruções Migrar uma conta do Azure Cosmos DB do modo de cópia de segurança periódica para o modo de cópia de segurança contínua
Não disponível
Restaurar uma conta contínua configurada com identidade gerida
É necessária uma identidade atribuída pelo utilizador no pedido de restauro porque a identidade gerida da conta de origem (identidades atribuídas pelo utilizador e atribuídas pelo sistema) não pode ser transferida automaticamente para a conta de base de dados de destino.
Chaves geridas pelo cliente e encriptação dupla
Os dados armazenados na sua conta do Azure Cosmos DB ao utilizar chaves geridas pelo cliente acabam por ser encriptados duas vezes:
- Uma vez através da encriptação predefinida executada com chaves geridas pela Microsoft.
- Uma vez através da encriptação extra executada com chaves geridas pelo cliente.
A encriptação dupla aplica-se apenas ao armazenamento transacional principal do Azure Cosmos DB. Algumas funcionalidades envolvem a replicação interna dos seus dados para uma segunda camada de armazenamento onde a encriptação dupla não é fornecida, mesmo com chaves geridas pelo cliente. Essas funcionalidades incluem:
Rotação de chaves
A rotação da chave gerida pelo cliente utilizada pela sua conta do Azure Cosmos DB pode ser feita de duas formas.
Crie uma nova versão da chave atualmente utilizada a partir do Azure Key Vault:
Troque a chave atualmente utilizada por outra diferente ao atualizar o URI da chave na sua conta. No portal do Azure, aceda à sua conta do Azure Cosmos DB e selecione Encriptação de Dados no menu esquerdo:
Em seguida, substitua o URI da Chave pela nova chave que pretende utilizar e selecione Guardar:
Eis como alcançar 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 versão anterior da chave ou chave pode ser desativada depois de os registos de auditoria do Azure Key Vault já não mostrarem atividade do Azure Cosmos DB nessa chave ou versão da chave. Não deve ocorrer mais atividade na versão anterior da chave ou da chave após 24 horas de rotação da chave.
Processamento de erros
Se existirem erros com chaves geridas pelo cliente no Azure Cosmos DB, o Azure Cosmos DB devolve os detalhes do erro juntamente com um código de subestado HTTP na resposta. Pode utilizar o código de subestado HTTP para depurar a causa raiz do problema. Veja o artigo Http Status Codes for Azure Cosmos DB (Códigos de Estado HTTP do Azure Cosmos DB) para obter a lista de códigos de subestado HTTP suportados.
Perguntas mais frequentes
Aqui estão incluídas as perguntas mais frequentes sobre a configuração de chaves geridas pelo cliente no Azure Cosmos DB.
Existem mais custos para ativar as chaves geridas pelo cliente?
Não, não há custos para ativar esta funcionalidade.
Como é que as chaves geridas pelo cliente influenciam o planeamento da capacidade?
As Unidades de Pedido consumidas pelas operações da base de dados veem um aumento para refletir o processamento adicional necessário para executar a encriptação e desencriptação dos seus dados ao utilizar chaves geridas pelo cliente. O consumo adicional de RUs pode levar a uma utilização ligeiramente maior da capacidade aprovisionada. Utilize esta tabela para obter orientações:
Tipo de operação | Aumento da Unidade de Pedido |
---|---|
Leituras pontuais (obtenção de itens pelo respetivo ID) | + 5% por operação |
Qualquer operação de escrita | + 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 |
Que dados são encriptados com as chaves geridas pelo cliente?
Todos os dados armazenados na sua conta do Azure Cosmos DB são encriptados com as chaves geridas pelo cliente, exceto para os seguintes metadados:
Os nomes das suas contas, bases de dados e contentores do Azure Cosmos DB
Os nomes dos seus procedimentos armazenados
Os caminhos de propriedade declarados nas políticas de indexação
Os valores das chaves de partição dos contentores
As chaves geridas pelo cliente são suportadas para contas existentes do Azure Cosmos DB?
Esta funcionalidade está atualmente disponível apenas para novas contas.
É possível utilizar chaves geridas pelo cliente com o arquivo analítico do Azure Cosmos DB?
Sim, o Azure Synapse Link só suporta a configuração de chaves geridas pelo cliente com a identidade gerida da sua conta do Azure Cosmos DB. Tem de utilizar a identidade gerida da sua conta do Azure Cosmos DB na política de acesso do Azure Key Vault antes de ativar o Azure Synapse Link na sua conta. Para obter um guia de procedimentos sobre como ativar a identidade gerida e utilizá-la numa política de acesso, veja Aceder ao Azure Key Vault a partir do Azure Cosmos DB com uma identidade gerida.
Existe algum plano para suportar uma granularidade mais fina do que as chaves ao nível da conta?
Atualmente não, mas as chaves ao nível do contentor estão a ser consideradas.
Como posso saber se as chaves geridas pelo cliente estão ativadas na minha conta do Azure Cosmos DB?
A partir do portal do Azure, aceda à sua conta do Azure Cosmos DB e procure a entrada Encriptação de Dados no menu esquerdo; se esta entrada existir, as chaves geridas pelo cliente estão ativadas na sua conta:
Também pode obter programaticamente os detalhes da sua conta do Azure Cosmos DB e procurar a presença da keyVaultKeyUri
propriedade.
Como é que as chaves geridas pelo cliente afetam as cópias de segurança periódicas?
O Azure Cosmos DB faz cópias de segurança regulares e automáticas dos dados armazenados na sua conta. Esta operação faz uma cópia de segurança dos dados encriptados.
As seguintes condições são necessárias para restaurar com êxito uma cópia de segurança periódica:
- A chave de encriptação que utilizou no momento da cópia de segurança é necessária e tem de estar disponível no Azure Key Vault. Esta condição requer que não tenha sido efetuada qualquer revogação e que a versão da chave utilizada no momento da cópia de segurança ainda esteja ativada.
- Se utilizou uma identidade gerida atribuída pelo sistema na política de acesso, conceda temporariamente acesso à identidade original do Azure Cosmos DB antes de restaurar os dados. Este requisito existe porque uma identidade gerida atribuída pelo sistema é específica de uma conta e não pode ser reutilizada na conta de destino. Assim que os dados forem totalmente restaurados para a conta de destino, pode definir a configuração de identidade pretendida e remover a identidade original da política de acesso Key Vault.
Como é que as chaves geridas pelo cliente afetam as cópias de segurança contínuas?
O Azure Cosmos DB dá-lhe a opção de configurar cópias de segurança contínuas na sua conta. Com as cópias de segurança contínuas, pode restaurar os seus dados para qualquer ponto anterior no tempo nos últimos 30 dias. Para utilizar cópias de segurança contínuas numa conta onde as chaves geridas pelo cliente estão ativadas, tem de utilizar uma identidade gerida atribuída pelo utilizador na política de acesso Key Vault. Atualmente, as identidades originais ou as identidades geridas atribuídas pelo sistema do Azure Cosmos DB não são suportadas em contas com cópias de segurança contínuas.
As seguintes condições são necessárias para efetuar com êxito um restauro para um ponto anterior no tempo:
- A chave de encriptação que utilizou no momento da cópia de segurança é necessária e tem de estar disponível no Azure Key Vault. Este requisito significa que não foi efetuada qualquer revogação e que a versão da chave utilizada no momento da cópia de segurança ainda está ativada.
- Tem de garantir que a identidade gerida atribuída pelo utilizador originalmente utilizada na conta de origem ainda é declarada na política de acesso Key Vault.
Importante
Se revogar a chave de encriptação antes de eliminar a sua conta, a cópia de segurança da sua conta poderá perder os dados escritos até 1 hora antes da revogação ser efetuada.
Como devo proceder para revogar uma chave de encriptação?
A revogação de chaves é feita ao desativar a versão mais recente da chave:
Em alternativa, para revogar todas as chaves de uma instância do Azure Key Vault, pode eliminar a política de acesso concedida ao principal do Azure Cosmos DB:
Que operações estão disponíveis depois de uma chave gerida pelo cliente ser revogada?
A única operação possível quando a chave de encriptação foi revogada é a eliminação da conta.
Atribuir uma nova identidade gerida à conta de base de dados restaurada para continuar a aceder ou recuperar o acesso à conta de base de dados
- Crie uma nova identidade gerida atribuída pelo utilizador.
- Conceda acesso à chave KeyVault a esta identidade.
- Atribua esta nova identidade à sua conta de base de dados restaurada.
Passos seguintes
- Saiba mais sobre a encriptação de dados no Azure Cosmos DB.