Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Fundamentals

Llaves y bóvedas de claves

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:

  • Inicio rápido

  • Tutorials

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.

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:

1db.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.

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.

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.

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.

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

Volver

Cifrado explícito

En esta página