La mayoría de los requisitos reglamentarios exigen que una clave administrada utilizada para descifrar datos confidenciales se rote y se reemplace con una nueva clave una vez al año.
Nota
Desambiguación
Para renovar las claves de 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 cambiar el quórum de escritura, nunca rote más de un miembro del conjunto de réplicas a la vez.
Para un conjunto de réplicas, para rotar un miembro:
Inicie una nueva
mongodinstancia, configurada para usar una nueva clave. Incluya la--replSetopción con el nombre del conjunto de réplicas, así como cualquier otra opción específica de su configuración, como--dbpath--bind_ipy.mongod --replSet myReplSet --enableEncryption \ --kmipServerName <KMIP Server HostName> \ --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem Conectar
mongoshal conjunto de réplicas principal.Agrega la instancia al set de réplicas:
rs.add( { host: <host:port> } ) Advertencia
Antes de MongoDB,5.0 un miembro secundario recién añadido seguía contando como miembro con derecho a voto, aunque no pudiera realizar lecturas ni convertirse en miembro principal hasta que sus datos fueran consistentes. Si ejecuta una versión de MongoDB anterior a 5.0 y añade un miembro secundario
votescon sus valores yprioritymayores que cero, esto puede provocar que la mayoría de los miembros con derecho a voto estén conectados, pero no se pueda elegir ningún miembro principal. Para evitar estas situaciones, considere añadir el nuevo miembro secundario inicialmente conpriority :0votes :0y. A continuación, ejecuters.status()para asegurarse de que el miembro haya pasado alSECONDARYestado. Finalmente, utilicers.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 utiliza un servidor KMIP para la gestión de claves, puede rotar la clave maestra del cliente, la única clave administrada externamente. Con la nueva clave maestra, el almacén de claves interno se volverá a cifrar, pero las claves de la base de datos permanecerán intactas. Esto evita tener que 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.
Reinicie el secundario, incluyendo la opción
--kmipRotateMasterKey. Incluya cualquier otra opción específica de su configuración, como--bind_ip. Si el miembro ya incluye la opción--kmipKeyIdentifier, actualice la opción--kmipKeyIdentifiercon la nueva clave que se usará u omita la solicitud de una nueva clave al servidor KMIP.mongod --enableEncryption --kmipRotateMasterKey \ --kmipServerName <KMIP Server HostName> \ --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem Si utiliza un archivo de configuración,
security.kmip.rotateMasterKeyincluya.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 utiliza un archivo de configuración, elimine la
security.kmip.rotateMasterKeyconfiguración.
Reduce el primario del set de réplicas.
Conecte a la
mongoshrs.stepDown()primaria y use para reducir la primaria y forzar la elección de una nueva primaria: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 utiliza un archivo de configuración,
security.kmip.rotateMasterKeyincluya.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 utiliza un archivo de configuración, elimine la
security.kmip.rotateMasterKeyconfiguración.