Docs Menu
Docs Home
/ /
Gestión de claves maestras y de cifrado de datos

Gestionar llaves de cifrado de datos

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 mediante mongosh y no hace referencia a ningún 4.2controlador oficial compatible con MongoDB +. Consulte la documentación correspondiente para conocer los métodos y la sintaxis de gestión de claves de cifrado de datos específicos del controlador.

El siguiente procedimiento utiliza para crear una clave de cifrado de datos para el cifrado y descifrado a nivel de campo del cliente. Para obtener instrucciones sobre la gestión de claves de cifrado de datos con mongosh un 4.2controlador compatible con +, consulte la documentación del controlador.

Utilice las pestañas a continuación para seleccionar el KMS apropiado para su implementación:

1

La configuración del cifrado a nivel de campo del lado del cliente para AWS KMS requiere un ID de clave de acceso de AWS y su clave de acceso secreta asociada. La clave de acceso de AWS debe corresponder a un usuario de IAM con todos los permisos de lista y lectura para el servicio KMS.

Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mediante variables de mongosh entorno.

Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

A continuación, cree una sesiónmongoshutilizando las opciones--eval, --shelly--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 sin conexión a una base de datos MongoDB.mongosh La --eval opción establece las AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY variables y en con el valor de las variables de entorno correspondientes. Las variables especificadas también son compatibles mongosh con AWS CLI.

2

mongoshEn, cree una nueva variable para almacenar el documento de configuración de cifrado a nivel de campo del lado del ClientSideFieldLevelEncryptionOptions cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"aws" : {
"accessKeyId" : AWS_ACCESS_KEY_ID,
"secretAccessKey" : AWS_SECRET_ACCESS_KEY
}
}
}
3

Enmongosh, use el constructorMongo()para establecer una conexión de base de datos con el clúster de destino. Especifique el documentoClientSideFieldLevelEncryptionOptionscomo segundo parámetro del constructorMongo()para configurar la conexión para el cifrado de campo del lado del cliente:

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Reemplace la replaceMe.example.net URI con la cadena de conexión para el clúster de destino.

Utilice el csfleDatabaseConnection objeto para acceder a los métodos de 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.

4

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 del lado del cliente depende de la unicidad de los nombres alternativos de clave, getKeyVault() keyAltNames impuesta por el servidor. crea un índice único en si no existe.No elimine el índice único getKeyVault() creado por.

5

Utilice el método en KeyVault.createKey() el keyVault objeto para crear una nueva clave de cifrado de datos en el almacén de claves:

keyVault.createKey(
"aws",
"arn:aws:kms:region:account:key/keystring",
[ "keyAlternateName" ]
)

Donde:

  • 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 clave maestra del cliente (CMK). MongoDB utiliza la CMK especificada para cifrar la clave de cifrado de datos.

  • El tercer parámetro puede ser una matriz de uno o más keyAltNames para la clave de cifrado de datos. Cada nombre alternativo de clave debe ser único. getKeyVault() crea un índice único en keyAltNames para garantizar la unicidad del campo si no existe uno. Los nombres alternativos de clave facilitan la localización de la clave 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 proporciona la clave de cifrado de datos a un controlador oficial de MongoDB para configurar el cifrado automático a nivel de campo del lado del cliente, debe utilizar la base64 representación de la UUID cadena.

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.

1

Para configurar el cifrado a nivel de campo del lado del cliente para Azure Key Vault se requiere un identificador de inquilino, un identificador de cliente y un secreto de cliente válidos.

Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mediante variables de mongosh entorno.

Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:

  • AZURE_TENANT_ID

  • AZURE_CLIENT_ID

  • AZURE_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 sin conexión a una base de datos MongoDB.mongosh La --eval opción establece AZURE_TENANT_ID AZURE_CLIENT_ID AZURE_CLIENT_SECRET las variables, y mongosh en con el valor de las variables de entorno correspondientes.

2

