Nuevo en la versión 4.2.
El cifrado a nivel de campo del lado del cliente utiliza claves de cifrado de datos para el cifrado y descifrado. mongosh método auxiliar
getKeyVault() devuelve un objeto de almacén de claves para crear, modificar y eliminar claves de cifrado de datos.
Esta página documenta el cifrado a nivel de campo del lado del cliente usando mongosh, y no se refiere a ningún driver oficial compatible con MongoDB 4.2+. Consulta la documentación relevante para los métodos y la sintaxis específicos del controlador para la gestión de claves de cifrado de datos.
Crear una llave de cifrado de datos
El siguiente procedimiento utiliza mongosh para crear una llave de cifrado de datos que se utilizará con el cifrado y descifrado a nivel de campo del lado del cliente. Para obtener orientación sobre la gestión de claves de cifrado de datos utilizando un driver compatible con 4.2+, consulta la documentación del driver.
Utilice las pestañas a continuación para seleccionar el KMS apropiado para tu implementación:
Lanzar mongosh.
Configurar el cifrado a nivel de campo en el lado del cliente para el AWS KMS requiere un AWS Access Key ID y su correspondiente Secret Access Key. La clave de acceso de AWS debe corresponder a un usuario de IAM con todos los permisos de listar y leer para el servicio KMS.
Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mongosh utilizando variables de entorno.
Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY
A continuación, cree una sesión de mongosh utilizando las opciones de --eval, --shell, y --nodb:
mongosh --eval " var AWS_ACCESS_KEY_ID = '$AWS_ACCESS_KEY_ID' var AWS_SECRET_ACCESS_KEY = '$AWS_SECRET_ACCESS_KEY' " \ --shell --nodb
Este ejemplo abre mongosh sin conexión a una base de datos MongoDB. La opción --eval establece las variables AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY en mongosh al valor de las variables de entorno correspondientes. Las variables especificadas también son compatibles con el AWS CLI.
Crear la configuración de cifrado.
En mongosh, crea una nueva variable ClientSideFieldLevelEncryptionOptions para almacenar el documento de configuración de cifrado a nivel de campo del lado del cliente:
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "aws" : { "accessKeyId" : AWS_ACCESS_KEY_ID, "secretAccessKey" : AWS_SECRET_ACCESS_KEY } } }
Conéctese con soporte de cifrado.
En mongosh, utiliza el constructor Mongo() para establecer una conexión de base de datos con el clúster de destino. Especifica el ClientSideFieldLevelEncryptionOptions documento como el segundo parámetro para el constructor Mongo() con el fin de configurar la conexión para el cifrado a nivel de campo lado del cliente:
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
Reemplaza el replaceMe.example.net URI con la cadena de conexión para el clúster de destino.
Utiliza el objeto csfleDatabaseConnection para acceder a los métodos del shell de cifrado a nivel de campo del lado del cliente.
Para obtener documentación completa sobre cómo establecer conexiones de bases de datos configuradas para el cifrado a nivel de campo del lado del cliente, consulte la referencia del Mongo() constructor.
Cree el objeto Key Vault.
Utilice el método en getKeyVault() el csfleDatabaseConnection objeto de conexión de base de datos para crear el keyVault objeto:
keyVault = csfleDatabaseConnection.getKeyVault();
Importante
El cifrado a nivel de campo en el lado del cliente depende de la unicidad de los nombres alternativos de la clave forzada por el servidor. getKeyVault() crea un índice único en keyAltNames si no existe uno. No elimines el índice único creado por getKeyVault().
Crear la llave de cifrado de datos.
Utiliza el método KeyVault.createKey() en el objeto keyVault para crear una nueva llave de cifrado de datos en el Key Vault:
keyVault.createKey( "aws", "arn:aws:kms:region:account:key/keystring", [ "keyAlternateName" ] )
Dónde:
El primer parámetro debe ser
"aws"para especificar el KMS de Amazon Web Services configurado.El segundo parámetro debe ser el Nombre de recurso de Amazon (ARN) completo de la llave maestra de cliente (CMK). MongoDB utiliza la llave maestra de cliente especificada para cifrar la clave de cifrado de datos.
El tercer parámetro puede ser un arreglo de uno o más
keyAltNamespara la llave de cifrado de datos. Cada nombre alternativo de clave debe ser único.getKeyVault()crea un índice único enkeyAltNamespara aplicar unicidad en el campo si aún no existe uno. Los nombres alternativos clave facilitan la localización de la llave de cifrado de datos.
Si la operación es correcta, createKey() devuelve el UUID de la nueva clave de cifrado de datos.UUID es un Binary (BinData) objeto BSON con subtipo 4 que identifica de forma única la clave de cifrado de datos. La UUID cadena es la representación hexadecimal de los datos binarios subyacentes.
Si estás proporcionando la clave de cifrado de datos a un driver oficial de MongoDB para configurar el cifrado automático a nivel de campo en el lado del cliente, debes utilizar la representación base64 del string UUID.
Puedes ejecutar la siguiente operación en mongosh para convertir una cadena hexadecimal UUID en su representación base64:
UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()
Proporcione el UUID de su propia clave de cifrado de datos a este comando, como se devolvió de createKey() arriba, o como se describe en Recuperar una clave de cifrado de datos existente.
Lanzar mongosh.
Configurar el cifrado a nivel de campo en el lado del cliente para Azure Key Vault requiere un ID de Tenant, un ID de Cliente y un Cliente Secreto válidos.
Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mongosh utilizando variables de entorno.
Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:
AZURE_TENANT_IDAZURE_CLIENT_IDAZURE_CLIENT_SECRET
A continuación, cree una sesión mongosh --eval --shellutilizando --nodb las opciones, y:
mongosh --eval " var AZURE_TENANT_ID = '$AZURE_TENANT_ID' var AZURE_CLIENT_ID = '$AZURE_CLIENT_ID' var AZURE_CLIENT_SECRET = '$AZURE_CLIENT_SECRET' " \ --shell --nodb
Este ejemplo abre mongosh sin conexión a una base de datos MongoDB. La opción --eval establece las variables AZURE_TENANT_ID, AZURE_CLIENT_ID y AZURE_CLIENT_SECRET en mongosh al valor de las variables de entorno correspondientes.
Crear la configuración de cifrado.
En mongosh, crea una nueva variable ClientSideFieldLevelEncryptionOptions para almacenar el documento de configuración de cifrado a nivel de campo del lado del cliente:
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "azure" : { "tenantId" : AZURE_TENANT_ID, "clientId" : AZURE_CLIENT_ID, "clientSecret" : AZURE_CLIENT_SECRET } } }
Conéctese con soporte de cifrado.
En mongosh, utiliza el constructor Mongo() para establecer una conexión de base de datos con el clúster de destino. Especifica el ClientSideFieldLevelEncryptionOptions documento como el segundo parámetro para el constructor Mongo() con el fin de configurar la conexión para el cifrado a nivel de campo lado del cliente:
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
Reemplaza el replaceMe.example.net URI con la cadena de conexión para el clúster de destino.
Utiliza el objeto csfleDatabaseConnection para acceder a los métodos del shell de cifrado a nivel de campo del lado del cliente.
Para obtener documentación completa sobre cómo establecer conexiones de bases de datos configuradas para el cifrado a nivel de campo del lado del cliente, consulte la referencia del Mongo() constructor.
Cree el objeto Key Vault.
Utilice el método en getKeyVault() el csfleDatabaseConnection objeto de conexión de base de datos para crear el keyVault objeto:
keyVault = csfleDatabaseConnection.getKeyVault();
Importante
El cifrado a nivel de campo en el lado del cliente depende de la unicidad de los nombres alternativos de la clave forzada por el servidor. getKeyVault() crea un índice único en keyAltNames si no existe uno. No elimines el índice único creado por getKeyVault().
Crear la llave de cifrado de datos.
Utiliza el método KeyVault.createKey() en el objeto keyVault para crear una nueva llave de cifrado de datos en el Key Vault:
keyVault.createKey( "azure", { keyName: "keyvaultname", keyVaultEndpoint: "endpointname" }, [ "keyAlternateName" ] )
Dónde:
El primer parámetro debe ser
"azure"para especificar el Azure Key Vault configurado.El segundo parámetro debe ser un documento que contenga:
el nombre de tu Azure Key Vault
el nombre DNS de Azure Key Vault que se va a usar (por ejemplo,
my-key-vault.vault.azure.net)
El tercer parámetro puede ser un arreglo de uno o más
keyAltNamespara la llave de cifrado de datos. Cada nombre alternativo de clave debe ser único.getKeyVault()crea un índice único enkeyAltNamespara aplicar unicidad en el campo si aún no existe uno. Los nombres alternativos clave facilitan la localización de la llave de cifrado de datos.
Si la operación es correcta, createKey() devuelve el UUID de la nueva clave de cifrado de datos.UUID es un Binary (BinData) objeto BSON con subtipo 4 que identifica de forma única la clave de cifrado de datos. La UUID cadena es la representación hexadecimal de los datos binarios subyacentes.
Si estás proporcionando la clave de cifrado de datos a un driver oficial de MongoDB para configurar el cifrado automático a nivel de campo en el lado del cliente, debes utilizar la representación base64 del string UUID.
Puedes ejecutar la siguiente operación en mongosh para convertir una cadena hexadecimal UUID en su representación base64:
UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()
Proporcione el UUID de su propia clave de cifrado de datos a este comando, como se devolvió de createKey() arriba, o como se describe en Recuperar una clave de cifrado de datos existente.
Lanzar mongosh.
La configuración del cifrado a nivel de campo del lado del cliente para el GCP KMS requiere el correo electrónico de GCP y su llave privada asociada.
Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mongosh utilizando variables de entorno.
Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:
GCP_EMAILGCP_PRIVATEKEY
A continuación, cree una sesión mongosh --eval --shellutilizando --nodb las opciones, y:
mongosh --eval " var GCP_EMAIL = '$GCP_EMAIL' var GCP_PRIVATEKEY = '$GCP_PRIVATEKEY' " \ --shell --nodb
Este ejemplo abre mongosh sin una conexión a una base de datos MongoDB. La opción --eval establece las variables GCP_EMAIL y GCP_PRIVATEKEY en mongosh al valor de las variables de entorno correspondientes.
Crear la configuración de cifrado.
En mongosh, crea una nueva variable ClientSideFieldLevelEncryptionOptions para almacenar el documento de configuración de cifrado a nivel de campo del lado del cliente:
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "gcp" : { "email" : GCP_EMAIL, "privateKey" : GCP_PRIVATEKEY } } }
Conéctese con soporte de cifrado.
En mongosh, utiliza el constructor Mongo() para establecer una conexión de base de datos con el clúster de destino. Especifica el ClientSideFieldLevelEncryptionOptions documento como el segundo parámetro para el constructor Mongo() con el fin de configurar la conexión para el cifrado a nivel de campo lado del cliente:
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
Reemplaza el replaceMe.example.net URI con la cadena de conexión para el clúster de destino.
Utiliza el objeto csfleDatabaseConnection para acceder a los métodos del shell de cifrado a nivel de campo del lado del cliente.
Para obtener documentación completa sobre cómo establecer conexiones de bases de datos configuradas para el cifrado a nivel de campo del lado del cliente, consulte la referencia del Mongo() constructor.
Cree el objeto Key Vault.
Utilice el método en getKeyVault() el csfleDatabaseConnection objeto de conexión de base de datos para crear el keyVault objeto:
keyVault = csfleDatabaseConnection.getKeyVault();
Importante
El cifrado a nivel de campo en el lado del cliente depende de la unicidad de los nombres alternativos de la clave forzada por el servidor. getKeyVault() crea un índice único en keyAltNames si no existe uno. No elimines el índice único creado por getKeyVault().
Crear la llave de cifrado de datos.
Utiliza el método KeyVault.createKey() en el objeto keyVault para crear una nueva llave de cifrado de datos en el Key Vault:
keyVault.createKey( "gcp", { projectId: "projectid", location: "locationname", keyRing: "keyringname", keyName: "keyname" }, [ "keyAlternateName" ] )
Dónde:
El primer parámetro debe ser
"gcp"para especificar el Google Cloud KMS configurado.El segundo parámetro debe ser un documento que contenga
projectides el nombre de tu proyecto GCP, comomy-projectlocationnamees la ubicación del llavero KMS, comoglobalkeyringnamees el nombre del llavero KMS, comomy-keyringkeynamees el nombre de tu clave.
El tercer parámetro puede ser un arreglo de uno o más
keyAltNamespara la llave de cifrado de datos. Cada nombre alternativo de clave debe ser único.getKeyVault()crea un índice único enkeyAltNamespara aplicar unicidad en el campo si aún no existe uno. Los nombres alternativos clave facilitan la localización de la llave de cifrado de datos.
Si la operación es correcta, createKey() devuelve el UUID de la nueva clave de cifrado de datos.UUID es un Binary (BinData) objeto BSON con subtipo 4 que identifica de forma única la clave de cifrado de datos. La UUID cadena es la representación hexadecimal de los datos binarios subyacentes.
Si estás proporcionando la clave de cifrado de datos a un driver oficial de MongoDB para configurar el cifrado automático a nivel de campo en el lado del cliente, debes utilizar la representación base64 del string UUID.
Puedes ejecutar la siguiente operación en mongosh para convertir una cadena hexadecimal UUID en su representación base64:
UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()
Proporcione el UUID de su propia clave de cifrado de datos a este comando, como se devolvió de createKey() arriba, o como se describe en Recuperar una clave de cifrado de datos existente.
Generar una clave de cifrado.
Configurar el cifrado a nivel de campo del lado del cliente para una clave gestionada localmente requiere especificar una string64-codificada de 96bytes sin saltos de línea.
Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mongosh utilizando variables de entorno.
La siguiente operación genera una clave que cumple con los requisitos establecidos y la añade al ~/.profile del usuario. Si la clave DEV_LOCAL_KEY ya existe, omita esta operación.
echo "export DEV_LOCAL_KEY=\"$(head -c 96 /dev/urandom | base64 | tr -d '\n')\"" >> ~/.profile
El sistema operativo host podría requerir cerrar sesión y volver a iniciarla para actualizar las variables de entorno cargadas. También se puede usar el comando source ~/.profile para actualizar manualmente la shell.
Nota
Su sistema operativo host o shell puede tener diferentes procedimientos para configurar variables de entorno persistentes. Consulte la documentación de su sistema operativo host o shell para obtener un procedimiento más específico, según corresponda.
Lanzar mongosh.
Cree una sesión mongosh --eval --shellutilizando --nodb las opciones, y:
mongosh --eval "var LOCAL_KEY = '$DEV_LOCAL_KEY' " \ --shell --nodb
El ejemplo abre automáticamente mongosh sin conexión a una base de datos MongoDB. La opción --eval establece la variable LOCAL_KEY en mongosh con el valor de la variable de entorno correspondiente.
Crear la configuración de cifrado.
En mongosh, crea una nueva variable ClientSideFieldLevelEncryptionOptions para almacenar el documento de configuración de cifrado a nivel de campo del lado del cliente:
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, LOCAL_KEY) } } }
Conéctese con soporte de cifrado.
En mongosh, utiliza el constructor Mongo() para establecer una conexión de base de datos con el clúster de destino. Especifica el ClientSideFieldLevelEncryptionOptions documento como el segundo parámetro para el constructor Mongo() con el fin de configurar la conexión para el cifrado a nivel de campo lado del cliente:
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
Reemplaza el replaceMe.example.net URI con la cadena de conexión para el clúster de destino.
Utiliza el objeto csfleDatabaseConnection para acceder a los métodos del shell de cifrado a nivel de campo del lado del cliente.
Para obtener documentación completa sobre cómo establecer conexiones de bases de datos configuradas para el cifrado a nivel de campo del lado del cliente, consulte la referencia del Mongo() constructor.
Cree el objeto Key Vault.
Utilice el método en getKeyVault() el csfleDatabaseConnection objeto de conexión de base de datos para crear el keyVault objeto:
keyVault = csfleDatabaseConnection.getKeyVault();
Importante
El cifrado a nivel de campo en el lado del cliente depende de la unicidad de los nombres alternativos de la clave forzada por el servidor. getKeyVault() crea un índice único en keyAltNames si no existe uno. No elimines el índice único creado por getKeyVault().
Crear la llave de cifrado de datos.
Utiliza el método KeyVault.createKey() en el objeto keyVault para crear una nueva llave de cifrado de datos en el Key Vault:
keyVault.createKey( "local", [ "keyAlternateName" ] )
Dónde:
El primer parámetro debe ser
localpara especificar la clave administrada localmente configurada.El segundo parámetro puede ser un arreglo de una o más
keyAltNamespara la llave de cifrado de datos. Cada nombre alternativo de clave debe ser único.getKeyVault()crea un índice único enkeyAltNamespara aplicar la unicidad en el campo si aún no existe uno. Los nombres alternativos clave facilitan la localización de llave de cifrado de datos.
Si la operación es correcta, createKey() devuelve el UUID de la nueva clave de cifrado de datos.UUID es un Binary (BinData) objeto BSON con subtipo 4 que identifica de forma única la clave de cifrado de datos. La UUID cadena es la representación hexadecimal de los datos binarios subyacentes.
Si estás proporcionando la clave de cifrado de datos a un driver oficial de MongoDB para configurar el cifrado automático a nivel de campo en el lado del cliente, debes utilizar la representación base64 del string UUID.
Puedes ejecutar la siguiente operación en mongosh para convertir una cadena hexadecimal UUID en su representación base64:
UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()
Proporcione el UUID de su propia clave de cifrado de datos a este comando, como se devolvió de createKey() arriba, o como se describe en Recuperar una clave de cifrado de datos existente.
Gestionar el nombre alternativo de una clave de cifrado de datos
El siguiente procedimiento utiliza para administrar los nombres alternativos de una clave de cifrado de datos. Para obtener instrucciones sobre la administración de claves de cifrado de datos con mongosh un 4.2controlador compatible con +, consulte la documentación del controlador.
Si todavía se encuentra dentro mongosh de la sesión configurada en los pasos Crear una clave de cifrado de datos anteriores, puede saltar directamente al 5 paso.
Utilice las pestañas a continuación para seleccionar el KMS apropiado para su implementación:
Lanzar mongosh.
Configurar el cifrado a nivel de campo en el lado del cliente para el AWS KMS requiere un AWS Access Key ID y su correspondiente Secret Access Key. La clave de acceso de AWS debe corresponder a un usuario de IAM con todos los permisos de listar y leer para el servicio KMS.
Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mongosh utilizando variables de entorno.
Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY
A continuación, cree una sesión de mongosh utilizando las opciones de --eval, --shell, y --nodb:
mongosh --eval " var AWS_ACCESS_KEY_ID = '$AWS_ACCESS_KEY_ID' var AWS_SECRET_ACCESS_KEY = '$AWS_SECRET_ACCESS_KEY' " \ --shell --nodb
Este ejemplo abre mongosh sin una conexión a una base de datos MongoDB. La opción --eval establece las variables AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY en mongosh al valor de las variables de entorno correspondientes. Las variables especificadas también son soportadas por la AWS CLI.
Crear la configuración de cifrado.
En mongosh, crea una nueva variable ClientSideFieldLevelEncryptionOptions para almacenar el documento de configuración de cifrado a nivel de campo del lado del cliente:
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "aws" : { "accessKeyId" : AWS_ACCESS_KEY_ID, "secretAccessKey" : AWS_SECRET_ACCESS_KEY } } }
Conéctese con soporte de cifrado.
En mongosh, utiliza el constructor Mongo() para establecer una conexión de base de datos con el clúster de destino. Especifica el ClientSideFieldLevelEncryptionOptions documento como el segundo parámetro para el constructor Mongo() con el fin de configurar la conexión para el cifrado a nivel de campo lado del cliente:
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
Reemplaza el replaceMe.example.net URI con la cadena de conexión para el clúster de destino.
Utiliza el objeto csfleDatabaseConnection para acceder a los métodos del shell de cifrado a nivel de campo del lado del cliente.
Para obtener documentación completa sobre cómo establecer conexiones de bases de datos configuradas para el cifrado a nivel de campo del lado del cliente, consulte la referencia del Mongo() constructor.
Cree el objeto Key Vault.
Utilice el método en getKeyVault() el csfleDatabaseConnection objeto de conexión de base de datos para crear el keyVault objeto:
keyVault = csfleDatabaseConnection.getKeyVault();
Importante
El cifrado a nivel de campo en el lado del cliente depende de la unicidad de los nombres alternativos de la clave forzada por el servidor. getKeyVault() crea un índice único en keyAltNames si no existe uno. No elimines el índice único creado por getKeyVault().
Administrar el nombre alternativo de la clave de cifrado de datos.
Utiliza los siguientes pasos para agregar o remover un Nombre Alternativo de Clave existente.
- Agregar nombre alternativo de clave
Importante
El cifrado a nivel de campo del lado del cliente depende de la unicidad de los nombres alternativos de clave, impuesta por el servidor. Verifique que exista un índice único en
keyAltNamesantes de agregar un nuevo nombre alternativo de clave. Si se eliminó el índice único,debe volver a crearlo antes de agregar cualquier nombre alternativo de clave.Utilice para agregar un nuevo nombre alternativo a una clave de cifrado de
KeyVault.addKeyAlternateName()datos:keyVault.addKeyAlternateName( UUID("<Replace Me With The UUID Of The Key To Modify"), "NewKeyAltNameForMyFirstCSFLEDataKey" ) Dónde:
El primer parámetro debe ser el UUID de la clave de cifrado de datos a modificar.
El segundo parámetro debe ser una string única.
getKeyVault()crea un índice único enkeyAltNamespara aplicar la unicidad de los nombres alternativos de claves.
KeyVault.addKeyAlternateName()devuelve el documento de la clave de cifrado de datos antes de la modificación. UtilizaKeyVault.getKey()para recuperar la clave de cifrado de datos modificada.- Remover nombre alternativo clave
Utilice para eliminar un nombre alternativo de clave de una clave de cifrado de
KeyVault.removeKeyAlternateName()datos:keyVault.removeKeyAlternateName( UUID("<Replace Me With The UUID Of The Key To Modify"), "NewKeyAltNameForMyFirstCSFLEDataKey" ) Dónde:
El primer parámetro debe ser el UUID de la clave de cifrado de datos a modificar.
El segundo parámetro debe ser un nombre alternativo de clave de string.
KeyVault.removeKeyAlternateName()devuelve la llave de cifrado de datos antes de la modificación. UtilizaKeyVault.getKey()para recuperar la clave de cifrado de datos modificada.
Lanzar mongosh.
Configurar el cifrado a nivel de campo en el lado del cliente para Azure Key Vault requiere un ID de Tenant, un ID de Cliente y un Cliente Secreto válidos.
Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mongosh utilizando variables de entorno.
Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:
AZURE_TENANT_IDAZURE_CLIENT_IDAZURE_CLIENT_SECRET
A continuación, cree una sesión mongosh --eval --shellutilizando --nodb las opciones, y:
mongosh --eval " var AZURE_TENANT_ID = '$AZURE_TENANT_ID' var AZURE_CLIENT_ID = '$AZURE_CLIENT_ID' var AZURE_CLIENT_SECRET = '$AZURE_CLIENT_SECRET' " \ --shell --nodb
Este ejemplo abre mongosh sin conexión a una base de datos MongoDB. La opción --eval establece las variables AZURE_TENANT_ID, AZURE_CLIENT_ID y AZURE_CLIENT_SECRET en mongosh al valor de las variables de entorno correspondientes.
Crear la configuración de cifrado.
En mongosh, crea una nueva variable ClientSideFieldLevelEncryptionOptions para almacenar el documento de configuración de cifrado a nivel de campo del lado del cliente:
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "azure" : { "tenantId" : AZURE_TENANT_ID, "clientId" : AZURE_CLIENT_ID, "clientSecret" : AZURE_CLIENT_SECRET } } }
Conéctese con soporte de cifrado.
En mongosh, utiliza el constructor Mongo() para establecer una conexión de base de datos con el clúster de destino. Especifica el ClientSideFieldLevelEncryptionOptions documento como el segundo parámetro para el constructor Mongo() con el fin de configurar la conexión para el cifrado a nivel de campo lado del cliente:
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
Reemplaza el replaceMe.example.net URI con la cadena de conexión para el clúster de destino.
Utiliza el objeto csfleDatabaseConnection para acceder a los métodos del shell de cifrado a nivel de campo del lado del cliente.
Para obtener documentación completa sobre cómo establecer conexiones de bases de datos configuradas para el cifrado a nivel de campo del lado del cliente, consulte la referencia del Mongo() constructor.
Cree el objeto Key Vault.
Utilice el método en getKeyVault() el csfleDatabaseConnection objeto de conexión de base de datos para crear el keyVault objeto:
keyVault = csfleDatabaseConnection.getKeyVault();
Importante
El cifrado a nivel de campo en el lado del cliente depende de la unicidad de los nombres alternativos de la clave forzada por el servidor. getKeyVault() crea un índice único en keyAltNames si no existe uno. No elimines el índice único creado por getKeyVault().
Administrar el nombre alternativo de la clave de cifrado de datos.
Utiliza los siguientes pasos para agregar o remover un Nombre Alternativo de Clave existente.
- Agregar nombre alternativo de clave
Importante
El cifrado a nivel de campo del lado del cliente depende de la unicidad de los nombres alternativos de clave, impuesta por el servidor. Verifique que exista un índice único en
keyAltNamesantes de agregar un nuevo nombre alternativo de clave. Si se eliminó el índice único,debe volver a crearlo antes de agregar cualquier nombre alternativo de clave.Utilice para agregar un nuevo nombre alternativo a una clave de cifrado de
KeyVault.addKeyAlternateName()datos:keyVault.addKeyAlternateName( UUID("<Replace Me With The UUID Of The Key To Modify"), "NewKeyAltNameForMyFirstCSFLEDataKey" ) Dónde:
El primer parámetro debe ser el UUID de la clave de cifrado de datos a modificar.
El segundo parámetro debe ser una string única.
getKeyVault()crea un índice único enkeyAltNamespara aplicar la unicidad de los nombres alternativos de claves.
KeyVault.addKeyAlternateName()devuelve el documento de la clave de cifrado de datos antes de la modificación. UtilizaKeyVault.getKey()para recuperar la clave de cifrado de datos modificada.- Remover nombre alternativo clave
Utilice para eliminar un nombre alternativo de clave de una clave de cifrado de
KeyVault.removeKeyAlternateName()datos:keyVault.removeKeyAlternateName( UUID("<Replace Me With The UUID Of The Key To Modify"), "NewKeyAltNameForMyFirstCSFLEDataKey" ) Dónde:
El primer parámetro debe ser el UUID de la clave de cifrado de datos a modificar.
El segundo parámetro debe ser un nombre alternativo de clave de string.
KeyVault.removeKeyAlternateName()devuelve la llave de cifrado de datos antes de la modificación. UtilizaKeyVault.getKey()para recuperar la clave de cifrado de datos modificada.
Lanzar mongosh.
La configuración del cifrado a nivel de campo del lado del cliente para el GCP KMS requiere el correo electrónico de GCP y su llave privada asociada.
Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mongosh utilizando variables de entorno.
Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:
GCP_EMAILGCP_PRIVATEKEY
A continuación, cree una sesión mongosh --eval --shellutilizando --nodb las opciones, y:
mongosh --eval " var GCP_EMAIL = '$GCP_EMAIL' var GCP_PRIVATEKEY = '$GCP_PRIVATEKEY' " \ --shell --nodb
Este ejemplo abre mongosh sin una conexión a una base de datos MongoDB. La opción --eval establece las variables GCP_EMAIL y GCP_PRIVATEKEY en mongosh al valor de las variables de entorno correspondientes.
Crear la configuración de cifrado.
En mongosh, crea una nueva variable ClientSideFieldLevelEncryptionOptions para almacenar el documento de configuración de cifrado a nivel de campo del lado del cliente:
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "gcp" : { "email" : GCP_EMAIL, "privateKey" : GCP_PRIVATEKEY } } }
Conéctese con soporte de cifrado.
En mongosh, utiliza el constructor Mongo() para establecer una conexión de base de datos con el clúster de destino. Especifica el ClientSideFieldLevelEncryptionOptions documento como el segundo parámetro para el constructor Mongo() con el fin de configurar la conexión para el cifrado a nivel de campo lado del cliente:
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
Reemplaza el replaceMe.example.net URI con la cadena de conexión para el clúster de destino.
Utiliza el objeto csfleDatabaseConnection para acceder a los métodos del shell de cifrado a nivel de campo del lado del cliente.
Para obtener documentación completa sobre cómo establecer conexiones de bases de datos configuradas para el cifrado a nivel de campo del lado del cliente, consulte la referencia del Mongo() constructor.
Cree el objeto Key Vault.
Utilice el método en getKeyVault() el csfleDatabaseConnection objeto de conexión de base de datos para crear el keyVault objeto:
keyVault = csfleDatabaseConnection.getKeyVault();
Importante
El cifrado a nivel de campo en el lado del cliente depende de la unicidad de los nombres alternativos de la clave forzada por el servidor. getKeyVault() crea un índice único en keyAltNames si no existe uno. No elimines el índice único creado por getKeyVault().
Administrar el nombre alternativo de la clave de cifrado de datos.
Utiliza los siguientes pasos para agregar o remover un Nombre Alternativo de Clave existente.
- Agregar nombre alternativo de clave
Importante
El cifrado a nivel de campo del lado del cliente depende de la unicidad de los nombres alternativos de clave, impuesta por el servidor. Verifique que exista un índice único en
keyAltNamesantes de agregar un nuevo nombre alternativo de clave. Si se eliminó el índice único,debe volver a crearlo antes de agregar cualquier nombre alternativo de clave.Utilice para agregar un nuevo nombre alternativo a una clave de cifrado de
KeyVault.addKeyAlternateName()datos:keyVault.addKeyAlternateName( UUID("<Replace Me With The UUID Of The Key To Modify"), "NewKeyAltNameForMyFirstCSFLEDataKey" ) Dónde:
El primer parámetro debe ser el UUID de la clave de cifrado de datos a modificar.
El segundo parámetro debe ser una string única.
getKeyVault()crea un índice único enkeyAltNamespara aplicar la unicidad de los nombres alternativos de claves.
KeyVault.addKeyAlternateName()devuelve el documento de la clave de cifrado de datos antes de la modificación. UtilizaKeyVault.getKey()para recuperar la clave de cifrado de datos modificada.- Remover nombre alternativo clave
Utilice para eliminar un nombre alternativo de clave de una clave de cifrado de
KeyVault.removeKeyAlternateName()datos:keyVault.removeKeyAlternateName( UUID("<Replace Me With The UUID Of The Key To Modify"), "NewKeyAltNameForMyFirstCSFLEDataKey" ) Dónde:
El primer parámetro debe ser el UUID de la clave de cifrado de datos a modificar.
El segundo parámetro debe ser un nombre alternativo de clave de string.
KeyVault.removeKeyAlternateName()devuelve la llave de cifrado de datos antes de la modificación. UtilizaKeyVault.getKey()para recuperar la clave de cifrado de datos modificada.
Generar una clave de cifrado.
Configurar el cifrado a nivel de campo del lado del cliente para una clave gestionada localmente requiere especificar una string64-codificada de 96bytes sin saltos de línea.
Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mongosh utilizando variables de entorno.
La siguiente operación genera una clave que cumple con los requisitos establecidos y la añade al ~/.profile del usuario. Si la clave DEV_LOCAL_KEY ya existe, omita esta operación.
echo "export DEV_LOCAL_KEY=\"$(head -c 96 /dev/urandom | base64 | tr -d '\n')\"" >> ~/.profile
El sistema operativo host podría requerir cerrar sesión y volver a iniciarla para actualizar las variables de entorno cargadas. También se puede usar el comando source ~/.profile para actualizar manualmente la shell.
Nota
Su sistema operativo host o shell puede tener diferentes procedimientos para configurar variables de entorno persistentes. Consulte la documentación de su sistema operativo host o shell para obtener un procedimiento más específico, según corresponda.
Lanzar mongosh.
Cree una sesión mongosh --eval --shellutilizando --nodb las opciones, y:
mongosh --eval "var LOCAL_KEY = '$DEV_LOCAL_KEY' " \ --shell --nodb
El ejemplo abre automáticamente mongosh sin conexión a una base de datos MongoDB. La opción --eval establece la variable LOCAL_KEY en mongosh con el valor de la variable de entorno correspondiente.
Crear la configuración de cifrado.
En mongosh, crea una nueva variable ClientSideFieldLevelEncryptionOptions para almacenar el documento de configuración de cifrado a nivel de campo del lado del cliente:
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, LOCAL_KEY) } } }
Conéctese con soporte de cifrado.
En mongosh, utiliza el constructor Mongo() para establecer una conexión de base de datos con el clúster de destino. Especifica el ClientSideFieldLevelEncryptionOptions documento como el segundo parámetro para el constructor Mongo() con el fin de configurar la conexión para el cifrado a nivel de campo lado del cliente:
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
Reemplaza el replaceMe.example.net URI con la cadena de conexión para el clúster de destino.
Utiliza el objeto csfleDatabaseConnection para acceder a los métodos del shell de cifrado a nivel de campo del lado del cliente.
Para obtener documentación completa sobre cómo establecer conexiones de bases de datos configuradas para el cifrado a nivel de campo del lado del cliente, consulte la referencia del Mongo() constructor.
Cree el objeto Key Vault.
Utilice el método en getKeyVault() el csfleDatabaseConnection objeto de conexión de base de datos para crear el keyVault objeto:
keyVault = csfleDatabaseConnection.getKeyVault();
Importante
El cifrado a nivel de campo en el lado del cliente depende de la unicidad de los nombres alternativos de la clave forzada por el servidor. getKeyVault() crea un índice único en keyAltNames si no existe uno. No elimines el índice único creado por getKeyVault().
Administrar el nombre alternativo de la clave de cifrado de datos.
Utiliza los siguientes pasos para agregar o remover un Nombre Alternativo de Clave existente.
- Agregar nombre alternativo de clave
Importante
El cifrado a nivel de campo del lado del cliente depende de la unicidad de los nombres alternativos de clave, impuesta por el servidor. Verifique que exista un índice único en
keyAltNamesantes de agregar un nuevo nombre alternativo de clave. Si se eliminó el índice único,debe volver a crearlo antes de agregar cualquier nombre alternativo de clave.Utilice para agregar un nuevo nombre alternativo a una clave de cifrado de
KeyVault.addKeyAlternateName()datos:keyVault.addKeyAlternateName( UUID("<Replace Me With The UUID Of The Key To Modify"), "NewKeyAltNameForMyFirstCSFLEDataKey" ) Dónde:
El primer parámetro debe ser el UUID de la clave de cifrado de datos a modificar.
El segundo parámetro debe ser una string única.
getKeyVault()crea un índice único enkeyAltNamespara aplicar la unicidad de los nombres alternativos de claves.
KeyVault.addKeyAlternateName()devuelve el documento de la clave de cifrado de datos antes de la modificación. UtilizaKeyVault.getKey()para recuperar la clave de cifrado de datos modificada.- Remover nombre alternativo clave
Utilice para eliminar un nombre alternativo de clave de una clave de cifrado de
KeyVault.removeKeyAlternateName()datos:keyVault.removeKeyAlternateName( UUID("<Replace Me With The UUID Of The Key To Modify"), "NewKeyAltNameForMyFirstCSFLEDataKey" ) Dónde:
El primer parámetro debe ser el UUID de la clave de cifrado de datos a modificar.
El segundo parámetro debe ser un nombre alternativo de clave de string.
KeyVault.removeKeyAlternateName()devuelve la llave de cifrado de datos antes de la modificación. UtilizaKeyVault.getKey()para recuperar la clave de cifrado de datos modificada.
Remover una llave de cifrado de datos
Advertencia
Eliminar una llave de cifrado de datos hace que todos los campos cifrados con esa llave sean permanentemente ilegibles.
El siguiente procedimiento utiliza mongosh para remover una clave de cifrado de datos del almacén de claves. Para obtener orientación sobre la gestión de claves de cifrado de datos utilizando un driver compatible con 4.2+, consulta la documentación del driver.
Si todavía se encuentra dentro mongosh de la sesión configurada en los pasos Crear una clave de cifrado de datos anteriores, puede saltar directamente al 5 paso.
Utilice las pestañas a continuación para seleccionar el KMS apropiado para su implementación:
Lanzar mongosh.
Configurar el cifrado a nivel de campo en el lado del cliente para el AWS KMS requiere un AWS Access Key ID y su correspondiente Secret Access Key. La clave de acceso de AWS debe corresponder a un usuario de IAM con todos los permisos de listar y leer para el servicio KMS.
Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mongosh utilizando variables de entorno.
Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY
A continuación, cree una sesión de mongosh utilizando las opciones de --eval, --shell, y --nodb:
mongosh --eval " var AWS_ACCESS_KEY_ID = '$AWS_ACCESS_KEY_ID' var AWS_SECRET_ACCESS_KEY = '$AWS_SECRET_ACCESS_KEY' " \ --shell --nodb
Este ejemplo abre mongosh sin una conexión a una base de datos MongoDB. La opción --eval establece las variables AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY en mongosh al valor de las variables de entorno correspondientes. Las variables especificadas también son soportadas por la AWS CLI.
Crear la configuración de cifrado.
En mongosh, crea una nueva variable ClientSideFieldLevelEncryptionOptions para almacenar el documento de configuración de cifrado a nivel de campo del lado del cliente:
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "aws" : { "accessKeyId" : AWS_ACCESS_KEY_ID, "secretAccessKey" : AWS_SECRET_ACCESS_KEY } } }
Conéctese con soporte de cifrado.
En mongosh, utiliza el constructor Mongo() para establecer una conexión de base de datos con el clúster de destino. Especifica el ClientSideFieldLevelEncryptionOptions documento como el segundo parámetro para el constructor Mongo() con el fin de configurar la conexión para el cifrado a nivel de campo lado del cliente:
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
Reemplaza el replaceMe.example.net URI con la cadena de conexión para el clúster de destino.
Utiliza el objeto csfleDatabaseConnection para acceder a los métodos del shell de cifrado a nivel de campo del lado del cliente.
Para obtener documentación completa sobre cómo establecer conexiones de bases de datos configuradas para el cifrado a nivel de campo del lado del cliente, consulte la referencia del Mongo() constructor.
Cree el objeto Key Vault.
Utilice el método en getKeyVault() el csfleDatabaseConnection objeto de conexión de base de datos para crear el keyVault objeto:
keyVault = csfleDatabaseConnection.getKeyVault();
Importante
El cifrado a nivel de campo en el lado del cliente depende de la unicidad de los nombres alternativos de la clave forzada por el servidor. getKeyVault() crea un índice único en keyAltNames si no existe uno. No elimines el índice único creado por getKeyVault().
Eliminar la clave de cifrado de datos utilizando UUID su.
Utilice el método en KeyVault.deleteKey() el keyVault objeto para eliminar una clave de datos del almacén de claves:
keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
Lanzar mongosh.
Configurar el cifrado a nivel de campo en el lado del cliente para Azure Key Vault requiere un ID de Tenant, un ID de Cliente y un Cliente Secreto válidos.
Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mongosh utilizando variables de entorno.
Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:
AZURE_TENANT_IDAZURE_CLIENT_IDAZURE_CLIENT_SECRET
A continuación, cree una sesión mongosh --eval --shellutilizando --nodb las opciones, y:
mongosh --eval " var AZURE_TENANT_ID = '$AZURE_TENANT_ID' var AZURE_CLIENT_ID = '$AZURE_CLIENT_ID' var AZURE_CLIENT_SECRET = '$AZURE_CLIENT_SECRET' " \ --shell --nodb
Este ejemplo abre mongosh sin conexión a una base de datos MongoDB. La opción --eval establece las variables AZURE_TENANT_ID, AZURE_CLIENT_ID y AZURE_CLIENT_SECRET en mongosh al valor de las variables de entorno correspondientes.
Crear la configuración de cifrado.
En mongosh, crea una nueva variable ClientSideFieldLevelEncryptionOptions para almacenar el documento de configuración de cifrado a nivel de campo del lado del cliente:
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "azure" : { "tenantId" : AZURE_TENANT_ID, "clientId" : AZURE_CLIENT_ID, "clientSecret" : AZURE_CLIENT_SECRET } } }
Conéctese con soporte de cifrado.
En mongosh, utiliza el constructor Mongo() para establecer una conexión de base de datos con el clúster de destino. Especifica el ClientSideFieldLevelEncryptionOptions documento como el segundo parámetro para el constructor Mongo() con el fin de configurar la conexión para el cifrado a nivel de campo lado del cliente:
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
Reemplaza el replaceMe.example.net URI con la cadena de conexión para el clúster de destino.
Utiliza el objeto csfleDatabaseConnection para acceder a los métodos del shell de cifrado a nivel de campo del lado del cliente.
Para obtener documentación completa sobre cómo establecer conexiones de bases de datos configuradas para el cifrado a nivel de campo del lado del cliente, consulte la referencia del Mongo() constructor.
Cree el objeto Key Vault.
Utilice el método en getKeyVault() el csfleDatabaseConnection objeto de conexión de base de datos para crear el keyVault objeto:
keyVault = csfleDatabaseConnection.getKeyVault();
Importante
El cifrado a nivel de campo en el lado del cliente depende de la unicidad de los nombres alternativos de la clave forzada por el servidor. getKeyVault() crea un índice único en keyAltNames si no existe uno. No elimines el índice único creado por getKeyVault().
Eliminar la clave de cifrado de datos utilizando UUID su.
Utilice el método en KeyVault.deleteKey() el keyVault objeto para eliminar una clave de datos del almacén de claves:
keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
Lanzar mongosh.
La configuración del cifrado a nivel de campo del lado del cliente para el GCP KMS requiere el correo electrónico de GCP y su llave privada asociada.
Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mongosh utilizando variables de entorno.
Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:
GCP_EMAILGCP_PRIVATEKEY
A continuación, cree una sesión mongosh --eval --shellutilizando --nodb las opciones, y:
mongosh --eval " var GCP_EMAIL = '$GCP_EMAIL' var GCP_PRIVATEKEY = '$GCP_PRIVATEKEY' " \ --shell --nodb
Este ejemplo abre mongosh sin una conexión a una base de datos MongoDB. La opción --eval establece las variables GCP_EMAIL y GCP_PRIVATEKEY en mongosh al valor de las variables de entorno correspondientes.
Crear la configuración de cifrado.
En mongosh, crea una nueva variable ClientSideFieldLevelEncryptionOptions para almacenar el documento de configuración de cifrado a nivel de campo del lado del cliente:
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "gcp" : { "email" : GCP_EMAIL, "privateKey" : GCP_PRIVATEKEY } } }
Conéctese con soporte de cifrado.
En mongosh, utiliza el constructor Mongo() para establecer una conexión de base de datos con el clúster de destino. Especifica el ClientSideFieldLevelEncryptionOptions documento como el segundo parámetro para el constructor Mongo() con el fin de configurar la conexión para el cifrado a nivel de campo lado del cliente:
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
Reemplaza el replaceMe.example.net URI con la cadena de conexión para el clúster de destino.
Utiliza el objeto csfleDatabaseConnection para acceder a los métodos del shell de cifrado a nivel de campo del lado del cliente.
Para obtener documentación completa sobre cómo establecer conexiones de bases de datos configuradas para el cifrado a nivel de campo del lado del cliente, consulte la referencia del Mongo() constructor.
Cree el objeto Key Vault.
Utilice el método en getKeyVault() el csfleDatabaseConnection objeto de conexión de base de datos para crear el keyVault objeto:
keyVault = csfleDatabaseConnection.getKeyVault();
Importante
El cifrado a nivel de campo en el lado del cliente depende de la unicidad de los nombres alternativos de la clave forzada por el servidor. getKeyVault() crea un índice único en keyAltNames si no existe uno. No elimines el índice único creado por getKeyVault().
Eliminar la clave de cifrado de datos utilizando UUID su.
Utilice el método en KeyVault.deleteKey() el keyVault objeto para eliminar una clave de datos del almacén de claves:
keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
Generar una clave de cifrado.
Configurar el cifrado a nivel de campo del lado del cliente para una clave gestionada localmente requiere especificar una string64-codificada de 96bytes sin saltos de línea.
Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mongosh utilizando variables de entorno.
La siguiente operación genera una clave que cumple con los requisitos establecidos y la añade al ~/.profile del usuario. Si la clave DEV_LOCAL_KEY ya existe, omita esta operación.
echo "export DEV_LOCAL_KEY=\"$(head -c 96 /dev/urandom | base64 | tr -d '\n')\"" >> ~/.profile
El sistema operativo host podría requerir cerrar sesión y volver a iniciarla para actualizar las variables de entorno cargadas. También se puede usar el comando source ~/.profile para actualizar manualmente la shell.
Nota
Su sistema operativo host o shell puede tener diferentes procedimientos para configurar variables de entorno persistentes. Consulte la documentación de su sistema operativo host o shell para obtener un procedimiento más específico, según corresponda.
Lanzar mongosh.
Cree una sesión mongosh --eval --shellutilizando --nodb las opciones, y:
mongosh --eval "var LOCAL_KEY = '$DEV_LOCAL_KEY' " \ --shell --nodb
El ejemplo abre automáticamente mongosh sin conexión a una base de datos MongoDB. La opción --eval establece la variable LOCAL_KEY en mongosh con el valor de la variable de entorno correspondiente.
Crear la configuración de cifrado.
En mongosh, crea una nueva variable ClientSideFieldLevelEncryptionOptions para almacenar el documento de configuración de cifrado a nivel de campo del lado del cliente:
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, LOCAL_KEY) } } }
Conéctese con soporte de cifrado.
En mongosh, utiliza el constructor Mongo() para establecer una conexión de base de datos con el clúster de destino. Especifica el ClientSideFieldLevelEncryptionOptions documento como el segundo parámetro para el constructor Mongo() con el fin de configurar la conexión para el cifrado a nivel de campo lado del cliente:
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
Reemplaza el replaceMe.example.net URI con la cadena de conexión para el clúster de destino.
Utiliza el objeto csfleDatabaseConnection para acceder a los métodos del shell de cifrado a nivel de campo del lado del cliente.
Para obtener documentación completa sobre cómo establecer conexiones de bases de datos configuradas para el cifrado a nivel de campo del lado del cliente, consulte la referencia del Mongo() constructor.
Cree el objeto Key Vault.
Utilice el método en getKeyVault() el csfleDatabaseConnection objeto de conexión de base de datos para crear el keyVault objeto:
keyVault = csfleDatabaseConnection.getKeyVault();
Importante
El cifrado a nivel de campo en el lado del cliente depende de la unicidad de los nombres alternativos de la clave forzada por el servidor. getKeyVault() crea un índice único en keyAltNames si no existe uno. No elimines el índice único creado por getKeyVault().
Eliminar la clave de cifrado de datos utilizando UUID su.
Utilice el método en KeyVault.deleteKey() el keyVault objeto para eliminar una clave de datos del almacén de claves:
keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
Recuperar una clave de cifrado de datos existente
Para recuperar un documento de llave de cifrado de datos existente del archivo de llaves, ya sea:
Utilice para recuperar la
getKey()clave creada por su UUID, oUtiliza
getKeyByAltName()para recuperar el nombre alternativo de la clave, si se especifica. Para obtener más información sobre cómo trabajar con nombres alternativos, consulta Administrar la llave de cifrado de datos.
Si se proporciona la llave de cifrado de datos a un driver oficial compatible con 4.2+ para configurar el cifrado automático de lado del cliente a nivel de campo, se debe usar la representación base64 del string UUID.
Puedes ejecutar la siguiente operación en mongosh para convertir una cadena hexadecimal UUID en su representación base64:
UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()
Proporcione el UUID de su propia clave de cifrado de datos para este comando.