En esta guía puedes aprender cómo gestionar tus claves de cifrado con un Sistema de Gestión de Claves (KMS) en tu aplicación.
Overview
Este procedimiento le indica cómo rotar las claves de cifrado para Queryable Encryption usando
mongosh. Rotar las DEK consiste en reenvolverlas con una nueva Clave maestra del cliente, por lo que los términos "rotar" y "reenvolver" a veces se utilizan indistintamente.
Después de completar esta guía, deberías poder rotar tu clave maestra de cliente (CMK) en tu sistema de gestión de claves y luego envolver nuevamente los DEK existentes en tu Colección de Bóvedas de Llaves con tu nuevo CMK.
Advertencia
Al rotar las claves, confirmar que no se estén utilizando para cifrar ninguna clave o dato antes de borrarlas. Si borras un DEK, todos los campos cifrados con ese DEK pasarán a ser ilegibles de forma permanente. Si borras una llave maestra de cliente, todos los campos cifrados con una DEK usando esa llave maestra de cliente se volverán permanentemente ilegibles.
Información relacionada
Para una explicación detallada de los conceptos incluidos en este procedimiento, consulta los temas a continuación.
Para obtener más información sobre las claves y los almacenes de claves, consulte Claves de cifrado y bóvedas de claves. Para ver una lista de proveedores de KMS admitidos, consulta la página Proveedores de KMS.
Para tutoriales detallados sobre cómo configurar una aplicación habilitada con Queryable Encryption con cada uno de los proveedores compatibles de KMS, consulte Descripción general: Habilitar Queryable Encryption.
Procedimiento
Rota tu clave maestra de cliente en tu sistema de gestión de claves
El proceso para rotar su llave maestra de cliente depende de su proveedor de KMS. Para obtener más detalles, consulte la documentación de su proveedor de claves:
Azure: Configurar la rotación automática de claves criptográficas en Azure Key Vault
GCP: Rotar una clave
Una vez que rota la llave maestra de cliente, MongoDB la utiliza para envolver todas las nuevas DEK. Para volver a envolver DEK existentes, continúe con los siguientes pasos.
Gira tus claves de cifrado de datos usando KeyVault.rewrapManyDataKey()
El método KeyVault.rewrapManyDataKey() descifra automáticamente varias llaves de cifrado de datos y las vuelve a cifrar usando la llave maestra de cliente especificada. Luego, actualiza las claves en la Colección de Bóvedas de Llaves.
El método tiene la siguiente sintaxis:
let keyVault = db.getMongo().getKeyVault() keyVault.rewrapManyDataKey( { "<Query filter document>" }, { provider: "<KMS provider>", masterKey: { "<dataKeyOpts Key>" : "<dataKeyOpts Value>" } } )
Especifica un documento de filtro de query para seleccionar las claves a rotar, u omite el argumento para rotar todas las claves en la Colección de Bóvedas de Llaves
Si especificas un documento de filtro de query, pero ninguna clave coincide, entonces no se rotan claves.
Especifique el proveedor KMS
Especifica el
masterKeyutilizando la nueva llave maestra de cliente, u omite el argumento para rotar las claves utilizando la llave maestra de clienteexistente
Sus DEK se dejan sin cambios después de reenvolverlos con la nueva llave maestra de cliente. El proceso de rotación de claves es sin interrupciones y no interrumpe tu aplicación.