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
/ /
Encriptación a nivel de campo

Gestión de claves maestras y de cifrado de datos

Nuevo en la versión 4.2.

El cifrado del lado del cliente a nivel de campo requiere un Key Management Service (KMS) para acceder a una llave maestra de cliente (CMK). MongoDB encripta automáticamente las claves de cifrado de datos utilizando la CMK especificada durante creación de llave de cifrado de datos.

Eliminar la llave maestra de cliente hace que todas las claves de cifrado de datos cifradas con esa llave maestra de cliente sean permanentemente ilegibles, lo cual a su vez hace que todos los valores cifrados con esas claves de cifrado de datos sean permanentemente ilegibles.

El cifrado a nivel de campo del lado del cliente es compatible con los siguientes proveedores de KMS:

IMPORTANTE: Para el soporte de AWS KMS, utilice mongosh, o el shell heredado de mongo de MongoDB 4.2.2 o posterior. El 4.2.0 y el 4.2.1 legacy mongo shell no admite el servicio AWS KMS debido a un cambio inesperado en el objeto de respuesta KMS. Ver SERVIDOR-44721 para más información.

El cifrado del lado del cliente de MongoDB es compatible con el uso de Amazon Web Services Key Management Service para cifrar y descifrar las llaves de cifrado de datos. Específicamente, MongoDB transmite de manera segura la clave de cifrado de datos a AWS KMS para cifrar o descifrar utilizando la Clave maestra de cliente (CMK) especificada. La llave maestra de cliente nunca sale de AWS KMS.

mongosh admite dos métodos para configurar el acceso a KMS de AWS:

  • Utiliza las opciones de línea de comandos de cifrado a nivel de campo en el lado del cliente, o

  • Use el constructor Mongo() para crear una conexión de base de datos con las opciones de configuración KMS de AWS requeridas .

Configurar el acceso a un KMS de AWS requiere como mínimo un clave de acceso de AWS y su clave secreta correspondiente. El usuario de IAM asociado a la clave de acceso debe tener al menos una política con las siguientes acciones:

Nota

Implementar el Principio de Mínimos Privilegios para el acceso a KMS

Considera configurar los roles de usuario de IAM de manera que MongoDB solo tenga acceso a las acciones y recursos necesarios para funcionar.

Por ejemplo, la siguiente política JSON limita las acciones requeridas a una sola llave maestra de cliente:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:Encrypt"
],
"Resource": "arn:aws:kms:region:account:key/12a345b6-cd7e-8f9g-0h1i-jk23l45mn6o7"
}
]
}

Para obtener documentación completa sobre la gestión de claves de cifrado de datos con AWS KMS, consulte Gestionar claves de cifrado de datos y seleccione la pestaña "Amazon Web Services KMS".

MongoDB cifrado del lado del cliente ofrece soporte para usar el Azure Key Vault Key Management Service para cifrar y descifrar claves de cifrado de datos. Específicamente, MongoDB transmite de forma segura la clave de cifrado de datos a Azure Key Vault para cifrar o descifrar utilizando la Clave Maestra del Cliente (CMK) especificada. La llave maestra de cliente nunca sale del Azure Key Vault.

mongosh permite especificar Azure Key Vault como un KMS usando el constructor Mongo() usando las opciones de configuración de KMS.

Para configurar el acceso a Azure Key Vault se requieren como mínimo un ID de inquilino de Azure, un ID de cliente y un secreto de cliente. El ID de inquilino debe permitir realizar las siguientes acciones:

Nota

MongoDB no es compatible con la autenticación de certificados de cliente de Azure (también conocida como autenticación mutua TLS).

Para obtener documentación completa sobre la administración de claves de cifrado de datos mediante Azure Key Vault, consulte Administrar claves de cifrado de datos y seleccione la pestaña "Azure Key Vault".

