Docs Menu
Docs Home
/ /

Proveedores de KMS

Conozca más sobre el Sistema de Gestión de Claves (Los proveedores deKMS admiten cifrado en uso.

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 de claves automatizadas

  • 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

En el cifrado en uso, su sistema de administración de claves:

  • Crea y encripta 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 claves maestras del cliente y las claves de cifrado de datos, consulte Claves de cifrado y bóvedas de claves.

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:

Diagrama

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.

Para crear una clave de cifrado de datos:

  • Crear una instancia ClientEncryption instancia en su aplicación habilitada para cifrado consultable o CSFLE:

    • Proporcione un kmsProviders objeto que especifique las credenciales que su aplicación utiliza para autenticarse con su proveedor de KMS.

  • Cree una clave de cifrado de datos con el método CreateDataKey del objeto ClientEncryption en su aplicación.

    • Proporcione un dataKeyOpts objeto que especifique con qué clave su KMS debe cifrar su nueva clave de cifrado de datos.

Para ver un tutorial que demuestra cómo crear y cifrar una clave de cifrado de datos, consulte 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.

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 habilitado para cifrado en uso

  • Estructura de objetos kmsProviders

  • Estructura de objetos dataKeyOpts

Tanto el cifrado consultable como CSFLE admiten los siguientes proveedores de sistemas de gestión de claves:

Esta sección proporciona información relacionada con el uso del servicio de administración de claves de AWS en su aplicación habilitada para cifrado consultable o CSFLE.

Para ver un tutorial que demuestra cómo usar AWS KMS 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 AWS.

El siguiente diagrama describe la arquitectura de una aplicación habilitada con Queryable Encryption utilizando AWS KMS.

Diagrama KMS

Nota

El cliente no puede acceder a la clave maestra del cliente

Al utilizar el Sistema de administración de claves anterior, su aplicación habilitada para cifrado consultable no tiene acceso a su clave maestra de cliente.

La siguiente tabla presenta la estructura de un objeto kmsProviders para AWS KMS:

Campo
Requerido para el usuario de IAM
Requerido para el rol de IAM
Descripción

Identificación de clave de acceso

Identifica al usuario de la cuenta.

Tecla de acceso secreto

Contiene las credenciales de autenticación del usuario de la cuenta.

Session Token

No

Contiene un token obtenido de AWS Security Token Service (STS).

La siguiente tabla presenta la estructura de un objeto dataKeyOpts para AWS KMS:

Campo
Requerido
Descripción

clave

región

No

Región de AWS de su clave maestra, por ejemplo, "us-west-2"; obligatorio solo si no se especifica en su ARN.

punto final

No

Nombre de host personalizado para el punto final de AWS si está configurado para su cuenta.

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.

El siguiente diagrama describe la arquitectura de una aplicación habilitada para cifrado consultable que utiliza Azure Key Vault.

Diagrama KMS

Nota

El cliente no puede acceder a la clave maestra del cliente

Al utilizar el Sistema de administración de claves anterior, su aplicación habilitada para cifrado consultable no tiene acceso a su clave maestra de cliente.

La siguiente tabla presenta la estructura de un objeto kmsProviders para Azure Key Vault:

Campo
Requerido
Descripción

azure.tenantId

Identifica la organización de la cuenta.

azure.clientId

Identifica el clientId para autenticar su aplicación registrada.

azure.clientSecret

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. El valor predeterminado es login.microsoftonline.com y solo es necesario para instancias de Azure no comerciales, como cuentas gubernamentales o de China.

La siguiente tabla presenta la estructura de un objeto dataKeyOpts para Azure Key Vault:

Campo
Requerido
Descripción

keyName

Nombre de la llave maestra

Versión de clave

No, pero muy recomendable.

Versión de la llave maestra

Punto final de keyVault

URL del almacén de claves. Por ejemplo, myVaultName.vault.azure.net

Advertencia

Si no incluye un keyVersion campo, Azure Key Vault intentará descifrar las claves de cifrado de datos con la clave maestra de cliente más reciente. Si rota la CMK, pero no reencapsula las claves de cifrado de datos con la nueva clave maestra, el intento de descifrar una DEK existente fallará, ya que está cifrada con la versión anterior de la CMK.

Esta sección proporciona información relacionada con el uso de Google Cloud Key Management en su aplicación habilitada para cifrado consultable o CSFLE.

Para ver un tutorial que demuestra cómo usar GCP KMS 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 GCP.

El siguiente diagrama describe la arquitectura de una aplicación habilitada para cifrado consultable que utiliza GCP KMS.

Diagrama KMS

Nota

El cliente no puede acceder a la clave maestra del cliente

Al utilizar el Sistema de administración de claves anterior, su aplicación habilitada para cifrado consultable no tiene acceso a su clave maestra de cliente.

La siguiente tabla presenta la estructura de un objeto kmsProviders para GCP KMS:

Campo
Requerido
Descripción

correo electrónico

Identifica la dirección de correo electrónico de su cuenta de servicio.

clave privada

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:
-----BEGIN PRIVATE KEY-----\nyour-private-key\n-----END PRIVATE KEY-----\n
The value you would specify for this field is:
your-private-key
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 :
cat user-key.json | jq -r .private_key | openssl pkcs8 -topk8 -nocrypt -inform PEM -outform DER | base64 -w 0

punto final

No

Especifica un nombre de host y un número de puerto para el servidor de autenticación. El valor predeterminado es oauth2.googleapis.com.

La siguiente tabla presenta la estructura de un objeto dataKeyOpts para GCP KMS:

Campo
Requerido
Descripción

ID del proyecto

Identificador de su proyecto en el que creó la clave.

ubicación

Región especificada para tu clave.

llavero

Identificador del grupo de claves al que pertenece su clave.

keyName

Identificador de la clave maestra simétrica.

Versión de clave

No

Especifica la versión de la clave especificada. Si no se especifica, se utiliza la versión predeterminada.

punto final

No

Especifica el host y el puerto opcional de Cloud KMS. El valor predeterminado es cloudkms.googleapis.com.

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 la publicación de blog Cómo configurar el motor de secretos KMIP de HashiCorp Vault con MongoDB CSFLE o cifrado consultable.

El siguiente diagrama describe la arquitectura de una aplicación habilitada para cifrado consultable que utiliza un proveedor de claves compatible con KMIP.

Diagrama

Importante

El cliente accede a la clave maestra del cliente

Cuando su aplicación con cifrado consultable habilitado utiliza un proveedor de claves compatible con KMIP sin especificar la delegated opción, accede directamente a su clave maestra del cliente. Para evitar el acceso directo a su CMK, puede configurar la delegated opción como true en su objeto dataKeyOpts.

La siguiente tabla presenta la estructura de un objeto kmsProviders para un sistema de administración de claves compatible con KMIP:

Nota

Autenticar mediante TLS/SSL

Su aplicación habilitada para cifrado consultable se autentica a través de TLS/SSL cuando utiliza KMIP.

Campo
Requerido
Descripción

punto final

Especifica un nombre de host y un número de puerto para el servidor de autenticación.

La siguiente tabla presenta la estructura de un objeto dataKeyOpts para un sistema de administración de claves compatible con KMIP:

Campo
Requerido
Descripción

keyId

No

El keyId campo de un 96 objeto administrado de datos secretos de bytes almacenado en su proveedor de claves compatible con KMIP.

Si no especifica el keyId campo en el masterKey documento que envía a su proveedor de claves compatible con KMIP, el controlador crea un nuevo objeto administrado de 96 datos secretos de bytes en su proveedor de claves compatible con KMIP para que actúe como su clave maestra.

punto final

La URI de su proveedor de claves compatible con KMIP.

delegado

No

Configure esta opción en true para delegar el cifrado y descifrado de su DEK a su proveedor de claves compatible con KMIP.Delegar estas funciones al proveedor de claves compatible con KMIP garantiza que nunca tendrá acceso directo a la CMK.

Si no configura la opción delegated en true, su aplicación accede y transporta directamente su clave maestra de cliente desde el proveedor de KMIP.

IMPORTANTE: La delegated opción no está disponible en los controladores Ruby o Go.

Esta sección proporciona información relacionada con el uso de un proveedor de clave local en su aplicación habilitada para cifrado consultable o CSFLE.

Advertencia

Proteja su archivo de clave local en producción

Recomendamos almacenar sus claves maestras de cliente en un sistema de gestión de claves (KMS) remoto. Para aprender a usar un KMS remoto en su implementación de cifrado consultable, consulte la guía "Tutoriales de cifrado consultable".

Si decide usar un proveedor de claves local en producción, tenga mucho cuidado y no lo almacene en el sistema de archivos. Considere inyectar la clave en su aplicación cliente mediante un proceso sidecar o utilice otro método que la mantenga 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.

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 que utiliza un proveedor de clave local.

Diagrama de arquitectura del proveedor de claves local.

La siguiente tabla presenta la estructura de un objeto kmsProviders para un proveedor de clave local:

Campo
Requerido
Descripción

clave

La clave maestra utilizada para cifrar/descifrar claves de datos. Se transmite como una cadena codificada en base64.

Cuando utiliza un proveedor de clave local, especifica su clave maestra de cliente a través de su objeto kmsProviders.

Volver

Llaves y bóvedas de claves

En esta página