Docs Menu
Docs Home
/ /
Fundamentals
/ / /

Llaves y bóvedas de claves

En esta guía, puede obtener información detallada sobre los siguientes componentes del cifrado de nivel de campo del lado del cliente (CSFLE):

  • Claves de cifrado de datos (DEK)s

  • Llaves maestras del cliente (CMK)

  • Colecciones de Bóvedas de Llaves

  • Sistemade gestión de claves (KMS)

Para consultar guías paso a paso que demuestren cómo utilizar los componentes anteriores para configurar un cliente habilitado con CSFLE, consulta los siguientes recursos:

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).

Su Clave Maestra de Cliente (CMK) es la clave que MongoDB utiliza para cifrar sus Claves de Cifrado de Datos (DEK) durante la creación. Sin acceso a una CMK, su aplicación cliente no puede descifrar las DEK asociadas.

Si elimina una DEK, todos los campos cifrados con ella se vuelven ilegibles permanentemente. Si elimina una CMK, todos los campos cifrados con una DEK que la utilice se vuelven ilegibles permanentemente.

Advertencia

La Clave Maestra del Cliente es la clave más sensible en el Cifrado Consultable. Si su CMK se ve comprometida, todos sus datos cifrados pueden descifrarse. Utilice un Sistema de Gestión de Claves remoto para almacenar su CMK.

Importante

Utilice un proveedor de servicios de administración remota de claves

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ía utilizar un KMS remoto, consulte Razones para utilizar un KMS remoto.

Para ver una lista de todos los proveedores de KMS compatibles, consulte la página Proveedores de KMS.

Para ver diagramas que detallan cómo interactúan su colección DEK, CMK y Key Vault en todas las arquitecturas de proveedores de KMS compatibles, consulte Proveedores de KMS de CSFLE.

Su colección Key Vault es la colección de MongoDB que utiliza para almacenar documentos de clave de cifrado de datos(DEK) cifrados. Los documentosDEK son documentos BSON que contienen DEK 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 a crear una colección MongoDB, consulte Bases de datos y colecciones.

Tip

Característica de mongosh

El mongosh método crea automáticamente un índice único en KeyVault.createKey() el keyAltNames campo si no existe ninguno.

Puede usar cualquier espacio de nombres que no sea de administrador para almacenar su colección de Key Vault. Por convención, los ejemplos de esta documentación usan el encryption.__keyVault espacio de nombres.

Advertencia

No utilice la base de datos admin para almacenar colecciones relacionadas con el cifrado. Si utiliza la base de datos de administración para esta colección, es posible que su cliente MongoDB no pueda acceder ni descifrar sus datos por falta de permisos.

Las aplicaciones con acceso a la colección read Key Vault pueden recuperar claves de cifrado de datos (DEK) cifradas consultando la colección. Sin embargo, solo las aplicaciones con acceso a la clave maestra del cliente (CMK) utilizadapara cifrar una DEK pueden usarla para cifrar o descifrar. Debe conceder a su aplicación acceso tanto a la colección Key Vault como a su CMK 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 saber cómo otorgarle a su aplicación acceso a su CMK, consulte el tutorial Tutoriales.

De forma predeterminada, MongoDB almacena la colección de Key Vault en el clúster conectado. MongoDB también permite alojar la colección de Key Vault en una implementación de MongoDB distinta a la del clúster conectado. Las aplicaciones deben tener acceso tanto al clúster que aloja la colección de Key Vault como al clúster de conexión para realizar operaciones de cifrado consultable.

Para especificar el clúster que aloja su colección de Key Vault, utilice el keyVaultClient campo del objeto de su MongoClient cliente. Para obtener más información sobre las opciones de configuración específicas de CSFLE en el MongoClient objeto de su cliente,consulte Opciones de MongoClient específicas de CSFLE.

Para agregar un DEK a su colección de Key Vault, utilice el createKey método de un ClientEncryption objeto.

Para eliminar o actualizar una DEK, utilice operaciones CRUD estándar. Una DEK se almacena en MongoDB como un documento y se le puede aplicar cualquier operación de documento.

Para ver un tutorial que muestra cómo crear un DEK, consulte Inicio rápido.

Tip

Características específicas de mongosh

Volver

Schemas

En esta página