Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

Configurar criptografia

Nesta página

  • Visão geral
  • Gerenciador de chaves
  • Gerenciamento de chaves locais
  • Criptografar dados existentes no repouso

Esta página discute a configuração do servidor para suportar encryption at rest. Se você usar MongoDB Atlas, seus dados já estarão criptografados. O MongoDB gerencia a criptografia Atlas no nível do fornecedor de nuvem, mas você também pode usar sua própria solução de gerenciamento de chaves. Consulte a documentação de gerenciamento de chaves do Atlas para obter detalhes.

O MongoDB Enterprise 3.2 introduz uma opção de criptografia nativa para o mecanismo de armazenamento WiredTiger. Fora do Atlas, a criptografia só está disponível para instalações corporativas que usam o mecanismo de armazenamento WiredTiger.

O gerenciamento seguro das chaves de criptografia é um requisito essencial para criptografia de armazenamento. O MongoDB usa uma chave mestre que não é armazenada com a instalação do MongoDB. Somente a chave mestre é gerenciada externamente; outras chaves podem ser armazenadas com sua instância do MongoDB.

O mecanismo de armazenamento criptografado do MongoDB oferece suporte a duas opções de gerenciamento de chaves para a chave mestre:

  • Integração com um dispositivo de gerenciamento de chaves de terceiros por meio do Protocolo de interoperabilidade de gerenciamento de chaves (KMIP). Recomendado

  • Uso do gerenciamento de chaves local por meio de um arquivo de chave.

Importante

O MongoDB não pode criptografar dados existentes. Quando você habilita a criptografia com uma nova chave, a instância do MongoDB não pode ter nenhum dado pré-existente. Se sua instalação do MongoDB já tiver dados existentes, consulte Criptografar dados existentes em repouso para obter etapas adicionais.

O MongoDB Enterprise suporta transferência segura de chaves com dispositivos de gerenciamento de chaves compatíveis. O uso de um gerenciador de chaves permite que as chaves sejam armazenadas no gerenciador de chaves.

O MongoDB Enterprise oferece suporte à transferência segura de chaves com dispositivos de gerenciamento de chaves compatíveis com o protocolo de interoperabilidade de gerenciamento de chaves (KMIP).

Para obter uma lista dos parceiros certificados da MongoDB, consulte a Lista de parceiros.

Dica

Recomendado

O uso de um gerenciador de chaves atende às diretrizes regulatórias de gerenciamento de chaves, como HIPAA, PCI-DSS e FERPA, e é recomendado em vez do gerenciamento de chaves local.

  • Seu gerenciador de chaves deve suportar o protocolo de comunicação KMIP.

    A versão do protocolo KMIP padrão é 1.2. Você pode configurar o MongoDB para usar a versão 1 do KMIP.0 ou 1.1 noarquivo de configuraçãodo servidor MongoDB .

  • Para uma integração com um dispositivo de gerenciamento de chave de terceiros usando o KMIP, você deve permitir as seguintes operações de KMIP:

    • Criar (operation_create)

    • Obter (operation_get)

    • Ativar (operation_activate)

  • Para autenticar o MongoDB em um servidor KMIP, você deve ter um certificado válido emitido pelo dispositivo de gerenciamento de chaves.

Observação

Alterado na versão 4.0

O MongoDB Enterprise no Windows não é mais compatível com o AES256-GCM como uma cifra de bloco para criptografia em repouso. Esse uso é compatível apenas com Linux.

Para criar uma nova chave quando você se conectar ao gerenciador de chaves, utilize as seguintes opções para iniciar o mongod:

Para se conectar a um servidor KMIP versão 1.0 ou 1.1, use a opção --kmipUseLegacyProtocol.

Inclua opções adicionais, conforme necessário, para sua configuração. Por exemplo, se você deseja que clientes remotos se conectem à sua implantação ou se os membros da implantação forem executados em hosts diferentes, especifique o --bind_ip.

A operação a seguir cria uma nova chave mestre no seu gerenciador de chaves. mongod usa a chave mestre para criptografar as chaves que mongod gera para cada banco de dados.

mongod --enableEncryption \
--kmipServerName <KMIP Server HostName> \
--kmipPort <KMIP server port> \
--kmipServerCAFile ca.pem \
--kmipClientCertificateFile client.pem

mongod verifica a conexão com o servidor KMIP na inicialização.

O nome do servidor especificado no --kmipServerName deve corresponder ao Nome Alternativo do Assunto SAN ou ao Nome Comum CN no certificado apresentado pelo servidor KMIP. SAN pode ser um nome de sistema ou um endereço IP.

Se SAN estiver presente, mongod não tentará corresponder a CN.

Se o nome do host ou o endereço IP do servidor KMIP não corresponder a SAN ou CN, mongod não será iniciado.