mongoshEn, cree una nueva variable para almacenar el documento de configuración de cifrado a nivel de campo del lado del ClientSideFieldLevelEncryptionOptions cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"azure" : {
"tenantId" : AZURE_TENANT_ID,
"clientId" : AZURE_CLIENT_ID,
"clientSecret" : AZURE_CLIENT_SECRET
}
}
}
3

Enmongosh, use el constructorMongo()para establecer una conexión de base de datos con el clúster de destino. Especifique el documentoClientSideFieldLevelEncryptionOptionscomo segundo parámetro del constructorMongo()para configurar la conexión para el cifrado de campo del lado del cliente:

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Reemplace la replaceMe.example.net URI con la cadena de conexión para el clúster de destino.

Utilice el csfleDatabaseConnection objeto para acceder a los métodos de 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.

4

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 del lado del cliente depende de la unicidad de los nombres alternativos de clave, getKeyVault() keyAltNames impuesta por el servidor. crea un índice único en si no existe.No elimine el índice único getKeyVault() creado por.

5

Utilice el método en KeyVault.createKey() el keyVault objeto para crear una nueva clave de cifrado de datos en el almacén de claves:

keyVault.createKey(
"azure",
{ keyName: "keyvaultname", keyVaultEndpoint: "endpointname" },
[ "keyAlternateName" ]
)

Donde:

  • 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 su Azure Key Vault

    • el nombre DNS de Azure Key Vault que se utilizará (por ejemplo, my-key-vault.vault.azure.net)

  • El tercer parámetro puede ser una matriz de uno o más keyAltNames para la clave de cifrado de datos. Cada nombre alternativo de clave debe ser único. getKeyVault() crea un índice único en keyAltNames para garantizar la unicidad del campo si no existe uno. Los nombres alternativos de clave facilitan la localización de la clave 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 proporciona la clave de cifrado de datos a un controlador oficial de MongoDB para configurar el cifrado automático a nivel de campo del lado del cliente, debe utilizar la base64 representación de la UUID cadena.

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.

1

Para configurar el cifrado a nivel de campo del lado del cliente para GCP KMS se requiere su correo electrónico de GCP y su clave privada asociada.

Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mediante variables de mongosh entorno.

Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:

  • GCP_EMAIL

  • GCP_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 sin conexión a una base de datos MongoDB.mongosh La --eval opción establece las GCP_EMAIL GCP_PRIVATEKEY variables y en con el valor de las variables de entorno mongosh correspondientes.

2

mongoshEn, cree una nueva variable para almacenar el documento de configuración de cifrado a nivel de campo del lado del ClientSideFieldLevelEncryptionOptions cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"gcp" : {
"email" : GCP_EMAIL,
"privateKey" : GCP_PRIVATEKEY
}
}
}
3

Enmongosh, use el constructorMongo()para establecer una conexión de base de datos con el clúster de destino. Especifique el documentoClientSideFieldLevelEncryptionOptionscomo segundo parámetro del constructorMongo()para configurar la conexión para el cifrado de campo del lado del cliente:

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Reemplace la replaceMe.example.net URI con la cadena de conexión para el clúster de destino.

Utilice el csfleDatabaseConnection objeto para acceder a los métodos de 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.

4

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 del lado del cliente depende de la unicidad de los nombres alternativos de clave, getKeyVault() keyAltNames impuesta por el servidor. crea un índice único en si no existe.No elimine el índice único getKeyVault() creado por.

5

Utilice el método en KeyVault.createKey() el keyVault objeto para crear una nueva clave de cifrado de datos en el almacén de claves:

keyVault.createKey(
"gcp",
{
projectId: "projectid",
location: "locationname",
keyRing: "keyringname",
keyName: "keyname"
},
[ "keyAlternateName" ]
)

