Nuevo en la versión 4.2.
Servicios de gestión de claves compatibles
El cifrado a nivel de campo del lado del cliente requiere un Servicio de Gestión de Claves (KMS) para acceder a una Clave Maestra del Cliente (CMK). MongoDB cifra automáticamente las claves de cifrado de datos utilizando la CMK especificada durante Creación de clave de cifrado de datos.
Al eliminar la CMK, todas las claves de cifrado de datos cifradas con esa CMK quedan permanentemente ilegibles, lo que a su vez queda permanentemente ilegibles todos los valores cifrados con esas claves de cifrado de datos.
El cifrado a nivel de campo del lado del cliente admite los siguientes proveedores de KMS:
Amazon Web Services KMS
IMPORTANTE: Para obtener soporte de AWS KMS, utilice mongosh, o el shell de MongoDB 4.2.2 o posterior heredado mongo. Los shells heredados 4.2.0 y 4.2.1 mongo no son compatibles con el servicio AWS KMS debido a un cambio inesperado en el objeto de respuesta de KMS. Consulte SERVER-44721 Para más información.
El cifrado del lado del cliente de MongoDB permite usar el Servicio de Gestión de Claves de Amazon Web Services para cifrar y descifrar claves de cifrado de datos. En concreto, MongoDB transmite de forma segura la clave de cifrado de datos a AWS KMS para su cifrado o descifrado mediante la Clave Maestra del Cliente (CMK) especificada. La CMK nunca abandona AWS KMS.
mongosh Admite dos métodos para configurar el acceso a un AWS KMS:
Utiliza las opciones de línea de comandos de cifrado a nivel de campo en el lado del cliente, o
Utilice el constructor para crear una conexión de base de datos con las
Mongo()opciones de configuración de AWS KMS requeridas.
Para configurar el acceso a un AWS KMS se requiere como mínimo una 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:
kms:Encrypt(referencia)kms:Decrypt(referencia)
Nota
Implementar el principio de privilegio mínimo para el acceso a KMS
Considere configurar los roles de usuario de IAM de modo 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 única CMK:
{ "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 administración de claves de cifrado de datos mediante AWS KMS, consulte Administrar claves de cifrado de datos y seleccione la pestaña "Amazon Web Services KMS".
Azure Key Vault
El cifrado del lado del cliente de MongoDB permite usar el servicio de administración de claves de Azure Key Vault para cifrar y descifrar claves de cifrado de datos. En concreto, MongoDB transmite de forma segura la clave de cifrado de datos a Azure Key Vault para su cifrado o descifrado mediante la clave maestra del cliente (CMK) especificada. La CMK nunca abandona Azure Key Vault.
mongosh admite la especificación de Azure Key Vault como un KMS mediante el constructor mediante las Mongo() opcionesde 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:
wrap key(referencia)unwrap key(referencia)
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".
Google Cloud Platform KMS
El cifrado del lado del cliente de MongoDB permite usar Google Cloud KMS para cifrar y descifrar claves de cifrado de datos. En concreto, MongoDB transmite de forma segura la clave de cifrado de datos a Google Cloud KMS para cifrar o descifrar utilizando la clave maestra del cliente (CMK) especificada. La CMK nunca abandona Google Cloud KMS.
mongosh admite la especificación de Google Cloud KMS como un KMS mediante el constructor usando las Mongo() opcionesde configuración de KMS.
Para configurar el acceso a Google Cloud KMS, se requiere como mínimo una cuenta de correo electrónico de Google Cloud y su clave privada asociada. La cuenta de correo electrónico de Google Cloud debe tener los siguientes permisos de IAM para la clave privada especificada:
cloudkms.cryptoKeyVersions.useToEncryptcloudkms.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".
Clave gestionada localmente
mongosh permite especificar una clave administrada localmente como KMS mediante el constructor.Mongo() La clave local debe ser una 96cadena de bytes.
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".
Bóveda de claves de cifrado
El almacén de claves es una colección que almacena claves de cifrado de datos para su uso con el cifrado a nivel de campo del lado del cliente. Las claves de cifrado de datos se cifran mediante una clave maestra del cliente (CMK) administrada mediante un sistema de gestión de claves (KMS) compatible.
mongosh Proporciona métodos auxiliares para la gestión de claves de cifrado de datos:
Caso de uso | Métodos auxiliares |
|---|---|
Recuperación de claves de cifrado de datos | |
Crear o modificar claves de cifrado de datos | |
Eliminación de claves de cifrado de datos | ImportanteAl eliminar una clave de cifrado de datos, todos los campos cifrados con esa clave de cifrado de datos quedarán permanentemente ilegibles. |
Las aplicaciones con acceso a la colección del almacén de claves pueden recuperar claves de cifrado de datos consultando la colección. Sin embargo, solo las aplicaciones con acceso a la CMK utilizada para cifrar una clave de cifrado de datos pueden usarla para cifrar o read descifrar.
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 obtener documentación completa sobre la administración de claves de cifrado de datos, consulte Administrar claves de cifrado de datos.