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.
Rotar un miembro del conjunto de réplicas
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:
Inicie una nueva instancia
mongod, configurada para usar una nueva clave. Incluye la opción--replSetcon el nombre del set de réplicas, así como cualquier otra opción específica de tu configuración, como--dbpathy--bind_ip.mongod --replSet myReplSet --enableEncryption \ --kmipServerName <KMIP Server HostName> \ --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem Conecte
mongoshal primario del set de réplicas.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
votesy la configuración deprioritymayor 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, conpriority :0yvotes :0. Después, ejecutars.status()para asegurar que el nodo haya pasado al estadoSECONDARY. Por último, usars.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.
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.
Rotación de la clave maestra de KMIP
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.
Gire la clave maestra para los miembros secundarios del conjunto de réplicas uno a la vez.
Reinicia el secundario, incluyendo la
--kmipRotateMasterKeyopció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--kmipKeyIdentifiercon 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.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,
mongodsaldrá.Reinicie el secundario sin el parámetro. Incluya cualquier otra opción específica de su
--kmipRotateMasterKeyconfiguración,--bind_ipcomo.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.
Reduce el primario del set de réplicas.
Conecte
mongoshal principal y utilicers.stepDown()para rebajar al principal y forzar la elección de un nuevo principal:rs.stepDown() Cuando
rs.status()indica que el nodo primario ha cedido y otro nodo ha asumido el estadoPRIMARY, rota la clave maestra para el nodo que ha cedido:Reinicie el miembro reducido, incluyendo la opción. Incluya cualquier otra opción específica de su
--kmipRotateMasterKeyconfiguración,--bind_ipcomo. Si el miembro ya incluye la--kmipKeyIdentifieropción,--kmipKeyIdentifieractualice 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.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,
mongodsaldrá.Reinicie el miembro reducido sin la opción. Incluya cualquier otra opción específica de su
--kmipRotateMasterKeyconfiguración,--bind_ipcomo.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.