Donde:

  • El primer parámetro debe ser "gcp" para especificar el Google Cloud KMS configurado.

  • El segundo parámetro debe ser un documento que contenga

    • projectid es el nombre de su proyecto de GCP, como por ejemplo my-project

    • locationname es la ubicación del llavero KMS, como global

    • keyringname es el nombre del llavero KMS, como por ejemplo my-keyring

    • keyname es el nombre de tu clave.

  • El tercer parámetro puede ser una matriz de uno o más keyAltNames para la clave de cifrado de datos. Cada nombre alternativo de clave debe ser único. getKeyVault() crea un índice único en keyAltNames para garantizar la unicidad del campo si no existe uno. Los nombres alternativos de clave facilitan la localización de la clave 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 proporciona la clave de cifrado de datos a un controlador oficial de MongoDB para configurar el cifrado automático a nivel de campo del lado del cliente, debe utilizar la base64 representación de la UUID cadena.

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.

1

Para configurar el cifrado a nivel de campo del lado del cliente para una clave administrada localmente es necesario especificar una cadena de 96bytes codificada en base64sin saltos de línea.

Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mediante variables de mongosh entorno.

La siguiente operación genera una clave que cumple los requisitos establecidos y la añade a la clave ~/.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.

2

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 sin conexión a una base de datos MongoDB.mongosh La --eval opción establece la LOCAL_KEY variable en con el valor de la variable de entorno mongosh correspondiente.

3

mongoshEn, cree una nueva variable para almacenar el documento de configuración de cifrado a nivel de campo del lado del ClientSideFieldLevelEncryptionOptions cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"local" : {
"key" : BinData(0, LOCAL_KEY)
}
}
}
4

Enmongosh, use el constructorMongo()para establecer una conexión de base de datos con el clúster de destino. Especifique el documentoClientSideFieldLevelEncryptionOptionscomo segundo parámetro del constructorMongo()para configurar la conexión para el cifrado de campo del lado del cliente:

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Reemplace la replaceMe.example.net URI con la cadena de conexión para el clúster de destino.

Utilice el csfleDatabaseConnection objeto para acceder a los métodos de 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.

5

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 del lado del cliente depende de la unicidad de los nombres alternativos de clave, getKeyVault() keyAltNames impuesta por el servidor. crea un índice único en si no existe.No elimine el índice único getKeyVault() creado por.

6

Utilice el método en KeyVault.createKey() el keyVault objeto para crear una nueva clave de cifrado de datos en el almacén de claves:

keyVault.createKey(
"local",
[ "keyAlternateName" ]
)

Donde:

  • El primer parámetro debe ser local para especificar la clave administrada localmente configurada.

  • El segundo parámetro puede ser una matriz de uno o más keyAltNames para la clave de cifrado de datos. Cada nombre alternativo de clave debe ser único. crea un índice únicogetKeyVault() en keyAltNames para garantizar la unicidad del campo si no existe uno. Los nombres alternativos de clave facilitan la localización de la clave 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 proporciona la clave de cifrado de datos a un controlador oficial de MongoDB para configurar el cifrado automático a nivel de campo del lado del cliente, debe utilizar la base64 representación de la UUID cadena.

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.

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:

1

La configuración del cifrado a nivel de campo del lado del cliente para AWS KMS requiere un ID de clave de acceso de AWS y su clave de acceso secreta asociada. La clave de acceso de AWS debe corresponder a un usuario de IAM con todos los permisos de lista y lectura para el servicio KMS.

Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mediante variables de mongosh entorno.

Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

A continuación, cree una sesiónmongoshutilizando las opciones--eval, --shelly--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 sin conexión a una base de datos MongoDB.mongosh La --eval opción establece las AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY variables y en con el valor de las variables de entorno correspondientes. Las variables especificadas también son compatibles mongosh con AWS CLI.

2

mongoshEn, cree una nueva variable para almacenar el documento de configuración de cifrado a nivel de campo del lado del ClientSideFieldLevelEncryptionOptions cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"aws" : {
"accessKeyId" : AWS_ACCESS_KEY_ID,
"secretAccessKey" : AWS_SECRET_ACCESS_KEY
}
}
}
3

