Docs Menu
Docs Home
/ /

cifrado a nivel de campo

Cuando se trabaja con un En un clústerMongoDB Enterprise o MongoDB Atlas, puede utilizar mongosh Para configurar el cifrado de campo del lado del cliente de Queryable Encryption y conectar con el soporte de cifrado. Tanto Queryable Encryption como CSFLE utilizan claves de cifrado de datos para el cifrado y descifrado de valores de campo, y almacenan este material en un Servicio de Administración de Claves (KMS).

mongosh soporta los siguientes proveedores de KMS para su uso con Queryable Encryption y CSFLE:

  • Amazon Web Services KMS

  • Azure Key Vault

  • Google Cloud Platform KMS

  • Archivo de claves administrado localmente

El siguiente procedimiento utiliza mongosh para crear una clave de cifrado de datos para el cifrado a nivel de campo.

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

1

Cree una sesión mongosh sin conectarse a una base de datos en ejecución mediante el uso de --nodb opción:

mongosh --nodb
2

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.

mongoshEn, cree una nueva variable AutoEncryptionOpts para almacenar la configuración de cifrado a nivel de campo del lado del cliente, que contiene estas credenciales:

var autoEncryptionOpts = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"aws" : {
"accessKeyId" : "YOUR_AWS_ACCESS_KEY_ID",
"secretAccessKey" : "YOUR_AWS_SECRET_ACCESS_KEY"
}
}
}

Complete los valores para YOUR_AWS_ACCESS_KEY_ID y YOUR_AWS_SECRET_ACCESS_KEY según corresponda.

3

mongoshEn, utilice el constructor para establecer una conexión de base de Mongo() datos con el clúster de destino. Especifique el documento AutoEncryptionOpts como segundo parámetro del Mongo() constructor para configurar la conexión para el cifrado de campo del lado del cliente:

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

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

4

Cree el keyVault objeto utilizando el getKeyVault() método de shell:

keyVault = csfleDatabaseConnection.getKeyVault();
5

Cree la clave de cifrado de datos utilizando el createKey() método de shell:

keyVault.createKey(
"aws",
{ region: "regionname", key: "awsarn" },
[ "keyAlternateName" ]
)

Donde:

Si la operación es correcta, createKey() devuelve el UUID de la nueva clave de cifrado de datos. Para recuperar el nuevo documento de clave de cifrado de datos 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 getKeyByAltName() especifica.

1

Cree una mongosh sesión sin conectarse a una base de datos en ejecución utilizando la --nodb opción:

mongosh --nodb
2

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.

mongoshEn, cree una nueva variable AutoEncryptionOpts para almacenar la configuración de cifrado a nivel de campo del lado del cliente, que contiene estas credenciales:

var autoEncryptionOpts = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"azure" : {
"tenantId" : "YOUR_TENANT_ID",
"clientId" : "YOUR_CLIENT_ID",
"clientSecret" : "YOUR_CLIENT_SECRET"
}
}
}

Complete los valores para YOUR_TENANT_ID, YOUR_CLIENT_ID y YOUR_CLIENT_SECRET según corresponda.

3

mongoshEn, utilice el constructor para establecer una conexión de base de Mongo() datos con el clúster de destino. Especifique el documento AutoEncryptionOpts como segundo parámetro del Mongo() constructor para configurar la conexión para el cifrado de campo del lado del cliente:

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

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

4

Cree el keyVault objeto utilizando el getKeyVault() método de shell:

keyVault = csfleDatabaseConnection.getKeyVault();
5

Cree la clave de cifrado de datos utilizando el createKey() método de shell:

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. Para recuperar el nuevo documento de clave de cifrado de datos 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 getKeyByAltName() especifica.

1

Cree una mongosh sesión sin conectarse a una base de datos en ejecución utilizando la --nodb opción:

mongosh --nodb
2

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.

mongoshEn, cree una nueva variable AutoEncryptionOpts para almacenar la configuración de cifrado a nivel de campo del lado del cliente, que contiene estas credenciales:

var autoEncryptionOpts = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"gcp" : {
"email" : "YOUR_GCP_EMAIL",
"privateKey" : "YOUR_GCP_PRIVATEKEY"
}
}
}

Complete los valores para YOUR_GCP_EMAIL y YOUR_GCP_PRIVATEKEY según corresponda.

3

mongoshEn, utilice el constructor para establecer una conexión de base de Mongo() datos con el clúster de destino. Especifique el documento AutoEncryptionOpts como segundo parámetro del Mongo() constructor para configurar la conexión para el cifrado de campo del lado del cliente:

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

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

4

Cree el keyVault objeto utilizando el getKeyVault() método de shell:

keyVault = csfleDatabaseConnection.getKeyVault();
5

Cree la clave de cifrado de datos utilizando el createKey() método de shell:

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. Para recuperar el nuevo documento de clave de cifrado de datos 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 getKeyByAltName() especifica.

1

Cree una mongosh sesión sin conectarse a una base de datos en ejecución utilizando la --nodb opción:

mongosh --nodb
2

Para configurar el cifrado a nivel de campo del lado del cliente para una clave administrada localmente, debe especificar una cadena de 96bytes codificada en base64sin saltos de línea. Ejecute el siguiente comando en mongosh para generar una clave que cumpla estos requisitos:

crypto.randomBytes(96).toString('base64')

Necesitarás esta clave en el siguiente paso.

3

mongoshEn, cree una nueva variable AutoEncryptionOpts para almacenar la configuración de cifrado a nivel de campo del lado del cliente, reemplazando MY_LOCAL_KEY con la clave generada en el 1 paso:

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

mongoshEn, utilice el constructor para establecer una conexión de base de Mongo() datos con el clúster de destino. Especifique el documento AutoEncryptionOpts como segundo parámetro del Mongo() constructor para configurar la conexión para el cifrado de campo del lado del cliente:

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

Cree el keyVault objeto utilizando el getKeyVault() método de shell:

keyVault = csfleDatabaseConnection.getKeyVault();
6

Cree la clave de cifrado de datos utilizando el createKey() método de shell:

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. Para recuperar el nuevo documento de clave de cifrado de datos 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 getKeyByAltName() especifica.

Tip

Volver

Ejecutar pipelines de agregación

En esta página