Overview
El cifrado explícito proporciona un control detallado sobre la seguridad, a costa de una mayor complejidad al configurar colecciones y escribir código para los controladores de MongoDB. Con el cifrado explícito, especificas cómo cifrar campos en tu documento para cada operación que realices en la base de datos e incluyes esta lógica en toda tu aplicación.
El cifrado explícito está disponible en los siguientes productos de MongoDB:
MongoDB Community Server
MongoDB Enterprise Advanced
MongoDB Atlas
Usa cifrado explícito
Crear una instancia de ClientEncryption
ClientEncryption es una abstracción utilizada en todos los controladores y mongosh que encapsula la colección de Key Vault y las operaciones de KMS involucradas en el cifrado explícito.
Para crear una instancia de ClientEncryption, especifique:
Un objeto
kmsProvidersconfigurado con acceso al proveedor de KMS que aloja su Clave Maestra de Cliente.El espacio de nombres de tu Colección de Bóvedas de Llaves
Si utiliza MongoDB Community servidor, configure la opción
bypassQueryAnalysisenTrueUna
MongoClientinstancia con acceso a tu Colección de Bóvedas de Llaves
Para más opciones de ClientEncryption, consulte Opciones de MongoClient para Queryable Encryption.
Cifrar campos en operaciones de lectura y escritura
Debe actualizar las operaciones de lectura y guardado en toda su aplicación para que esta cifre los campos antes de realizar operaciones de lectura y guardado.
Para cifrar campos, utiliza el método encrypt de tu instancia de ClientEncryption. Especifica lo siguiente:
El valor a cifrar
El ID de la llave de cifrado de datos
El algoritmo
unindexed: para campos cifrados no consultables.indexed: admite query de igualdad.range: admite query de rango.string: admite consultas de prefijo, sufijo y subcadena.
Los parámetros para el algoritmo seleccionado. El cifrado explícito no utiliza un esquema de cifrado, por lo que debe pasar estos parámetros en cada llamada a
encrypt, tanto para operaciones de lectura como de escritura.
Nota
Los algoritmos indexed, range y string requieren un índice en el servidor, que se crea cuando se especifica la opción encryptedFields durante db.createCollection().
Algoritmos y QueryTypes
algoritmo | tipo de consulta (operaciones de lectura) | Parámetros adicionales |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Para operaciones de escritura, puede especificar las opciones prefix y suffix en la misma llamada para indexar un campo para ambos tipos de consulta. No puede configurar substring junto con prefix o suffix.
Nota
A partir de MongoDB 9.0, los tipos de consulta prefixPreview, suffixPreview y substringPreview que utilizan el algoritmo text están obsoletos y se eliminan. En su lugar, utilice los tipos de consulta prefix, suffix o substring con el algoritmo string.
Descifrado automático
Para descifrar campos automáticamente, configura tu instancia de MongoClient de la siguiente manera:
Especifica un objeto
kmsProvidersEspecifique su Colección de Bóvedas de Llaves
Si utiliza MongoDB Community servidor, configure la opción
bypassQueryAnalysisenTrue
Nota
Descifrado automático en MongoDB Community servidor
El descifrado automático está disponible en MongoDB Community servidor. El cifrado automático requiere MongoDB Enterprise o MongoDB Atlas.
Aplicación de cifrado a nivel de campo del lado del servidor
Pasos para aplicar el cifrado de campos específicos en una colección.
Si tu instancia de MongoDB aplica el cifrado de campos específicos, cualquier cliente que realice Queryable Encryption con cifrado explícito debe cifrar esos campos según lo especificado. Para aprender a configurar la aplicación de Queryable Encryption del lado del servidor, consulta Campos cifrados y consultas habilitadas.
Obtén más información
Para obtener más información sobre la Colección de Bóvedas de Llaves, las llave de cifrado de datos y las llave maestra de cliente, consulte llave de cifrado y Key Vaults.
Para obtener más información sobre los proveedores de KMS y los objetos kmsProviders, consulte Proveedores de KMS.