Enmongosh, use el constructorMongo()para establecer una conexión de base de datos con el clúster de destino. Especifique el documentoClientSideFieldLevelEncryptionOptionscomo segundo parámetro del constructorMongo()para configurar la conexión para el cifrado de campo del lado del cliente:

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Reemplace la replaceMe.example.net URI con la cadena de conexión para el clúster de destino.

Utilice el csfleDatabaseConnection objeto para acceder a los métodos de 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.

4

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 del lado del cliente depende de la unicidad de los nombres alternativos de clave, getKeyVault() keyAltNames impuesta por el servidor. crea un índice único en si no existe.No elimine el índice único getKeyVault() creado por.

5

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 keyAltNames antes 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"
)

Donde:

  • El primer parámetro debe ser el UUID de la clave de cifrado de datos a modificar.

  • El segundo parámetro debe ser una cadena única. crea un índice únicogetKeyVault() en keyAltNames para garantizar la unicidad de los nombres alternativos de clave.

KeyVault.addKeyAlternateName() devuelve el documento de clave de cifrado de datos antes de la modificación. Utilice para recuperar la clave de cifrado de datos KeyVault.getKey() modificada.

Eliminar nombre alternativo de la 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"
)

Donde:

  • 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 de clave alternativo de cadena.

KeyVault.removeKeyAlternateName() devuelve la clave de cifrado de datos antes de la modificación. Utilice para recuperar la clave de cifrado de datos KeyVault.getKey() modificada.

1

Para configurar el cifrado a nivel de campo del lado del cliente para Azure Key Vault se requiere un identificador de inquilino, un identificador de cliente y un secreto de cliente válidos.

Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mediante variables de mongosh entorno.

Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:

  • AZURE_TENANT_ID

  • AZURE_CLIENT_ID

  • AZURE_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 sin conexión a una base de datos MongoDB.mongosh La --eval opción establece AZURE_TENANT_ID AZURE_CLIENT_ID AZURE_CLIENT_SECRET las variables, y mongosh en con el valor de las variables de entorno correspondientes.

2

mongoshEn, cree una nueva variable para almacenar el documento de configuración de cifrado a nivel de campo del lado del ClientSideFieldLevelEncryptionOptions cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"azure" : {
"tenantId" : AZURE_TENANT_ID,
"clientId" : AZURE_CLIENT_ID,
"clientSecret" : AZURE_CLIENT_SECRET
}
}
}
3

Enmongosh, use el constructorMongo()para establecer una conexión de base de datos con el clúster de destino. Especifique el documentoClientSideFieldLevelEncryptionOptionscomo segundo parámetro del constructorMongo()para configurar la conexión para el cifrado de campo del lado del cliente:

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Reemplace la replaceMe.example.net URI con la cadena de conexión para el clúster de destino.

Utilice el csfleDatabaseConnection objeto para acceder a los métodos de 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.

4

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 del lado del cliente depende de la unicidad de los nombres alternativos de clave, getKeyVault() keyAltNames impuesta por el servidor. crea un índice único en si no existe.No elimine el índice único getKeyVault() creado por.

5

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 keyAltNames antes 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"
)

Donde:

  • El primer parámetro debe ser el UUID de la clave de cifrado de datos a modificar.

  • El segundo parámetro debe ser una cadena única. crea un índice únicogetKeyVault() en keyAltNames para garantizar la unicidad de los nombres alternativos de clave.

KeyVault.addKeyAlternateName() devuelve el documento de clave de cifrado de datos antes de la modificación. Utilice para recuperar la clave de cifrado de datos KeyVault.getKey() modificada.

Eliminar nombre alternativo de la 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"
)

Donde:

  • 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 de clave alternativo de cadena.

KeyVault.removeKeyAlternateName() devuelve la clave de cifrado de datos antes de la modificación. Utilice para recuperar la clave de cifrado de datos KeyVault.getKey() modificada.

