Gerenciar chaves de cliente com AWS KMS
Nesta página
- Acesso necessário
- Habilitar chaves gerenciadas pelo cliente com AWS KMS
- Exemplo
- Pré-requisitos
- Habilite para o acesso baseado em roles à sua chave de encriptação para um projeto
- Mude para o acesso baseado em roles à sua chave de encriptação para um projeto
- Habilitar o gerenciamento de chaves do cliente para um Atlas cluster
- Alterne sua chave mestra do cliente AWS
- Chave mestra MongoDB - Responsabilidade do MongoDB
- Seu AWS CMK - Sua responsabilidade
- Procedimento
- Reconfigurar região do AWS KMS durante uma interrupção
- Procedimento
- Tópicos relacionados
Observação
A partir da versão de 26 de janeiro de 2021, você deve usar funções da AWS IAM em vez de usuários do IAM para gerenciar o acesso às suas chaves de criptografia da AWS KMS para o gerenciamento de chaves do cliente
Ao mudar de usuários do AWS IAM para roles, certifique-se de que seu novo role tenha acesso à sua antiga chave mestra do cliente AWS.
Importante
Recurso Indisponível em Instâncias sem Servidor
Neste momento, as instâncias sem servidor não permitem essa funcionalidade. Para saber mais, consulte Limitações de instância sem servidor.
Você pode configurar seu projeto Atlas para utilizar uma função do AWS IAM para acessar suas chaves AWS KMS para criptografia em repouso. Você pode utilizar uma função existente ou criar uma nova função ao habilitar a criptografia em repouso para seu projeto.
Esta página aborda a configuração do gerenciamento de chaves do cliente em seu projeto Atlas para acesso baseado em role.
Se você ainda não habilitou a criptografia em repouso para seu projeto Atlas novo ou existente, siga o procedimento Habilitar acesso baseado em funções para sua chave de criptografia para um projeto para habilitar a criptografia em repouso para seu projeto Atlas. Se você tiver um projeto Atlas para o qual já tenha habilitado a criptografia em repouso e configurado o acesso baseado em credenciais às suas chaves de criptografia, siga o procedimento Alternar para acesso baseado em função à sua chave de criptografia para obter um procedimento do projeto para alternar para o acesso baseado em função às suas chaves de criptografia.
Você deve configurar o gerenciamento de chave do cliente para o projeto Atlas antes de habilitá-lo em clusters neste projeto.
Acesso necessário
Para configurar o gerenciamento de chaves do cliente, você deve ter acessoProject Owner
ao projeto.
Os usuários com acesso Organization Owner
devem se adicionar ao projeto como um Project Owner
.
Habilitar chaves gerenciadas pelo cliente com AWS KMS
O gerenciamento de chaves do cliente no Atlas segue um processo chamado criptografia de envelope. Esse processo cria várias camadas de criptografia ao criptografar uma chave com outra chave. Para habilitar o gerenciamento de chaves do cliente, o Atlas usa as seguintes chaves de criptografia:
Customer-Managed Key (CMK)
As chaves gerenciadas pelo cliente são chaves de criptografia que você cria, possui e gerencia no AWS KMS. Você cria a chave mestra do cliente no AWS KMS e a conecta ao Atlas no nível de projeto. Para saber mais sobre as chave mestra do clientes usadas no AWS KMS, consulte a documentação do AWS KMS.
O Atlas usa essa chave somente para criptografar as chaves mestras do MongoDB.
MongoDB Master Key
Cada nó em seu cluster Atlas cria uma Chave Mestre MongoDB . As chaves mestres MongoDB são chaves de criptografia que um MongoDB Server usa para criptografar as chaves de criptografia por banco de dados. O Atlas salva uma cópia criptografada da chave localmente.
Essa chave é criptografada com a chave mestra do cliente e criptografa as chaves de criptografia por banco de dados.
Per-Database Encryption Key
Cada nó no cluster do Atlas também cria uma chave de criptografia por cada banco de dados no seu cluster. O Atlas usa essas chaves para ler e gravar dados através do WiredTiger, que também criptografa e armazena essas chaves.
Essa chave é criptografada com a chave mestra MongoDB.
Exemplo
Considere a seguinte hierarquia de criptografia para um conjunto de réplicas de três nós. O Atlas usa a CMK do AWS KMS para criptografar uma chave mestra exclusiva do MongoDB para cada nó no cluster. Cada nó também contém três bancos de dados, cada um deles criptografado com uma chave de criptografia exclusiva por banco de dados. Quando o cluster é inicializado, o Atlas descriptografa a chave mestra do MongoDB usando a CMK do AWS KMS e a fornece ao MongoDB Server.
Observação
Se revogar o acesso do Atlas à CMK, o Atlas desligará os nós no seu cluster e você não poderá acessar seus dados até restaurar o acesso à CMK.
Pré-requisitos
Para habilitar chaves gerenciadas pelo cliente com o AWS KMS para um projeto MongoDB, você deve:
Use um cluster M10 ou superior.
Use backups em nuvem para criptografar seus snapshots de backups. Backups legados não são compatíveis.
Tenha uma chave simétrica do AWS KMS . Para saber como criar uma chave, consulte Criar chaves na documentação do AWS.
Observação
Para garantir a resiliência no caso de uma interrupção regional, configure sua chave KMS para ser uma chave multirregional.
Para saber mais, consulte Reconfigurar a região do AWS KMS durante uma interrupção.
Tenha um role AWS IAM com privilégios suficientes. O Atlas deve ter permissão para realizar as seguintes ações com sua chave:
Observação
Se você quiser usar a chave do AWS KMS com um role do AWS IAM de uma conta da AWS diferente em vez do role do IAM que criou a chave do AWS KMS, verifique se você tem privilégios suficientes:
Adicione uma declaração de política de chave na chave AWS KMS para permitir o acesso de uma conta AWS externa.
Adicione uma política interna do IAM para o role do IAM na conta externa do AWS.
Para acessar uma discussão abrangente sobre funções do IAM e chaves mestras do cliente, consulte a documentação da AWS.
Após confirmar os privilégios acima, você pode seguir as etapas usuais para definir as configurações de KMS no Atlas, com a seguinte exceção:
Você deve fornecer o ARN completo para a chave AWS KMS (por exemplo,
arn:aws:kms:eu-west-2:111122223333:key/12345678-1234-1234-1234-12345678
) em vez da ID da chave mestre (por exemplo,12345678-1234-1234-1234-12345678
) no campo ID da chave AWS KMS.
Para saber como criar uma função IAM, consulte Funções IAM na documentação AWS.
O Atlas usa a mesma role do IAM e as mesmas configurações de chave do AWS KMS para todos os clusters em um projeto para o qual a criptografia em repouso está habilitada.
Se a configuração do AWS KMS exigir, permita o acesso dos endereços IP do Atlas e dos endereços IP públicos ou nomes de host DNS dos nós do cluster para que o Atlas possa se comunicar com o KMS. Você deve incluir os endereços IP na política de função de IAM gerenciado configurando operadores de condição de endereço IP no documento de política. Se os endereços IP do nó forem alterados, você deverá atualizar sua configuração para evitar interrupções de conectividade.
Habilite para o acesso baseado em roles à sua chave de encriptação para um projeto
No Atlas, VáGo para a Advanced página do seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.
Na barra lateral, clique em Advanced sob o título Security.
A página Avançado é exibida.
Clique no link Authorize a new IAM role para autorizar uma função de IAM da AWS no Atlas para acessar suas chaves da AWS KMS para criptografia em descanso.
Para criar um novo role IAM do AWS para acessar suas chaves KMS do AWS para encryption at rest, siga o procedimento Criar novo role com o AWS CLI. Se você tiver um role AWS IAM existente que deseja autorizar, siga o procedimento Adicionar relacionamentos de confiança sa um role existente.
Adicione uma política de acesso à sua função IAM da AWS através do console ou CLI da AWS. Consulte Gerenciamento de políticas do IAM para mais informações.
Observação
Essa declaração de política permite que o principal do MongoDB na AWS use a chave KMS do cliente para operações de criptografia e descriptografia. O principal do Atlas não é secreto e é usado com todos os clientes do Atlas. Essa é uma conta da AWS altamente restrita e de propósito limitado, sem recursos além do usuário do IAM. O ExternalId
na declaração de política é exclusivo para cada projeto do Atlas, mas não é secreto. O ExternalId
é usado para mitigar a possibilidade de vulnerabilidades entre contextos (deputado confuso). O uso do Atlas de um principal comum para acessar as chaves de todos os clientes é um padrão de acesso recomendado pela Amazon, conforme descrito aqui.
A política de acesso para encryption at rest é similar ao exemplo a seguir:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:DescribeKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/12x345y6-7z89-0a12-3456-xyz123456789" ] } ] }
Envie uma solicitação POST para o ponto de extremidade cloudProviderAccess
.
Use o endpoint da API para criar um novo papel IAM do AWS. O Atlas usará esse papel para autenticação com sua conta do AWS.
Mantenha os valores de campo retornados atlasAWSAccountArn
e atlasAssumedRoleExternalId
perto para uso na próxima etapa.
Modifique sua política de confiança de role do AWS IAM.
Faça login no Console de gerenciamento da AWS .
Navegue até o serviço de Identity and Access Management (IAM).
Selecione Roles na navegação do lado esquerdo.
Clique no papel IAM existente que você deseja utilizar para acesso do Atlas a partir da lista de papéis.
Selecione a guia Trust Relationships.
Clique no botão Edit trust relationship.
Edite o Policy Document. Adicione um novo objeto
Statement
com o seguinte conteúdo.Observação
Essa declaração de política permite que o principal do MongoDB na AWS use a chave KMS do cliente para operações de criptografia e descriptografia. O principal do Atlas não é secreto e é usado com todos os clientes do Atlas. Essa é uma conta da AWS altamente restrita e de propósito limitado, sem recursos além do usuário do IAM. O
ExternalId
na declaração de política é exclusivo para cada projeto do Atlas, mas não é secreto. OExternalId
é usado para mitigar a possibilidade de vulnerabilidades entre contextos (deputado confuso). O uso do Atlas de um principal comum para acessar as chaves de todos os clientes é um padrão de acesso recomendado pela Amazon, conforme descrito aqui.Observação
Substitua as linhas destacadas pelos valores retornados da chamada de API na etapa 1.
{ "Version": "2020-03-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "<atlasAWSAccountArn>" }, "Action:" "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<atlasAssumedRoleExternalId>" } } } ] } Clique no botão Update Trust Policy.
Autorize a função do IAM recém-criada.
Use o endpoint da API para autorizar e configurar o novo IAM Assumed Role ARN. Se a chamada da API for bem-sucedida, você pode usar o valor roleId
ao configurar serviços do Atlas que utilizam AWS.
Habilite o AWS KMS com autorização de função no projeto
Envie uma solicitação PATCH
ao ponto de extremidade da API encryptionAtRest para atualizar o campo awsKms.roleId
com seu ID de função do AWS IAM autorizado.
Exemplo
curl --user "{public key}:{private key}" --digest \ --header "Accept: application/json" \ --header "Content-Type: application/json" \ --include \ --request PATCH \ "https://cloud.mongodb.com/api/atlas/v1.0/groups/{groupId}/encryptionAtRest?pretty=true&envelope=true" \ --data ' { "awsKms": { "enabled": true, "roleId": "<roleId>", "customerMasterKeyID": "<master-key-id>", "region": "<aws-region>" } }'
Mude para o acesso baseado em roles à sua chave de encriptação para um projeto
Importante
Se você alternar suas chaves de encriptação para acesso baseado em role, não poderá desfazer a configuração de acesso baseado em role e reverter para acesso baseado em credenciais para chaves de encriptação nesse projeto.
No Atlas, váGo para a Advanced página do seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.
Na barra lateral, clique em Advanced sob o título Security.
A página Avançado é exibida.
Autorize o Atlas fornecendo um role do AWS IAM que lhe permita acessar suas chaves do AWS KMS para encryption at rest.
Para criar um novo role IAM do AWS para acessar suas chaves KMS do AWS para encryption at rest, siga o procedimento Criar novo role com o AWS CLI. Se você tiver um role AWS IAM existente que deseja autorizar, siga o procedimento Adicionar relacionamentos de confiança sa um role existente.
Para atualizar seu gerenciamento de chaves de criptografia com a API de administração do Atlas, use as mesmas etapas descritas no procedimento acima.
Habilitar o gerenciamento de chaves do cliente para um Atlas cluster
Depois de habilitar o acesso baseado em função à sua chave de criptografia para um projeto, você deve habilitar o gerenciamento de chaves do cliente para cada cluster do Atlas que contém dados que você deseja criptografar.
Observação
Você deve ter a role Project Owner
para habilitar o gerenciamento de chaves do cliente para clusters nesse projeto.
Para novos clusters, alterne a configuração Gerenciar suas próprias chaves de encriptação para Yes quando você criar o cluster.
Para clusters existentes:
No Atlas, váGo para a Clusters página do seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.
Se ainda não estiver exibido, clique em Clusters na barra lateral.
A página Clusters é exibida.
Habilitar criptografia de cluster.
Expanda o painel Additional Settings.
Alterne a configuração Manage your own encryption keys para Yes.
Verifique o status da configuração Require Private Networking para seu cluster.
Se você configurou a criptografia em repouso usando CMK (Over Private Networking) para Atlas no nível do projeto, o status é Active. Se você não configurou nenhuma conexão de endpoint privada para seu projeto, o status é Inactive.
Alterne sua chave mestra do cliente AWS
Observação
Este recurso não está disponível para nenhuma das seguintes implantações:
Instâncias sem servidor
M0
clustersM2/M5
clustersClusters flexíveis
Para saber mais,consulte Limites.
Chave mestra MongoDB - Responsabilidade do MongoDB
Quando você usa seu próprio provedor de nuvem KMS, o Atlas gira automaticamente as chaves mestras do MongoDB pelo menos a cada 90 dias. A rotação de suas chaves começará durante uma período de manutenção , se houver uma configurada. Adiar a manutenção (manual ou automaticamente) pode fazer com que a chave seja girada além da marca de 90dias. As chaves são giradas de forma contínua e o processo não exige que os dados sejam reescritos.
Sua chave mestre do cliente AWS - Sua responsabilidade
O Atlas não rotaciona automaticamente a CMK do AWS usado para Encryption at rest - fornecida pelo AWS.
Como prática recomendada, o Atlas cria um alert
para lembrá-lo de alternar seu Amazon Web Services CMK a cada 90 dias por padrão quando você ativa a Criptografia em Repouso para um projeto do Atlas . Você pode configurar o período deste alerta.
Você mesmo pode alternar sua CMK da AWS ou configurar sua instância do AWS KMS para alternar automaticamente sua CMK. Se você configurar a alteração automática da CMK da AWS, o período padrão para alternar é de aproximadamente 365 dias.
Se já configurou uma rotação CMK automática em AWS e não deseja receber o alerta Atlas para rotacionar sua CMK a cada 90 dias, você pode modificar o período de alerta padrão para ser maior que 365 dias ou desabilitar o alerta.
Esta página explica como criar uma nova chave e atualizar o ID da CMK no Atlas para girar seu projeto do Atlas CMK. Esse método de rotação de chaves permite um controle mais granular do período de rotação em comparação com a rotação automática de CMK do AWS KMS .
Importante
Backups em nuvem com Encryption at Rest
Para clusters que usam Criptografia em repouso e Back Up Your Cluster, o Atlas usa as credenciais de usuário do projeto CLM e do AWS IAM no momento do snapshot para criptografar automaticamente os arquivos de dados do snapshot. Essa é uma camada adicional de criptografia sobre a criptografia existente aplicada a todos os volumes de armazenamento e snapshots do Atlas.
O Atlas não criptografa novamente os snapshots com a nova CMK após a rotação. Não exclua a CMK antiga até que você verifique em cada cluster habilitado para backup no projeto se há algum snapshot que ainda esteja usando essa CMK. O Atlas exclui backups de acordo com o agendamento de backup, a retenção e os snapshots on-demand. Depois que o Atlas excluir todos os snapshots que dependem de uma determinada CMK, você poderá excluir essa CMK com segurança.
Procedimento
No Atlas, váGo para a Advanced página do seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.
Na barra lateral, clique em Advanced sob o título Security.
A página Avançado é exibida.
Atualize os detalhes da chave mestre do cliente AWS.
Insira as seguintes informações:
Campoem açãoAWS IAM roleSelecione um role existente do AWS IAM que já tenha acesso às suas chaves KMS ou autorize um novo role e conceda a esse role acesso às suas chaves KMS com as seguintes permissões:
Para saber mais, consulte Acesso baseado em função à sua chave de criptografia para um projeto.
Customer Master Key IDInsira o ID da chave mestra do cliente da AWS.Customer Master Key RegionSelecione a região AWS na qual você criou sua AWS CMK.
O Atlas lista somente as regiões Amazon Web Services que oferecem suporte ao Amazon Web Services KMS.
Clique em Save.
O Atlas exibe um banner no console do Atlas durante o processo de rotação da CMK. Não exclua ou desative a CMK até que suas alterações sejam distribuídas.
Reconfigurar região do AWS KMS durante uma interrupção
Durante uma interrupção regional, sua região do AWS KMS pode ficar indisponível. Se você habilitou a Encryption at rest usando o Gerenciamento de chaves do consumidor, poderá realizar operações de criptografia e descriptografia enquanto pelo menos um nó ainda estiver disponível. No entanto, se todos os nós ficarem indisponíveis, você não poderá executar operações criptográficas. Um nó fica indisponível se for reiniciado durante a interrupção.
Para colocar os nós indisponíveis em um estado saudável, você pode reconfigurar sua região atual do AWS KMS para uma região disponível. Para alterar a região do KMS, a chave do AWS KMS deve ser uma chave multirregional. Para criar uma chave multirregional, consulte a documentação da AWS.
Observação
Não é possível converter uma chave de região única para uma chave multirregional.
Procedimento
Para reconfigurar sua região do AWS KMS, complete as seguintes etapas no Atlas:
No Atlas, váGo para a Advanced página do seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.
Na barra lateral, clique em Advanced sob o título Security.
A página Avançado é exibida.
Tópicos relacionados
Para saber mais sobre a criptografia em repouso MongoDB, consulte Criptografia em repouso na documentação do servidor MongoDB.
Para saber mais sobre encryption at rest com backups em nuvem, consulte Mecanismo de armazenamento e criptografia de backup em nuvem.