Para verificar se a criação e o uso da chave foram bem-sucedidos, verifique o arquivo de registro. Se bem-sucedidos, o processo registrará as seguintes mensagens:

[initandlisten] Created KMIP key with id: <UID>
[initandlisten] Encryption key manager initialized using master key with id: <UID>

Você pode usar uma chave mestre existente que seu servidor KMIP já gerencie. Para utilizar uma chave existente, use estas opções ao iniciar mongod para conectar mongod ao gerenciador de chaves:

Para se conectar a um servidor KMIP versão 1.0 ou 1.1, use a opção --kmipUseLegacyProtocol.

Inclua opções adicionais, conforme necessário, para sua configuração. Por exemplo, se você deseja que clientes remotos se conectem à sua implantação ou se os membros da implantação forem executados em hosts diferentes, especifique o --bind_ip.

mongod --enableEncryption \
--kmipServerName <KMIP Server HostName> \
--kmipPort <KMIP server port> \
--kmipServerCAFile ca.pem \
--kmipClientCertificateFile client.pem \
--kmipKeyIdentifier <UID>

mongod verifica a conexão com o servidor KMIP na inicialização.

O nome do servidor especificado no --kmipServerName deve corresponder ao Nome Alternativo do Assunto SAN ou ao Nome Comum CN no certificado apresentado pelo servidor KMIP. SAN pode ser um nome de sistema ou um endereço IP.

Se SAN estiver presente, mongod não tentará corresponder a CN.

Se o nome do host ou o endereço IP do servidor KMIP não corresponder a SAN ou CN, mongod não será iniciado.

Importante

O uso do método de arquivo de chave não atende à maioria das diretrizes regulatórias de gerenciamento de chaves e exige que os usuários gerenciem com segurança suas chaves próprias.

O gerenciamento seguro do arquivo-chave é fundamental.

Para criptografar usando um arquivo de chave, você deve ter um arquivo de chave codificado por base64 que contenha uma única string de 16 ou 32 caracteres. O arquivo-chave só deve ser acessível pelo proprietário do processo mongod.

  1. Crie o arquivo de chave codificado por base64 com a string de 16 ou 32 caracteres. Você pode gerar o arquivo de chave codificado usando qualquer método que você preferir. Por exemplo,

    openssl rand -base64 32 > mongodb-keyfile
  2. Atualize as permissões do arquivo.

    chmod 600 mongodb-keyfile
  3. Para utilizar o arquivo de chave, inicie o mongod com as seguintes opções:

    • --enableEncryption,

    • --encryptionKeyFile <path to keyfile>,

    mongod --enableEncryption --encryptionKeyFile mongodb-keyfile

    Inclua opções adicionais, conforme necessário, para sua configuração. Por exemplo, se você deseja que clientes remotos se conectem à sua implantação ou se os membros da implantação forem executados em hosts diferentes, especifique o --bind_ip.

  4. Verifique se o gerenciador de chaves de criptografia foi inicializado com sucesso com o arquivo de chave. Se a operação tiver sido bem-sucedida, o processo registrará a seguinte mensagem:

    [initandlisten] Encryption key manager initialized with key file: <path to keyfile>

O MongoDB não pode criptografar dados existentes. Quando você habilita a criptografia com uma nova chave, a instância do MongoDB não pode ter nenhum dado pré-existente.

Se estiver usando um conjunto de réplicas que tenha dados existentes, use uma sincronização inicial contínua para criptografar os dados.

Por exemplo, considere um conjunto de réplicas com três membros. O conjunto de réplicas em uso mantém os dados que você deseja criptografar. Estas são as etapas que você seguiria para criptografar os dados em repouso:

1

Siga estas etapas para preparar o servidor:

  • Escolha um dos servidores secundários.

  • Pare o mongod no servidor secundário.

  • Opcional: Faça backup dos dados em dbPath. Se um backup completo não for necessário, considere fazer backup somente do diretório diagnostic.data para preservar dados de solução de problemas possivelmente úteis caso haja um problema. Consulte Captura de dados de diagnóstico em tempo integral para obter mais informações.

  • Remova os arquivos e diretórios no dbPath.

2

Inicie o servidor secundário com a criptografia habilitada. A instância mongod cria um novo armazenamento de chaves.

3

Importe os dados do primário. Inicie o processo mongod, especificando as opções de replicação conforme apropriado.

mongod executa uma initial sync e criptografa os dados durante o processo de sincronização.

4

Quando o primeiro secundário terminar de importar e criptografar os dados, repita o processo nas outras instâncias mongod secundárias.

5

Quando todos os secundários tiverem sido criptografados, step down o primário. Os secundários elegíveis elegerão um novo primary.

O antigo primary agora é secundário. Repita as etapas para remover os dados não criptografados e, em seguida, execute uma initial sync.

← Criptografia em descanso