Gerenciar chaves de cliente com AWS em uma rede pública
Nesta página
Criptografe seus dados em repouso no Atlas com as chaves gerenciadas pelo cliente (CMK) que você cria, possui e gerencia em seu Amazon Web Services KMS.
Esta página descreve como configurar o gerenciamento de chaves do cliente usando o Amazon Web Services KMS em seu projeto Atlas e nos clusters desse projeto.
Pré-requisitos
Para habilitar chaves gerenciadas pelo cliente com o AWS KMS para um projeto MongoDB, você deve:
Use um cluster M10 ou superior.
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 KMS do Amazon Web Services (por exemplo,
arn:aws:kms:eu-west-2:111122223333:key/12345678-1234-1234-1234-12345678
) em vez da ID da chave mestra (por exemplo12345678-1234-1234-1234-12345678
) no campo de ID da chave KMS do Amazon Web Services.
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 Amazon Web Services KMS exigir isso, permita o acesso a partir de 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 role gerenciado do IAM configurando operadores de condição de endereço IP no documento de política. Se os endereços IP do nó mudarem, você deverá atualizar sua configuração para evitar interrupções de conectividade.
Procedimentos
Habilite para o acesso baseado em roles para sua chave de encriptação para um projeto
No Atlas, VáGo para a Advanced página do seu projeto.
Aviso
Melhorias na navegação em andamento
No momento, estamos lançando uma experiência de navegação nova e aprimorada. Se as etapas a seguir não corresponderem à sua visualização na UI do Atlas, consulte a documentação de visualização.
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 ponto de extremidade 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>" } }'
Depois de habilitar o acesso baseado em role para sua chave de criptografia para seu projeto, habilite chaves gerenciadas pelo cliente para cada cluster do Atlas em seu projeto seguindo Habilitar gerenciamento de chaves do cliente para um cluster do Atlas.
Mude para o acesso baseado em roles para sua chave de encriptação para um projeto
A partir de de janeiro 26 2021de, oAmazon Web Services exige o uso de funções do IAM em vez de usuários do IAM para gerenciar o acesso às chaves de criptografia do Amazon Web Services KMS no Atlas. Se você configurou inicialmente seu projeto para utilizar credenciais de usuário IAM para acessar chaves Amazon Web Services KMS, alterne para acesso baseado em função para cumprir este novo requisito utilizando o seguinte procedimento.
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.
Aviso
Melhorias na navegação em andamento
No momento, estamos lançando uma experiência de navegação nova e aprimorada. Se as etapas a seguir não corresponderem à sua visualização na UI do Atlas, consulte a documentação de visualização.
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 ativar o acesso baseado em role para sua chave de encriptação para um projeto, você deve ativar o gerenciamento de chaves do cliente para cada Atlas cluster 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.
Aviso
Melhorias na navegação em andamento
No momento, estamos lançando uma experiência de navegação nova e aprimorada. Se as etapas a seguir não corresponderem à sua visualização na UI do Atlas, consulte a documentação de visualização.
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.