1

Para configurar el cifrado a nivel de campo del lado del cliente para GCP KMS se requiere su correo electrónico de GCP y su clave privada asociada.

Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mediante variables de mongosh entorno.

Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:

  • GCP_EMAIL

  • GCP_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 sin conexión a una base de datos MongoDB.mongosh La --eval opción establece las GCP_EMAIL GCP_PRIVATEKEY variables y en con el valor de las variables de entorno mongosh correspondientes.

2

mongoshEn, cree una nueva variable para almacenar el documento de configuración de cifrado a nivel de campo del lado del ClientSideFieldLevelEncryptionOptions cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"gcp" : {
"email" : GCP_EMAIL,
"privateKey" : GCP_PRIVATEKEY
}
}
}
3

Enmongosh, use el constructorMongo()para establecer una conexión de base de datos con el clúster de destino. Especifique el documentoClientSideFieldLevelEncryptionOptionscomo segundo parámetro del constructorMongo()para configurar la conexión para el cifrado de campo del lado del cliente:

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Reemplace la replaceMe.example.net URI con la cadena de conexión para el clúster de destino.

Utilice el csfleDatabaseConnection objeto para acceder a los métodos de 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.

4

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 del lado del cliente depende de la unicidad de los nombres alternativos de clave, getKeyVault() keyAltNames impuesta por el servidor. crea un índice único en si no existe.No elimine el índice único getKeyVault() creado por.

5

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 keyAltNames antes 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"
)

Donde:

  • El primer parámetro debe ser el UUID de la clave de cifrado de datos a modificar.

  • El segundo parámetro debe ser una cadena única. crea un índice únicogetKeyVault() en keyAltNames para garantizar la unicidad de los nombres alternativos de clave.

KeyVault.addKeyAlternateName() devuelve el documento de clave de cifrado de datos antes de la modificación. Utilice para recuperar la clave de cifrado de datos KeyVault.getKey() modificada.

Eliminar nombre alternativo de la 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"
)

Donde:

  • 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 de clave alternativo de cadena.

KeyVault.removeKeyAlternateName() devuelve la clave de cifrado de datos antes de la modificación. Utilice para recuperar la clave de cifrado de datos KeyVault.getKey() modificada.

1

Para configurar el cifrado a nivel de campo del lado del cliente para una clave administrada localmente es necesario especificar una cadena de 96bytes codificada en base64sin saltos de línea.

Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mediante variables de mongosh entorno.

La siguiente operación genera una clave que cumple los requisitos establecidos y la añade a la clave ~/.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.

2

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 sin conexión a una base de datos MongoDB.mongosh La --eval opción establece la LOCAL_KEY variable en con el valor de la variable de entorno mongosh correspondiente.

3

mongoshEn, cree una nueva variable para almacenar el documento de configuración de cifrado a nivel de campo del lado del ClientSideFieldLevelEncryptionOptions cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"local" : {
"key" : BinData(0, LOCAL_KEY)
}
}
}
4

Enmongosh, use el constructorMongo()para establecer una conexión de base de datos con el clúster de destino. Especifique el documentoClientSideFieldLevelEncryptionOptionscomo segundo parámetro del constructorMongo()para configurar la conexión para el cifrado de campo del lado del cliente:

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Reemplace la replaceMe.example.net URI con la cadena de conexión para el clúster de destino.

Utilice el csfleDatabaseConnection objeto para acceder a los métodos de 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.

5

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 del lado del cliente depende de la unicidad de los nombres alternativos de clave, getKeyVault() keyAltNames impuesta por el servidor. crea un índice único en si no existe.No elimine el índice único getKeyVault() creado por.

6

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 keyAltNames antes 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"
)

Donde:

  • El primer parámetro debe ser el UUID de la clave de cifrado de datos a modificar.

  • El segundo parámetro debe ser una cadena única. crea un índice únicogetKeyVault() en keyAltNames para garantizar la unicidad de los nombres alternativos de clave.

