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.

JavaScript
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 *Preview falla porque esos tipos están obsoletos en MongoDB 9.0 y no se implementan. Usa el tipo sin el sufijo.

Ver también