El cifrado del lado del cliente de MongoDB soporta usar la Google Cloud KMS para cifrar y descifrar las llaves de cifrado de datos. Específicamente, MongoDB transfiere de manera segura la llave de cifrado de datos a Google Cloud KMS para cifrar o descifrar usando la llave maestra de cliente (llave maestra de cliente) especificada. La llave maestra de cliente nunca abandona el Google Cloud KMS.

mongosh permite especificar Google Cloud KMS como un KMS usando el constructor de Mongo() utilizando las opciones de configuración de KMS.

Configurar el acceso a Google Cloud KMS requiere como mínimo un correo electrónico de Google Cloud y la clave privada asociada. La cuenta de correo electrónico de Google Cloud debe tener los siguientes permisos de IAM para la llave privada especificada:

  • cloudkms.cryptoKeyVersions.useToEncrypt

  • cloudkms.cryptoKeyVersions.useToDecrypt

Estos permisos de IAM están incluidos en determinados roles predefinidos de Google Cloud o pueden incluirse en un rol personalizado de Google Cloud.

Para obtener documentación completa sobre la administración de claves de cifrado de datos con Google Cloud KMS, consulte Administrar claves de cifrado de datos y seleccione la pestaña "Google Cloud KMS".

mongosh permite especificar una clave gestionada localmente como KMS utilizando el constructor Mongo(). La clave local debe ser una string de 96bytes de longitud.

Para obtener documentación completa sobre la administración de claves de cifrado de datos utilizando una clave administrada localmente, consulte Administrar claves de cifrado de datos y seleccione la pestaña "Archivo de clave local".

El key vault es una colección que almacena llaves de cifrado de datos para su uso con cifrado a nivel de campo. Las claves de cifrado de datos se cifran mediante una clave maestra del cliente (CMK) gestionada a través de un sistema de gestión de claves (KMS).compatible.

mongosh Proporciona métodos asistentes para la gestión de claves de cifrado de datos:

Caso de uso
Métodos asistentes

Recuperación de claves de cifrado de datos

Crear o modificar claves de cifrado de datos

Eliminación de claves de cifrado de datos

KeyVault.deleteKey()

Importante

La remoción de una llave de cifrado de datos convierte en permanentemente ilegibles todos los campos cifrados mediante esa llave de cifrado de datos.

Las aplicaciones con read acceso a la Colección de Bóvedas de Llaves pueden recuperar claves de cifrado de datos haciendo consultas en la colección. Sin embargo, solo las aplicaciones con acceso a la llave maestra de cliente utilizada para cifrar una clave de cifrado de datos pueden usar esa clave para el cifrado o descifrado.

De forma predeterminada, MongoDB almacena la colección del almacén de claves en el clúster conectado. MongoDB también permite especificar un clúster remoto como almacén de claves. Las aplicaciones deben tener acceso tanto al clúster del almacén de claves remoto como al clúster de conexión para realizar operaciones de cifrado a nivel de campo del lado del cliente.

Las claves de cifrado de datos tienen la siguiente estructura:

{
"_id" : UUID("<string>"),
"keyMaterial" : BinData(0,"<encrypted binary data string>"),
"creationDate" : ISODate("2019-08-20T15:45:02.575Z"),
"updateDate" : ISODate("2019-08-20T15:45:02.575Z"),
"status" : <int>,
"version" : NumberLong(0),
"masterKey" : {
"provider" : "<string>",
"key" : "<string>",
"region" : "<string>",
"endpoint" : "<string>"
},
"keyAltNames" : [
"<string>"
]
}

El cifrado a nivel de campo del lado del cliente depende de la unicidad de los valores keyAltNames. El método mongosh KeyVault.createKey() crea un índice único en keyAltNames si no existe uno. Las aplicaciones pueden usar el comando listIndexes en la Colección de Bóvedas de Llaves para comprobar si existe el índice único. Si el índice único no existe, las aplicaciones deben crearlo antes de gestionar la clave de cifrado de datos.

Para una documentación completa sobre la gestión de llaves de cifrado de datos, consulta Gestionar llaves de cifrado de datos.

Volver

Cifrado explícito (manual) a nivel de campo del lado del cliente

En esta página