KeyVault.addKeyAlternateName() devuelve el documento de clave de cifrado de datos antes de la modificación. Utilice para recuperar la clave de cifrado de datos KeyVault.getKey() modificada.

Eliminar nombre alternativo de la 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"
)

Donde:

  • 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 de clave alternativo de cadena.

KeyVault.removeKeyAlternateName() devuelve la clave de cifrado de datos antes de la modificación. Utilice para recuperar la clave de cifrado de datos KeyVault.getKey() modificada.

Advertencia

Eliminar una clave de cifrado de datos hace que todos los campos cifrados con esa clave queden permanentemente ilegibles.

El siguiente procedimiento utiliza para eliminar una clave de cifrado de datos del almacén de claves. Para obtener instrucciones sobre la gestió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:

1

La configuración del cifrado a nivel de campo del lado del cliente para AWS KMS requiere un ID de clave de acceso de AWS y su clave de acceso secreta asociada. La clave de acceso de AWS debe corresponder a un usuario de IAM con todos los permisos de lista y lectura para el servicio KMS.

Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mediante variables de mongosh entorno.

Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

A continuación, cree una sesiónmongoshutilizando las opciones--eval, --shelly--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 sin conexión a una base de datos MongoDB.mongosh La --eval opción establece las AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY variables y en con el valor de las variables de entorno correspondientes. Las variables especificadas también son compatibles mongosh con AWS CLI.

2

mongoshEn, cree una nueva variable para almacenar el documento de configuración de cifrado a nivel de campo del lado del ClientSideFieldLevelEncryptionOptions cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"aws" : {
"accessKeyId" : AWS_ACCESS_KEY_ID,
"secretAccessKey" : AWS_SECRET_ACCESS_KEY
}
}
}
3

Enmongosh, use el constructorMongo()para establecer una conexión de base de datos con el clúster de destino. Especifique el documentoClientSideFieldLevelEncryptionOptionscomo segundo parámetro del constructorMongo()para configurar la conexión para el cifrado de campo del lado del cliente:

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Reemplace la replaceMe.example.net URI con la cadena de conexión para el clúster de destino.

Utilice el csfleDatabaseConnection objeto para acceder a los métodos de 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.

4

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 del lado del cliente depende de la unicidad de los nombres alternativos de clave, getKeyVault() keyAltNames impuesta por el servidor. crea un índice único en si no existe.No elimine el índice único getKeyVault() creado por.

5

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"))
1

Para configurar el cifrado a nivel de campo del lado del cliente para Azure Key Vault se requiere un identificador de inquilino, un identificador de cliente y un secreto de cliente válidos.

Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mediante variables de mongosh entorno.

Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:

  • AZURE_TENANT_ID

  • AZURE_CLIENT_ID

  • AZURE_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 sin conexión a una base de datos MongoDB.mongosh La --eval opción establece AZURE_TENANT_ID AZURE_CLIENT_ID AZURE_CLIENT_SECRET las variables, y mongosh en con el valor de las variables de entorno correspondientes.

2

mongoshEn, cree una nueva variable para almacenar el documento de configuración de cifrado a nivel de campo del lado del ClientSideFieldLevelEncryptionOptions cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"azure" : {
"tenantId" : AZURE_TENANT_ID,
"clientId" : AZURE_CLIENT_ID,
"clientSecret" : AZURE_CLIENT_SECRET
}
}
}
3

Enmongosh, use el constructorMongo()para establecer una conexión de base de datos con el clúster de destino. Especifique el documentoClientSideFieldLevelEncryptionOptionscomo segundo parámetro del constructorMongo()para configurar la conexión para el cifrado de campo del lado del cliente:

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Reemplace la replaceMe.example.net URI con la cadena de conexión para el clúster de destino.

Utilice el csfleDatabaseConnection objeto para acceder a los métodos de 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.

