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

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á alternar 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 do conjunto de réplicas

Se você estiver usando um servidor KMIP para gerenciamento de chaves, poderá girar 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 à primária e use rs.stepDown() para reduzir a primária e forçar a eleição de uma nova primária:

    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.

← Configurar criptografia