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

Girar chaves de criptografia

Nesta página

  • Girar um conjunto de réplicas
  • Rotação da chave mestra KMIP

A maioria dos requisitos regulatórios exige que uma chave gerenciada usada para descriptografar dados confidenciais seja rotacionada e substituída por uma nova chave uma vez por ano.

Observação

Desambiguação

Para reverter as chaves do banco de dados configuradas com a cifra AES256-GCM após uma restauração do sistema de arquivos, consulte --eseDatabaseKeyRollover .

O MongoDB oferece duas opções para rotação de chaves. Você pode girar o binário com uma nova instância que usa uma nova chave. Ou, se você estiver usando um servidor KMIP para gerenciamento de chaves, poderá girar a chave mestra do cliente.

Observação

Para evitar a alteração do quorum de gravação, nunca gire mais de um nó de conjunto de réplicas por vez.

Para um conjunto de réplicas, para rotacionar um membro:

  1. Inicie uma nova instância do mongod, configurada para utilizar uma nova chave. Inclua a opção --replSet com o nome da réplica definida como também quaisquer outras opções específicas para sua configuração, como --dbpath e --bind_ip.

    mongod --replSet myReplSet --enableEncryption \
    --kmipServerName <KMIP Server HostName> \
    --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem
  2. Conecte o mongosh à primária do conjunto de réplica.

  3. Adicione a instância ao conjunto de réplicas:

    rs.add( { host: <host:port> } )

    Aviso

    Antes do MongoDB 5.0, um secundário recém-adicionado ainda conta como membro votante, embora não possa servir leituras nem se tornar primário até que seus dados sejam consistentes. Se você estiver executando uma versão do MongoDB anterior à 5.0 e adicionar um secundário com suas configurações votes e priority maiores que zero, isso pode levar a um caso em que a maioria dos membros votantes está online, mas nenhum primário pode ser eleito. Para evitar tais situações, considere adicionar o novo secundário inicialmente com priority :0 e votes :0. Em seguida, execute rs.status() para garantir que o membro tenha feito a transição para o estado SECONDARY. Por fim, use rs.reconfig() para atualizar sua prioridade e votos.

    Durante o processo de sincronização inicial, ocorre a nova criptografia dos dados com um conjunto totalmente novo de chaves de banco de dados, bem como uma nova chave de sistema.

  4. Remova o nó antigo do conjunto de réplicas e exclua todos os seus dados. Para ver instruções, consulte Como remover nós de um conjunto de réplicas autogerenciadas

Se você estiver usando um servidor KMIP para gerenciamento de chaves, poderá trocar a chave mestra do cliente, a única chave gerenciada externamente. Com a nova chave mestra, o armazenamento de chaves interno será criptografado novamente, mas as chaves do banco de dados permanecerão inalteradas. Isso evita a necessidade de criptografar novamente todo o conjunto de dados.

  1. Gire a chave mestre para os membros secundários da réplica definir uma de cada vez.

    1. Reinicie a secundária, incluindo a opção --kmipRotateMasterKey. Inclua quaisquer outras opções específicas para sua configuração, como --bind_ip. Se o nó já incluir a opção --kmipKeyIdentifier, atualize a opção --kmipKeyIdentifier com a nova chave para utilizar, ou omita para solicitar uma nova chave do servidor KMIP:

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

      Se estiver utilizando um arquivo de configuração, inclua o security.kmip.rotateMasterKey.

    2. Após a conclusão bem-sucedida da rotação da chave mestra e da recriptografia do armazenamento de chaves do banco de dados, o mongod será encerrado.

    3. Reinicie o secundário sem o parâmetro --kmipRotateMasterKey. Inclua quaisquer outras opções específicas para sua configuração, como --bind_ip.

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

      Se estiver utilizando um arquivo de configuração, remova a configuração do security.kmip.rotateMasterKey.

  2. Reduza o conjunto de réplicas primário.

    Conecte mongosh ao primário e use rs.stepDown() para reduzir o primário e forçar a eleição de um novo primário:

    rs.stepDown()
  3. Quando rs.status() mostrar que o membro primário se afastou e outro membro assumiu o estado PRIMARY, gire a chave mestra para o membro que se afastou:

    1. Reinicie o membro com passo pendente, incluindo a opção --kmipRotateMasterKey . Inclua quaisquer outras opções específicas para sua configuração, como --bind_ip. Se o membro já incluir a opção --kmipKeyIdentifier, atualize a opção --kmipKeyIdentifier com a nova chave para utilizar ou omitir.

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

      Se estiver utilizando um arquivo de configuração, inclua o security.kmip.rotateMasterKey.

    2. Após a conclusão bem-sucedida da rotação da chave mestra e da recriptografia do armazenamento de chaves do banco de dados, o mongod será encerrado.

    3. Reinicie o membro suspenso sem a opção --kmipRotateMasterKey. Inclua quaisquer outras opções específicas para sua configuração, como --bind_ip.

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

      Se estiver utilizando um arquivo de configuração, remova a configuração do security.kmip.rotateMasterKey.

Voltar

Configurar