Descripción
Mongo(host, ClientSideFieldLevelEncryptionOptions, api)Constructor de JavaScript para instanciar una conexión de base de datos desde o desde un archivo
mongoshJavaScript.El método
Mongo()tiene los siguientes parámetros:ParameterTipoDescripciónhoststring
opcional. El host, ya sea en la forma de
<host>o<host><:port>.Si se omite,
Mongo()instancia una conexión a la interfaz localhost en el puerto27017predeterminado.ClientSideFieldLevelEncryptionOptionsDocumento
opcional. Parámetros de configuración para habilitar la encriptación a nivel de campo en el lado del cliente.
ClientSideFieldLevelEncryptionOptionsAnula la configuración de cifrado de campo del cliente de la conexión a la base de datos. Si se omite,Mongo()hereda la configuración de cifrado de campo del cliente de la conexión a la base de datos actual.Consulta
ClientSideFieldLevelEncryptionOptionspara obtener detalles de uso y sintaxis.apiDocumento
opcional. Opciones de configuración para activar la Stable API.
Consulta
apipara obtener detalles de uso y sintaxis.
Compatibilidad
Este método está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
ClientSideFieldLevelEncryptionOptions
El ClientSideFieldLevelEncryptionOptions documento especifica las opciones de configuración para el cifrado de campo del lado del cliente. Si la conexión a la base de datos ya tiene una configuración de cifrado de campo del lado del cliente, especificar la ClientSideFieldLevelEncryptionOptions anula.
Por ejemplo, al iniciar con mongosh las opciones de línea de comandos de cifrado a nivel de campo del lado del cliente, se habilita el cifrado del lado del cliente para esa conexión. Las nuevas conexiones de base de datos creadas con Mongo() heredan la configuración de cifrado,a menos Mongo() que ClientSideFieldLevelEncryptionOptions incluya.
El documento ClientSideFieldLevelEncryptionOptions tiene la siguiente sintaxis:
{ "keyVaultClient" : <object>, "keyVaultNamespace" : "<string>", "kmsProviders" : <object>, "schemaMap" : <object>, "bypassAutoEncryption" : <boolean> }
El documento ClientSideFieldLevelEncryptionOptions toma los siguientes parámetros:
Parameter | Tipo | Descripción | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| (Opcional) El clúster MongoDB que aloja la colección de bóveda de claves. Especifica un Si | ||||||||||||||||||||||||
| string | (Obligatorio) El espacio de nombres completo de la colección de bóveda de claves. | ||||||||||||||||||||||||
| Documento | (Obligatorio) El Servicio de Gestión de Claves (KMS) utilizado por el cifrado a nivel de campo del lado del cliente para gestionar una llave maestra de cliente (llave maestra de cliente). El cifrado a nivel de campo del lado del cliente utiliza la llave maestra de cliente para cifrar y descifrar las claves de cifrado de datos. El cifrado a nivel de campo del lado del cliente es compatible con los siguientes proveedores de KMS: Si es posible, considera definir las credenciales proporcionadas en
| ||||||||||||||||||||||||
| Documento | (opcional) Las reglas automáticas de cifrado a nivel de campo del lado del cliente especificadas mediante la sintaxis estándar del borrador 4 del JSON schema y palabras clave específicas de cifrado. Para la documentación completa, consulta Reglas de cifrado automático. | ||||||||||||||||||||||||
| booleano | (Opcional) Especifique |
api
El parámetro api especifica las opciones de configuración para la Stable API. Puede habilitar o deshabilitar comportamientos opcionales utilizando las siguientes opciones:
Opción | Tipo | Descripción |
|---|---|---|
version | string | Especifica la versión de la API. Actualmente, |
strict | booleano |
Si especifica Si no se especifica, el valor por defecto es |
deprecationErrors | booleano | Si Si no se especifica, el valor por defecto es |
El parámetro api tiene la siguiente sintaxis:
{ api: { version: <string>, strict: <boolean>, deprecationErrors: <boolean> } }
Ejemplos
Conéctate a un clúster de MongoDB
La siguiente operación crea un nuevo objeto de conexión desde dentro de una mongosh sesión:
cluster = Mongo("mongodb://mymongo.example.net:27017/?replicaSet=myMongoCluster")
Emite operaciones contra el objeto cluster para interactuar con el clúster mymongo.example.net:27017:
myDB = cluster.getDB("myDB"); //returns the database object myColl = myDB.getCollection("myColl"); // returns the collection object
Conectar a un clúster con cifrado del lado del cliente habilitado
Para configurar el cifrado a nivel de campo del lado del cliente para una clave administrada localmente, se requiere especificar una cadena de bytes codificada64en base 96sin saltos de línea. La siguiente operación genera una clave que cumple los requisitos indicados y la carga mongosh en:
TEST_LOCAL_KEY=$(echo "$(head -c 96 /dev/urandom | base64 | tr -d '\n')") mongosh --nodb --shell --eval "var TEST_LOCAL_KEY='$TEST_LOCAL_KEY'"
La siguiente operación crea un nuevo objeto de conexión desde una sesión de mongosh. La opción ClientSideFieldLevelEncryptionOptions especifica las configuraciones necesarias para habilitar el cifrado a nivel de campo del lado del cliente utilizando una clave gestionada localmente:
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, TEST_LOCAL_KEY) } } } cluster = Mongo( "mongodb://mymongo.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
Ejecute operaciones sobre el objeto cluster para interactuar con el clúster mymongo.example.net:27017 y realizar un cifrado explícito:
// returns the database object myDB = cluster.getDB("myDB"); // returns the collection object myColl = myDB.getCollection("myColl"); // returns object for managing data encryption keys keyVault = cluster.getKeyVault(); // returns object for explicit encryption/decryption clientEncryption = cluster.getClientEncryption();
Consulta Métodos de cifrado a nivel de campo del lado del cliente para obtener una lista completa de los métodos de cifrado a nivel de campo del lado del cliente.
Conéctate a un clúster con cifrado del lado del cliente automático habilitado
Para configurar el cifrado a nivel de campo del lado del cliente para una clave administrada localmente, se requiere especificar una cadena de bytes codificada64en base 96sin saltos de línea. La siguiente operación genera una clave que cumple los requisitos indicados y la carga mongosh en:
TEST_LOCAL_KEY=$(echo "$(head -c 96 /dev/urandom | base64 | tr -d '\n')") mongosh --nodb --shell --eval "var TEST_LOCAL_KEY='$TEST_LOCAL_KEY'"
La siguiente operación crea un nuevo objeto de conexión desde una sesión de mongosh. La opción ClientSideFieldLevelEncryptionOptions especifica las opciones necesarias para habilitar el cifrado automático del lado del cliente en la colección hr.employees:
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0,"BASE64-ENCODED-96-BYTE-LOCAL-KEY") } }, schemaMap : { "hr.employees" : { "bsonType": "object", "properties" : { "taxid" : { "encrypt" : { "keyId" : [UUID("bffb361b-30d3-42c0-b7a4-d24a272b72e3")], "bsonType" : "string", "algorithm" : "AEAD_AES_256_CBC_HMAC_SHA_512-Random" } }, "taxid-short": { "encrypt": { "keyId": [UUID("33408ee9-e499-43f9-89fe-5f8533870617")], "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic", "bsonType": "string" } } } } } } cluster = Mongo( "mongodb://mymongo.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
Emite operaciones contra el objeto cluster para interactuar con el clúster mymongo.example.net:27017 y utilizar el cifrado automático:
// returns the database object myDB = cluster.getDB("myDB"); // returns the collection object myColl = myDB.getCollection("myColl"); myColl.insertOne( { "name" : "J Doe", "taxid" : "123-45-6789", "taxid-short" : "6789" } )
Las reglas de cifrado automático especificadas cifran los taxid campos taxid-short y utilizando la clave y el algoritmo de cifrado de datos especificados. Solo los clientes configurados para el KMS correcto y con acceso a la clave de cifrado de datos especificada pueden descifrar el campo.
Consulta Métodos de cifrado a nivel de campo del lado del cliente para obtener una lista completa de los métodos de cifrado a nivel de campo del lado del cliente.
Conéctate a un clúster con la Stable API habilitada.
La siguiente operación crea un nuevo objeto de conexión desde dentro de una mongosh sesión. La opción api habilita la Stable API v1 y especifica que no se puede ejecutar ningún comando obsoleto ni ningún comando fuera de la Stable API.
cluster = Mongo( "mongodb://mymongo.example.net:27017/?replicaSet=myMongoCluster", null, { api: { version: "1", strict: true, deprecationErrors: true } } )
Para interactuar con el clúster mymongo.example.net:27017, realiza operaciones sobre el objeto cluster. Para ver una lista completa de órdenes de Stable API, consulta Órdenes de Stable API.