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 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:

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:

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:

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

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:

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

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

KeyVault.deleteKey()

Importante

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

Volver

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

En esta página