El cifrado en reposo, cuando se emplea junto con el cifrado de transporte y las políticas de seguridad que protegen las cuentas, contraseñas y llaves de cifrado pertinentes, puede contribuir a asegurar el cumplimiento de los estándares de seguridad y privacidad, incluidos HIPAA, PCI-DSS y FERPA.
Motor de almacenamiento encriptado
Nota
Característica de la empresa
Disponible solamente en MongoDB Enterprise.
Importante
Disponible solo para el motor de almacenamiento WiredTiger.
MongoDB Enterprise 3.2 introduce una opción de cifrado nativa para el motor de almacenamiento WiredTiger. Esta característica permite a MongoDB cifrar archivos de datos de manera que solo las partes con la clave de descifrado puedan decodificar y leer los datos.
Proceso de cifrado
Nota
MongoDB Enterprise en Windows ya no es compatible AES256-GCM Como cifrador de bloques para cifrado en reposo. Este uso solo es compatible con Linux.
Si el cifrado está habilitado, el modo de cifrado por defecto que utiliza MongoDB Enterprise es el AES256-CBC (o el Estándar de Cifrado Avanzado de 256 bits en modo de encadenamiento de bloques de cifrado) a través de OpenSSL. AES-256 utiliza una clave simétrica, es decir, la misma clave para cifrar y descifrar texto. MongoDB Enterprise para Linux también es compatible con el cifrado autenticado AES256-GCM (o el Estándar de Cifrado Avanzado de 256 bits en modo Galois/Counter).
El Motor de Almacenamiento Cifrado utiliza el proveedor de criptografía certificado del sistema operativo subyacente para realizar operaciones criptográficas. Por ejemplo, una instalación de MongoDB en un sistema operativo Linux utiliza el módulo OpenSSL libcrypto FIPS-140.
Para ejecutar MongoDB en un modo compatible con FIPS:
Configura el sistema operativo para ejecutar en modo de aplicación de FIPS.
Configurar MongoDB para habilitar el
net.tls.FIPSModeconfiguración.Reinicia
mongodomongos.Revisa la entrada de registro del servidor para confirmar que el modo FIPS está habilitada. Si el modo FIPS está habilitado, el mensaje
FIPS 140-2 mode activatedaparece en la entrada de registro.
Para obtener más información, consulta Configurar MongoDB para FIPS.
Nota
AES256-GCM y copias de seguridad del sistema de archivos
Para Los motores de almacenamiento cifrados que utilizan AES256-GCM el modo de cifrado, AES256-GCM requieren que cada proceso utilice un valor de bloque de contador único con la clave.
Para motor de almacenamiento cifrado configurado con el cifrado AES256-GCM:
- Restauración desde una copia de seguridad en caliente
- A partir de la versión 4.2, si restaura desde archivos obtenidos mediante una copia de seguridad "en caliente" (es decir, mientras
mongodestá en ejecución), MongoDB puede detectar claves "sucias" en el inicio y cambiar automáticamente la clave de la base de datos para evitar la reutilización del IV (vector de inicialización).
- Restauración desde una copia de seguridad en frío
Sin embargo, si restaura desde archivos obtenidos mediante una copia de seguridad "en frío" (es decir,
mongodno está en ejecución), MongoDB no puede detectar las claves "sucias" en el inicio, y la reutilización de IV invalida las garantías de confidencialidad e integridad.A partir de la versión 4.2, para evitar la reutilización de las claves después de restaurar desde un snapshot del sistema de archivos en frío, MongoDB agrega una nueva opción de línea de comandos
--eseDatabaseKeyRollover. Al iniciarse con la opción--eseDatabaseKeyRollover, la instanciamongodcambia las claves de la base de datos configuradas con el cifradoAES256-GCMy se cierra.
El proceso de cifrado de datos incluye:
Generando una clave maestra.
Generación de claves para cada base de datos.
Cifrado de datos con las claves de la base de datos.
Cifrado de las claves de la base de datos con la clave maestra.
El cifrado ocurre de manera transparente en la capa de almacenamiento, es decir, todos los archivos de datos están totalmente cifrados desde la perspectiva del sistema de archivos, y los datos solo existen en un estado no cifrado en la memoria y durante la transmisión.
Para cifrar todo el tráfico de red de MongoDB, puedes utilizar TLS/SSL (Transport Layer Security/Secure Sockets Layer). Consulta Configurar instancias de MongoDB para TLS/SSL en implementaciones autogestionadas y Configuración de TLS/SSL para clientes.
Gestión de claves
Importante
La gestión segura de las llaves de cifrado es crítica.
Las claves de la base de datos son internas al servidor y solo se escriben en el disco en un formato cifrado. MongoDB nunca escribe la clave maestra en el disco bajo ninguna circunstancia.
Únicamente la clave maestra es externa al servidor (es decir, se mantiene separada de los datos y de las claves de la base de datos), y requiere una gestión externa. Para gestionar la clave maestra, el motor de almacenamiento cifrado de MongoDB admite dos opciones de gestión de claves:
Integración con un dispositivo de gestión de claves de terceros a través del Protocolo de Interoperabilidad de Gestión de Claves (KMIP). Recomendado
Nota
Para una integración con un dispositivo de administración de claves de terceros mediante el KMIP, debe permitir las siguientes operaciones KMIP:
Cree (
operation_create)Obtener (
operation_get)Activar (
operation_activate)GetAttributes (
operation_get_attributes)Cifrar (
operation_encrypt)Descifrar (
operation_decrypt)
MongoDB requiere las operaciones de cifrado y descifrado con la configuración por defecto de KMIP. Si configuras
security.kmip.useLegacyProtocolentrueen el archivo de configuración del servidor MongoDB, MongoDB utiliza el protocolo KMIP 1.0/1.1, que no requiere estas operaciones.Gestión local de claves mediante un archivo de claves.
Para configurar MongoDB para el cifrado y usar una de las dos opciones de gestión de claves, consulta Configurar cifrado.
Cifrado y replicación
El cifrado no es parte de la replicación:
Las claves maestras y las claves de la base de datos no se replican y
Los datos no están cifrados de forma nativa durante la transmisión.
Aunque podrías reutilizar la misma clave para los nodos, MongoDB recomienda el uso de claves individuales para cada nodo, así como el uso de cifrado de transporte.
Para obtener más detalles, consulta Rotar llaves de cifrado.
Registro de auditoría
Disponible solamente en MongoDB Enterprise.
Usa el servidor de KMIP para gestionar las claves para cifrar el registro de auditoría de MongoDB
A partir de MongoDB 6.0 Enterprise, puedes gestionar de forma segura las claves para cifrar el registro de auditoría de MongoDB utilizando un servidor externo de Key Management Interoperability Protocol (KMIP).
KMIP simplifica la gestión de claves criptográficas y elimina el uso de procesos de gestión de claves no estándar.
La versión por defecto del protocolo KMIP es la 1.2. Puedes configurar MongoDB para usar la versión 1.0 o 1.1 de KMIP en el archivo de configuración de MongoDB Server.
Para usar un servidor de KMIP con cifrado de registros de auditoría, configura estos ajustes y parámetros:
auditLog.auditEncryptionKeyIdentifierconfiguraciónauditLog.compressionModeconfiguraciónauditEncryptionHeaderMetadataFileparameterauditEncryptKeyWithKMIPGetparameter
Para probar el cifrado del registro de auditoría, también puedes usar la configuración auditLog.localAuditKeyFile.
A partir de MongoDB 6.0, si debes degradar a una versión anterior de MongoDB, primero debes desactivar el cifrado del registro de auditorías removiendo auditLog.auditEncryptionKeyIdentifier o auditLog.localAuditKeyFile. Los registros de auditoría cifrados existentes permanecen cifrados, y puedes mantener cualquier procedimiento que hayas desarrollado para el almacenamiento y procesamiento de registros cifrados.
Nota
Para el cifrado de registros de auditoría, el destino del registro de auditoría debe ser un archivo. syslog no puede usarse como destino.
Registro de procesos y registro de auditoría sin cifrar
Esta sección se aplica si no estás utilizando un servidor externo de Key Management Interoperability Protocol (KMIP) a fin de gestionar las claves para el cifrado del registro de auditoría como se muestra en la sección anterior.
La entrada de registro de auditoría no está cifrado como parte del motor de almacenamiento cifrado de MongoDB. mongod que se ejecuta con registro podría enviar información potencialmente sensible a las entradas de registro como parte de las operaciones normales, dependiendo del nivel de verbosidad del registro.
Usa la configuración security.redactClientLogData para evitar que información potencialmente sensible ingrese al registro del proceso mongod. Configurar redactClientLogData reduce los detalles del registro y podría complicar el diagnóstico de registros.
Consulta la entrada del manual de restricción de registro para obtener más información.
Cifrado a nivel de aplicación
A partir de MongoDB 7.0, puedes utilizar Queryable Encryption para activar el cifrado de extremo a extremo. Para obtener más información sobre cómo comenzar, consulta el Inicio rápido de Queryable Encryption.
Para obtener una lista de los socios certificados de MongoDB, consulta la Lista de socios.