Overview
En esta guía, puedes aprender detalles sobre los siguientes componentes de Queryable Encryption:
llave de cifrado de datos (DEK)s
Llaves maestras de cliente (CMK)
Colecciones de Bóvedas de Llaves
Sistemade gestión de claves (KMS)
Para ver guías paso a paso que demuestren cómo usar los componentes anteriores para configurar un cliente habilitado para Queryable Encryption, consulta los siguientes recursos:
claves
Su clavede cifrado de datos (DEK) es la clave que MongoDB utiliza para cifrar los campos de sus documentos. Almacene su DEK en un documento de la colección Key Vault, cifrada con su clave maestra de cliente(CMK).
Tu llave maestra de cliente es la clave que MongoDB utiliza para cifrar tus llaves de cifrado de datos durante la creación. Sin acceso a una llave maestra de cliente, su aplicación cliente no puede descifrar las DEK asociadas.
Si se elimina una DEK, todos los campos cifrados con esa DEK se vuelven permanentemente ilegibles. Si se borra una llave maestra de cliente, todos los campos cifrados con una DEK mediante esa llave maestra de cliente se vuelven permanentemente ilegibles.
Advertencia
La llave maestra de cliente es la clave más sensible en Queryable Encryption. Si tu llave maestra de cliente se ve comprometida, todos tus datos cifrados pueden ser desencriptados. Utiliza un sistema remoto de gestión de claves para almacenar tu llave maestra de cliente.
Importante
Utilizar un proveedor de Key Management Service remoto
Almacena tu clave maestra de cliente en un sistema de gestión de claves remoto (KMS).
Para obtener más información sobre por qué deberías usar un KMS remoto, consulta Razones para usar un KMS remoto.
Para ver una lista de todos los proveedores admitidos de KMS, consulta la página de Proveedores KMS.
Para ver los diagramas con información detallada de cómo interactúan tu DEK, llave maestra de cliente y la Colección de Bóvedas de Llaves en todas las arquitecturas de KMS soportadas por los proveedores, consulta Proveedores de KMS.
Colección de Bóvedas de Llaves
Tu Colección de Bóvedas de Llaves es la colección MongoDB que utilizas para almacenar los documentos de llave de cifrado de datos (DEK) cifrados. Los documentos DEK son documentos BSON que contienen DEKs y tienen la siguiente estructura:
{ "_id" : UUID(<string>), "status" : <int>, "masterKey" : {<object>}, "updateDate" : ISODate(<string>), "keyMaterial" : BinData(0,<string>), "creationDate" : ISODate(<string>), "keyAltNames" : <array> }
Crea tu colección de Key Vault como lo harías con una colección estándar de MongoDB. Tu colección de Key Vault debe tener un índice único en el keyAltNames Campo. Para comprobar si existe el índice único, ejecute el comando en la colección de Key listIndexes Vault:
1 db.runCommand({ 2 listIndexes: "__keyVault", 3 });
1 { 2 cursor: { 3 id: Long("0"), 4 ns: 'encryption.__keyVault', 5 firstBatch: [ 6 { v: 2, key: { _id: 1 }, name: '_id_' } 7 ] 8 }, 9 ok: 1, 10 }
Si el índice único no existe, su aplicación debe crearlo antes de realizar la administración de DEK.
Para aprender cómo crear una colección en MongoDB, consulta Bases de datos y colecciones.
Tip
Característica de mongosh
El método mongosh KeyVault.createKey() crea automáticamente un índice único en el campo keyAltNames si no existe uno.
Nombre de la Colección de Bóvedas de Llaves
Puedes usar cualquier namespace que no sea de administrador para almacenar tu Colección de Bóvedas de Llaves. Por convención, los ejemplos a lo largo de esta documentación utilizan el encryption.__keyVault namespace.
Advertencia
No utilices la base de datos admin para almacenar colecciones relacionadas con el cifrado. Si utilizas la base de datos admin para esta colección, es posible que tu cliente de MongoDB no pueda acceder ni descifrar tus datos debido a la falta de permisos.
Permisos
Las aplicaciones con read acceso a la Colección de Bóvedas de Llaves pueden recuperar las claves de cifrado de datos cifradas (DEK) consultando la colección. No obstante, solo las aplicaciones con acceso a la clave principal del cliente (CMK) utilizada para cifrar una DEK pueden utilizar esa DEK para el cifrado o el descifrado. Debes conceder a tu aplicación acceso tanto a la Colección de Bóvedas de Llaves como a tu llave maestra de cliente para cifrar y descifrar documentos con una DEK.
Para aprender cómo otorgar acceso a una colección de MongoDB, consulta Gestionar usuarios y roles en el manual de MongoDB.
Para aprender cómo otorgar a tu aplicación acceso a tu llave maestra de cliente, consulta el Tutorial de Tutoriales.
Clúster de bóveda de claves
Por defecto, MongoDB almacena la Colección de Bóvedas de Llaves en el clúster conectado. MongoDB también es compatible con el alojamiento de la Colección de Bóvedas de Llaves en una implementación distinta de MongoDB que el clúster conectado. Las aplicaciones deben tener acceso tanto al clúster que aloja su Colección de Bóvedas de Llaves como al clúster de conexión para realizar operaciones de Queryable Encryption.
Para especificar el clúster que aloja tu Colección de Bóvedas de Llaves, usa el campo keyVaultClient del objeto MongoClient de tu cliente. Para obtener más información sobre las opciones de configuración específicas de Queryable Encryption en el objeto MongoClient de tu cliente, consulta Opciones de MongoClient para Queryable Encryption.
Actualizar una colección de Key Vault
Para agregar un DEK a su Colección de Bóvedas de Llaves, use el método createKey de un objeto ClientEncryption.
Para borrar o actualizar una DEK, use las operaciones estándar de CRUD. Se almacena una DEK en MongoDB como documento y se puede aplicar cualquier operación de documento a una DEK.
Para ver un tutorial que muestra cómo crear un DEK, consulte Inicio rápido.
Tip
Características específicas de mongosh
mongosh proporciona los siguientes métodos adicionales para trabajar con su colección de Key Vault: