Queryable Encryption
Campos cifrados en el cliente que puedes consultar sin que el servidor vea los valores.
TeselaDB implementa la parte del servidor de Queryable Encryption y de Client-Side Field Level Encryption (CSFLE) de MongoDB. Tu driver cifra y descifra los campos en el cliente; el servidor guarda los valores cifrados y responde sobre ellos consultas de igualdad o de rango y búsquedas de texto sin ver nunca el valor en claro.
Requisitos
- Un driver de MongoDB con Queryable Encryption y un proveedor de claves (KMS).
Cómo se usa
Igual que con MongoDB: configuras el driver con autoEncryption, tu proveedor de claves (KMS) y el mapa de campos
cifrados. No cambia nada en el servidor.
const client = new MongoClient(uri, {
autoEncryption: {
keyVaultNamespace: "encryption.__keyVault",
kmsProviders: { local: { key: claveMaestraLocal } },
encryptedFieldsMap: {
"clinica.pacientes": {
fields: [{ path: "dni", bsonType: "string", queries: { queryType: "equality" } }],
},
},
},
});Lo que hace el servidor
Mantiene las colecciones de metadatos de Queryable Encryption, resuelve las consultas sobre las etiquetas cifradas y
hace cumplir los esquemas de CSFLE. Los tipos de consulta marcados como obsoletos en MongoDB 9.0 (*Preview) no se
implementan.
Comprobar
Un cliente sin autoEncryption ve los campos cifrados como valores binarios, nunca en claro.
Problemas frecuentes
- Una consulta con un tipo
*Previewfalla porque esos tipos están obsoletos en MongoDB 9.0 y no se implementan. Usa el tipo sin el sufijo.