4

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 del lado del cliente depende de la unicidad de los nombres alternativos de clave, getKeyVault() keyAltNames impuesta por el servidor. crea un índice único en si no existe.No elimine el índice único getKeyVault() creado por.

5

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"))
1

Para configurar el cifrado a nivel de campo del lado del cliente para GCP KMS se requiere su correo electrónico de GCP y su clave privada asociada.

Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mediante variables de mongosh entorno.

Primero, asegúrese de haber configurado las siguientes variables de entorno de acuerdo con la documentación de su plataforma:

  • GCP_EMAIL

  • GCP_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 sin conexión a una base de datos MongoDB.mongosh La --eval opción establece las GCP_EMAIL GCP_PRIVATEKEY variables y en con el valor de las variables de entorno mongosh correspondientes.

2

mongoshEn, cree una nueva variable para almacenar el documento de configuración de cifrado a nivel de campo del lado del ClientSideFieldLevelEncryptionOptions cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"gcp" : {
"email" : GCP_EMAIL,
"privateKey" : GCP_PRIVATEKEY
}
}
}
3

Enmongosh, use el constructorMongo()para establecer una conexión de base de datos con el clúster de destino. Especifique el documentoClientSideFieldLevelEncryptionOptionscomo segundo parámetro del constructorMongo()para configurar la conexión para el cifrado de campo del lado del cliente:

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Reemplace la replaceMe.example.net URI con la cadena de conexión para el clúster de destino.

Utilice el csfleDatabaseConnection objeto para acceder a los métodos de 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.

4

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 del lado del cliente depende de la unicidad de los nombres alternativos de clave, getKeyVault() keyAltNames impuesta por el servidor. crea un índice único en si no existe.No elimine el índice único getKeyVault() creado por.

5

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"))
1

Para configurar el cifrado a nivel de campo del lado del cliente para una clave administrada localmente es necesario especificar una cadena de 96bytes codificada en base64sin saltos de línea.

Para mitigar el riesgo de que estas credenciales se filtren en los registros, el siguiente procedimiento pasa los valores a mediante variables de mongosh entorno.

La siguiente operación genera una clave que cumple los requisitos establecidos y la añade a la clave ~/.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.

2

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 sin conexión a una base de datos MongoDB.mongosh La --eval opción establece la LOCAL_KEY variable en con el valor de la variable de entorno mongosh correspondiente.

3

mongoshEn, cree una nueva variable para almacenar el documento de configuración de cifrado a nivel de campo del lado del ClientSideFieldLevelEncryptionOptions cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"local" : {
"key" : BinData(0, LOCAL_KEY)
}
}
}
4

Enmongosh, use el constructorMongo()para establecer una conexión de base de datos con el clúster de destino. Especifique el documentoClientSideFieldLevelEncryptionOptionscomo segundo parámetro del constructorMongo()para configurar la conexión para el cifrado de campo del lado del cliente:

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Reemplace la replaceMe.example.net URI con la cadena de conexión para el clúster de destino.

Utilice el csfleDatabaseConnection objeto para acceder a los métodos de 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.

5

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 del lado del cliente depende de la unicidad de los nombres alternativos de clave, getKeyVault() keyAltNames impuesta por el servidor. crea un índice único en si no existe.No elimine el índice único getKeyVault() creado por.

6

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

Para recuperar un documento de clave de cifrado de datos existente del almacén de claves, realice una de las siguientes acciones:

  • Utilice para recuperar la getKey() clave creada por su UUID, o

  • Utilice para recuperar la clave por su nombre alternativo, si se especifica. Para obtener más información sobre cómo trabajar con nombres alternativos, consulte Administrar el getKeyByAltName()nombre alternativo de una clave de cifrado de datos.

Si proporciona la clave de cifrado de datos a un 4.2controlador oficial compatible con + para configurar el cifrado automático a nivel de campo del lado del cliente, debe utilizar la base64 representación de la cadena 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.

Volver

Gestión de claves maestras y de cifrado de datos

En esta página