Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Cifrado en reposo

Rotar las llaves de cifrado

La mayoría de los requisitos regulatorios exigen que una clave administrada utilizada para descifrar datos confidenciales debe rotarse y reemplazarse por una nueva clave una vez al año.

Nota

Desambiguación

Para cambiar las claves de la base de datos configuradas con el cifrado AES256-GCM después de una restauración del sistema de archivos, consulte --eseDatabaseKeyRollover en su lugar.

MongoDB ofrece dos opciones para la rotación de claves. Puedes reemplazar el binario por una nueva instancia que utilice una nueva clave. O bien, si usas un servidor KMIP para la gestión de claves, puedes rotar la clave maestra del cliente.

Nota

Para evitar cambiando el quórum de escritura, nunca sustituya más de un set de réplicas a la vez.

Para un conjunto de réplicas, para rotar un miembro:

  1. Inicie una nueva instancia mongod, configurada para usar una nueva clave. Incluye la opción --replSet con el nombre del set de réplicas, así como cualquier otra opción específica de tu configuración, como --dbpath y --bind_ip.

    mongod --replSet myReplSet --enableEncryption \
    --kmipServerName <KMIP Server HostName> \
    --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem
  2. Conecte mongosh al primario del set de réplicas.

  3. Agrega la instancia al set de réplicas:

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

    Advertencia

    Antes de MongoDB 5.0, un nuevo secundario añadido aún cuenta como nodo con derecho a voto incluso aunque no pueda servir lecturas ni convertirse en primario hasta que sus datos sean coherentes. Si tienes una versión de MongoDB anterior a la 5.0 y agregas un secundario con su votes y la configuración de priority mayor a cero, esto puede llevar a una situación en la que la mayoría de los nodos con derecho a voto estén en linea pero no se pueda elegir un primario. Para evitar estas situaciones, considera añadir el nuevo arrendatario secundario, inicialmente, con priority :0 y votes :0. Después, ejecuta rs.status() para asegurar que el nodo haya pasado al estado SECONDARY. Por último, usa rs.reconfig() para actualizar su prioridad y votos.

    Durante el proceso de sincronización inicial, se produce el nuevo cifrado de los datos con un conjunto completamente nuevo de claves de base de datos, así como una nueva clave de sistema.

  4. Elimine el nodo antiguo del conjunto de réplicas y borre todos sus datos. Para obtener instrucciones, consulte Eliminar miembros de un conjunto de réplicas autoadministrado.

Si está usando un servidor KMIP para la gestión de claves, puede rotar la llave maestra de cliente, que es la única clave gestionada externamente. Con la nueva clave maestra, el almacén de claves interno se re-encriptará, pero las claves de base de datos permanecerán sin cambios. Esto elimina la necesidad de volver a cifrar todo el conjunto de datos.

  1. Gire la clave maestra para los miembros secundarios del conjunto de réplicas uno a la vez.

    1. Reinicia el secundario, incluyendo la --kmipRotateMasterKey opción. Incluye cualquier otra opción específica de tu configuración, como --bind_ip. Si el nodo ya incluye la opción --kmipKeyIdentifier, actualiza la opción --kmipKeyIdentifier con la nueva clave que se va a usar u omítela para solicitar una nueva clave al servidor KMIP:

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

      Si se utiliza un archivo de configuración, incluya el security.kmip.rotateMasterKey.

    2. Una vez completada con éxito la rotación de la clave maestra y el nuevo cifrado del almacén de claves de la base de datos,mongod saldrá.

    3. Reinicie el secundario sin el parámetro. Incluya cualquier otra opción específica de su --kmipRotateMasterKey configuración,--bind_ip como.

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

      Si se utiliza un archivo de configuración, remueve la configuración de security.kmip.rotateMasterKey.

  2. Reduce el primario del set de réplicas.

    Conecte mongosh al principal y utilice rs.stepDown() para rebajar al principal y forzar la elección de un nuevo principal:

    rs.stepDown()
  3. Cuando rs.status() indica que el nodo primario ha cedido y otro nodo ha asumido el estado PRIMARY, rota la clave maestra para el nodo que ha cedido:

    1. Reinicie el miembro reducido, incluyendo la opción. Incluya cualquier otra opción específica de su --kmipRotateMasterKey configuración,--bind_ip como. Si el miembro ya incluye la --kmipKeyIdentifier opción,--kmipKeyIdentifier actualice la opción con la nueva clave que se va a usar u omítala.

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

      Si se utiliza un archivo de configuración, incluya el security.kmip.rotateMasterKey.

    2. Una vez completada con éxito la rotación de la clave maestra y el nuevo cifrado del almacén de claves de la base de datos,mongod saldrá.

    3. Reinicie el miembro reducido sin la opción. Incluya cualquier otra opción específica de su --kmipRotateMasterKey configuración,--bind_ip como.

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

      Si se utiliza un archivo de configuración, remueve la configuración de security.kmip.rotateMasterKey.

Volver

Configurar

En esta página