Docs Menu
Docs Home
/ /

Proveedores de KMS

Aprende sobre el sistema de gestión de claves (KMS) proveedores que admite encriptación en uso.

Utilizar un Sistema de Gestión de Claves remoto para gestionar tu Clave Maestra de Cliente tiene las siguientes ventajas en comparación con alojarla en tu sistema de archivos local:

  • 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 para 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 KMS, tu KMS encripta y desencripta de forma remota tu llave de cifrado de datos, asegurando que tu llave maestra de cliente nunca esté expuesta a tus aplicaciones de Queryable Encryption o habilitadas para CSFLE:

  • Amazon Web Services KMS

  • Azure Key Vault

  • Google Cloud KMS

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

Para crear una llave maestra de cliente, configure su Sistema de Gestión de Claves para generar su llave maestra de cliente de la siguiente manera:

Diagrama

Para ver un tutorial que demuestra cómo crear y almacenar una llave maestra de cliente en tu KMS preferida, consulta el Tutorial de Queryable Encryption Automatic Encryption o el Tutorial de Cifrado Automático CSFLE.

Para crear una llave de cifrado de datos:

  • Instancie un ClientEncryption instancia en su aplicación habilitada para Queryable Encryption o CSFLE:

    • Proporciona un objeto kmsProviders que especifique las credenciales que tu aplicación utiliza para autenticarse con el proveedor de tu KMS.

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

    • Proporcione un objeto dataKeyOpts 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, consulte Servicios de gestión de claves admitidos.

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 kmsProviders

  • Estructura de objetos dataKeyOpts

Tanto Queryable Encryption como CSFLE admiten los siguientes proveedores del Sistema de gestión de claves:

Esta sección proporciona información relacionada con el uso de AWS Key Management Service 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.

El siguiente diagrama describe la arquitectura de una aplicación habilitada para Queryable Encryption que utiliza AWS KMS.

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

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

Identifica al usuario de la cuenta.

Clave de acceso secreta

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

Session Token

No

Contiene un token obtenido del Servicio de token de seguridad de AWS (AWS STS).

Para usar la obtención automática de credenciales, especifique un objeto vacío para la credencial aws. Luego, el driver obtiene credenciales utilizando su flujo estándar de búsqueda de credenciales de AWS:

{ "aws": {} }

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

Campo
Requerido
Descripción

llave

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.

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 demuestre cómo utilizar Azure Key Vault en tu aplicación, consulta Descripción general: Habilitar Queryable Encryption o Utiliza cifrado de campo a nivel de cliente automático con Azure.

El siguiente diagrama describe la arquitectura de una aplicación habilitada para Queryable Encryption que usa Azure Key Vault.

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

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 tu aplicación registrada.

azure.clientSecret

Se utiliza para autenticar la aplicación registrada.

azure.identityPlatformEndpoint

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.

Para utilizar un token de acceso en lugar de credenciales del principal de servicio, especifica el campo azure.accessToken:

{ "azure": { "accessToken": "<access token>"} }

Para usar la obtención automática de credenciales, especifique un objeto vacío para la credencial azure. El driver luego recupera credenciales del Servicio de Metadatos de Instancia de Azure:

{ "azure": {} }

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

Campo
Requerido
Descripción

keyName

Nombre de la clave maestra

versión de la clave

No, pero se recomienda encarecidamente

Versión de la clave maestra

keyVaultEndpoint

URL de la bóveda clave. Por ejemplo: myVaultName.vault.azure.net

Advertencia

Si no 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 cubres de nuevo las llaves de cifrado de datos con la nueva clave maestra, intentar descifrar una llave de cifrado de datos existente fallará, ya que la llave de cifrado de datos está cifrada con la versión anterior de la llave maestra de cliente.

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.

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

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

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 tu cuenta de servicio.

llave 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

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.

Para utilizar un token de acceso en lugar de credenciales de cuenta de servicio, especifique el campo accessToken:

{ "gcp": { "accessToken": "<access token>" } }

Para usar la obtención automática de credenciales, especifique un objeto vacío para la credencial gcp. A continuación, el driver recupera credenciales desde el servicio de metadatos de GCP:

{ "gcp": {} }

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

Campo
Requerido
Descripción

ID del proyecto

Identificador para tu proyecto en el que creaste la clave.

Ubicación

Región especificada para tu clave.

keyRing

Identificador del grupo de claves al que pertenece su clave.

keyName

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 cloudkms.googleapis.com.

Esta sección proporciona información relacionada con el uso de un KMIP Sistema de Gestión de Claves compatible en tu aplicación con Queryable Encryption o CSFLE habilitada.

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.

El siguiente diagrama describe la arquitectura de una aplicación habilitada para Queryable Encryption utilizando un proveedor de claves compatible con KMIP.

Diagrama

Importante

El cliente Accede a la llave maestra de cliente

Cuando tu aplicación habilitada para Queryable Encryption utiliza un proveedor de claves compatible con KMIPsin especificar la opción delegated, tu aplicación accede directamente a tu llave maestra de cliente. Para evitar acceder directamente a tu llave maestra de cliente, puedes configurar la opción delegated como true en tu objeto dataKeyOpts.

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

Su aplicación habilitada con Queryable Encryption se autentica mediante TLS/SSL al usar KMIP.

Campo
Requerido
Descripción

endpoint

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 Gestión de Claves compatible con KMIP:

Campo
Requerido
Descripción

keyId

No

El campo keyId de un byte 96 Objeto gestionado de datos secretos almacenado en tu proveedor de claves compatible con KMIP.

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

endpoint

El URI de su proveedor de claves compatible con KMIP.

delegado

No

Configure esta opción a true para delegar el cifrado y desencriptación de su DEK a su proveedor de claves compatible con KMIP. Delegar estas tareas en el proveedor de claves compatible con KMIPgarantiza que nunca tenga acceso directo a la llave maestra de cliente.

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

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

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 tus Llaves Maestras de Cliente en un Sistema de Gestión de Claves remoto (KMS). Para aprender cómo usar un KMS remoto en tu implementación de Queryable Encryption, consulta la guía de Tutoriales de 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 demuestre cómo utilizar un Proveedor de Llaves Local para probar Cifrado Consultable, consulta el Inicio rápido de Queryable Encryption o el Inicio rápido de CSFLE.

Cuando usas un Proveedor de Llaves Locales para pruebas, la aplicación recupera la Llave maestra del cliente del equipo en el que se ejecuta. Para usar un Proveedor de Claves Local en producción, utiliza un enfoque que no almacene la clave en el sistema de archivos. Por ejemplo, puedes inyectar la clave en el proceso del cliente a través de un sidecar.

El siguiente diagrama describe la arquitectura de una aplicación habilitada para cifrado consultable mediante un proveedor de claves local.

Diagrama de arquitectura del proveedor de claves local.

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

Campo
Requerido
Descripción

llave

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

Cuando usas un Proveedor de Clave Local, especificas tu llave maestra de cliente a través de tu objeto kmsProviders.

Volver

Llaves y bóvedas de claves

En esta página