Overview
Aprende sobre el sistema de gestión de claves (Los proveedores deKMS admiten cifrado en uso.
Razones para utilizar un sistema de gestión remota de claves
El uso de un sistema de administración de claves remoto para administrar su clave maestra de cliente tiene las siguientes ventajas sobre el uso de su sistema de archivos local para alojarla:
Almacenamiento seguro de la clave con auditoría de acceso
Reducción del riesgo de problemas de permisos de acceso
Disponibilidad y distribución de la clave a clientes remotos
Copia de seguridad y recuperación automatizadas de claves
Gestión centralizada del ciclo de vida de las claves de cifrado
Además, para los siguientes proveedores de KMS, su KMS encripta y desencripta de forma remota su clave de encriptación de datos, lo que garantiza que su clave maestra de cliente nunca quede expuesta a su aplicación habilitada para encriptación consultable o CSFLE:
Amazon Web Services KMS
Azure Key Vault
Google Cloud KMS
Tareas del sistema de gestión de claves
En el cifrado en uso, tu sistema de gestión de claves:
Crea y cifra la clave maestra del cliente
Cifra las claves de cifrado de datos creadas por su aplicación
Descifra las llaves de cifrado de datos
Para obtener más información sobre las llaves maestras de cliente y las llaves de cifrado de datos, consulta Claves de cifrado y bóvedas de claves.
Crea y almacena tu llave maestra de cliente
Para crear una clave maestra de cliente, configure su sistema de gestión de claves para generar su clave maestra de cliente de la siguiente manera:

Para ver un tutorial que demuestra cómo crear y almacenar una CMK en su KMS preferido, consulte el Tutorial de cifrado automático de cifrado consultable o el Tutorial de cifrado automático de CSFLE.
Crear y cifrar una clave de cifrado de datos
Para crear una clave de cifrado de datos:
Crear una instancia
ClientEncryptioninstancia en su aplicación habilitada para Queryable Encryption o CSFLE:Proporciona un objeto
kmsProvidersque especifique las credenciales que tu aplicación utiliza para autenticarse con su proveedor de KMS.
Cree una clave de cifrado de datos con el método
CreateDataKeydel objetoClientEncryptionen su aplicación.Proporcione un
dataKeyOptsobjeto que especifique con qué clave su KMS debe cifrar su nueva clave de cifrado de datos.
Para ver un tutorial que muestra cómo crear y cifrar una clave de cifrado de datos, consulta los siguientes recursos:
Para ver la estructura de los objetos kmsProviders y dataKeyOpts para todos los proveedores de KMS compatibles, consulta Servicios de gestión de claves compatibles.
Servicios de gestión de claves compatibles
Las siguientes secciones de esta página presentan la siguiente información para todos los proveedores del sistema de gestión de llaves:
Arquitectura del cliente con cifrado en uso habilitado
Estructura de objetos
kmsProvidersEstructura de objetos
dataKeyOpts
Tanto el cifrado consultable como CSFLE admiten los siguientes proveedores de sistemas de gestión de claves:
Amazon Web Services KMS
Esta sección proporciona información relacionada con el uso del servicio de administración de claves de AWS en tu aplicación con Queryable Encryption o CSFLE habilitado.
Para ver un tutorial que demuestre cómo usar AWS KMS en tu aplicación, consulta Descripción general: Habilitar Queryable Encryption o Utiliza cifrado automático a nivel de campo del lado del cliente con AWS.
Arquitectura
El siguiente diagrama describe la arquitectura de una aplicación habilitada con Queryable Encryption utilizando AWS KMS.

Nota
El cliente no puede acceder a la llave maestra de cliente
Cuando uses el sistema de gestión de claves anterior, tu aplicación habilitada para Queryable Encryption no tendrá acceso a tu llave maestra de cliente.
Objeto kmsProviders
La siguiente tabla presenta la estructura de un objeto kmsProviders para AWS KMS:
Campo | Obligatorio para el usuario de IAM | Requerido para el rol de IAM | Descripción |
|---|---|---|---|
ID de clave de acceso | Sí | Sí | Identifica al usuario de la cuenta. |
Tecla de acceso secreto | Sí | Sí | Contiene las credenciales de autenticación del usuario de la cuenta. |
Session Token | No | Sí | Contiene un token obtenido del Servicio de token de seguridad de AWS (AWS STS). |
Objeto dataKeyOpts
La siguiente tabla presenta la estructura de un objeto dataKeyOpts para AWS KMS:
Campo | Requerido | Descripción |
|---|---|---|
llave | Sí | Número de recurso de Amazon (ARN) de la clave maestra. |
region | No | Región de AWS de tu clave maestra, p. ej. "us-west-2"; requeridos solo si no se especifican en tu ARN. |
endpoint | No | Nombre de host personalizado para el endpoint de AWS si está configurado para su cuenta. |
Azure Key Vault
Esta sección proporciona información relacionada con el uso de Azure Key Vault en su aplicación habilitada para Queryable Encryption o CSFLE.
Para ver un tutorial que demuestra cómo usar Azure Key Vault en su aplicación, consulte Descripción general: Habilitar el cifrado consultable o Usar el cifrado automático a nivel de campo del lado del cliente con Azure.
Arquitectura
El siguiente diagrama describe la arquitectura de una aplicación habilitada para Queryable Encryption que usa Azure Key Vault.

Nota
El cliente no puede acceder a la llave maestra de cliente
Cuando uses el sistema de gestión de claves anterior, tu aplicación habilitada para Queryable Encryption no tendrá acceso a tu llave maestra de cliente.
Objeto kmsProviders
La siguiente tabla presenta la estructura de un objeto kmsProviders para Azure Key Vault:
Campo | Requerido | Descripción |
|---|---|---|
azure.tenantId | Sí | Identifica la organización de la cuenta. |
azure.clientId | Sí | Identifica el clientId para autenticar tu aplicación registrada. |
azure.clientSecret | Sí | Se utiliza para autenticar su aplicación registrada. |
Punto final de la plataforma de identidad de Azure | No | Especifica un nombre de host y un número de puerto para el servidor de autenticación. De forma predeterminada, se utiliza login.microsoftonline.com y solo es necesario para instancias de Azure no comerciales, como cuentas gubernamentales o de China. |
Objeto dataKeyOpts
La siguiente tabla presenta la estructura de un objeto dataKeyOpts para Azure Key Vault:
Campo | Requerido | Descripción |
|---|---|---|
keyName | Sí | Nombre de la llave maestra |
versión de la clave | No, pero se recomienda encarecidamente | Versión de la llave maestra |
keyVaultEndpoint | Sí | URL de la bóveda de claves. P. ej. myVaultName.vault.azure.net |
Advertencia
Si no se incluye un campo keyVersion, Azure Key Vault intentará descifrar las llaves de cifrado de datos utilizando la llave maestra de cliente más reciente. Si rotas la llave maestra de cliente, pero no vuelves a envolver las claves de cifrado de datos con la nueva clave maestra, el intento de descifrar una DEK existente falla, ya que la DEK está cifrada con la versión anterior de la llave maestra de cliente.
Google Cloud Platform KMS
Esta sección proporciona información relacionada con el uso de Google Cloud Key Management en tu aplicación habilitada para Queryable Encryption o CSFLE.
Para ver un tutorial que demuestra cómo utilizar el KMS de GCP en su aplicación, consulte la descripción general: habilite el Queryable Encryption o utilice el cifrado automático a nivel de campo del lado del cliente con GCP.
Arquitectura
El siguiente diagrama describe la arquitectura de una aplicación habilitada para Queryable Encryption utilizando GCP KMS.

Nota
El cliente no puede acceder a la llave maestra de cliente
Cuando uses el sistema de gestión de claves anterior, tu aplicación habilitada para Queryable Encryption no tendrá acceso a tu llave maestra de cliente.
Objeto kmsProviders
La siguiente tabla presenta la estructura de un objeto kmsProviders para GCP KMS:
Campo | Requerido | Descripción | |||
|---|---|---|---|---|---|
correo electrónico | Sí | Identifica la dirección de correo electrónico de tu cuenta de servicio. | |||
clave privada | Sí | Identifies your service account private key in either
base64 string or
Binary subtype 0
format without the prefix and suffix markers. Suppose your service account private key value is as follows: The value you would specify for this field is: If you have a user-key.json credential file, you can extract
the string by executing the following command in a bash or
similar shell. The following command requires that you install
OpenSSL
: | |||
endpoint | No | Especifica un nombre de host y un número de puerto para el servidor de autenticación. Por defecto es oauth2.googleapis.com. |
Objeto dataKeyOpts
La siguiente tabla presenta la estructura de un objeto dataKeyOpts para GCP KMS:
Campo | Requerido | Descripción |
|---|---|---|
ID del proyecto | Sí | Identificador para tu proyecto en el que creaste la clave. |
ubicación | Sí | Región especificada para tu clave. |
keyRing | Sí | Identificador del grupo de claves al que pertenece su clave. |
keyName | Sí | Identificador de la clave maestra simétrica. |
versión de la clave | No | Especifica la versión de la clave nombrada. Si no se especifica, se utiliza la versión por defecto de la clave. |
endpoint | No | Especifica el host y el puerto opcional de nube KMS. El valor por defecto es |
KMIP
Esta sección proporciona información relacionada con el uso de un sistema de administración de claves compatible con KMIP en su aplicación habilitada para cifrado consultable o CSFLE.
Para aprender a configurar KMIP con HashiCorp Vault, consulte Administrar claves de cifrado de cliente con Vault como un servidor KMIP en la documentación de HashiCorp Vault.
Arquitectura
El siguiente diagrama describe la arquitectura de una aplicación con Queryable Encryption habilitada que utiliza un proveedor de claves compatible con KMIP.

Importante
El cliente Accede a la llave maestra de cliente
Cuando tu aplicación habilitada para Queryable Encryption utiliza un proveedor de claves que cumple con KMIPsin especificar la opción delegated, tu aplicación accede directamente a tu llave maestra de cliente. Para evitar el acceso directo a tu llave maestra de cliente, puedes establecer la opción delegated en true en tu objeto dataKeyOpts.
Objeto kmsProviders
La siguiente tabla presenta la estructura de un objeto kmsProviders para un Sistema de Gestión de Claves compatible con KMIP:
Nota
Autentícate a través de TLS/SSL
Tu aplicación habilitada con Queryable Encryption se autentica a través de TLS/SSL al usar KMIP.
Campo | Requerido | Descripción |
|---|---|---|
endpoint | Sí | Especifica un nombre de host y un número de puerto para el servidor de autenticación. |
Objeto dataKeyOpts
La siguiente tabla presenta la estructura de un objeto dataKeyOpts para un Sistema de Gestión de Claves compatible con KMIP:
Campo | Requerido | Descripción |
|---|---|---|
keyId | No | El Si no se especifica el campo |
endpoint | Sí | El URI de su proveedor de claves compatible con KMIP. |
delegado | No | Configure esta opción en Si no se configura la opción IMPORTANTE: La opción |
Proveedor de claves local
Esta sección proporciona información relacionada con el uso de un proveedor de claves local en tu aplicación habilitada para Queryable Encryption o CSFLE.
Advertencia
Asegurar tu archivo de clave local en producción
Recomendamos almacenar sus claves maestras de cliente en un sistema de gestión de claves remoto (KMS). Para aprender a utilizar un KMS remoto en tu implementación de cifrado consultable, consulta la guía Tutoriales sobre Queryable Encryption.
Si optas por usar un proveedor local de llaves en producción, proceder con extrema precaución y no almacenarlo en el sistema de archivos. Considera inyectar la clave en la aplicación cliente mediante un proceso sidecar o usa otro método que mantenga la clave segura.
Para ver un tutorial que demuestra cómo usar un proveedor de clave local para probar el cifrado consultable, consulte el Inicio rápido de cifrado consultable o el Inicio rápido de CSFLE.
Arquitectura
Al usar un proveedor de claves local para realizar pruebas, la aplicación recupera la clave maestra del cliente del equipo donde se ejecuta. Para usar un proveedor de claves local en producción, utilice un enfoque que no almacene la clave en el sistema de archivos. Por ejemplo, puede inyectar la clave en el proceso cliente mediante un sidecar.
El siguiente diagrama describe la arquitectura de una aplicación habilitada para cifrado consultable mediante un proveedor de claves local.

Objeto kmsProviders
La siguiente tabla presenta la estructura de un objeto kmsProviders para un proveedor de claves local:
Campo | Requerido | Descripción |
|---|---|---|
llave | Sí | La clave maestra utilizada para cifrar/descifrar claves de datos. Se transmite como una cadena codificada en base64. |
Objeto dataKeyOpts
Cuando usas un Proveedor de Clave Local, especificas tu llave maestra de cliente a través de tu objeto kmsProviders.