Descripción
Mongo(host, autoEncryptionOpts, api)Constructor de JavaScript para instanciar una conexión a la base de datos desde o desde un archivo
mongoshJavaScript.El método tiene los siguientes
Mongo()parámetros:ParameterTipoDescripciónhoststring o instancia de
Mongoopcional. Host o cadena de conexión.
El host puede ser una cadena de conexión o tener el
<host>formato<host><:port>o. La cadena de conexión puede tener el formato de unaMongoinstancia. Si especifica unaMongoinstancia, el constructor utiliza la cadena de conexión de la instancia de MongoMongo()especificada.Si se omite, instancia una conexión a la interfaz localhost en el
Mongo()puerto27017predeterminado.autoEncryptionOptsDocumento
opcional. Parámetros de configuración para habilitar la encriptación en uso.
autoEncryptionOptsAnula la configuración de cifrado en uso de la conexión a la base de datos. Si se omite,Mongo()hereda la configuración de cifrado en uso de la conexión a la base de datos actual.AutoEncryptionOptsConsulte para obtener detalles sobre el uso y la sintaxis.apiDocumento
opcional. Opciones de configuración para activar la Stable API.
apiConsulte para obtener detalles sobre el uso y la 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.
AutoEncryptionOpts
El documento autoEncryptionOpts especifica las opciones de configuración para encriptación en uso. Si tu conexión a la base de datos tiene una configuración de encriptación en uso existente, autoEncryptionOpts la reemplaza. MongoDB proporciona dos enfoques para la encriptación en uso: Cifrado de nivel de campo del lado del cliente y Queryable Encryption.
Por ejemplo, al comenzar mongosh con opciones de línea de comandos de cifrado 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 Mongo() autoEncryptionOptsa menos que incluya.
El documento autoEncryptionOpts tiene la siguiente sintaxis:
{ "keyVaultClient" : <object>, "keyVaultNamespace" : "<string>", "kmsProviders" : <object>, "schemaMap" : <object>, "bypassAutoEncryption" : <boolean>, "tlsOptions": <object>, "encryptedFieldsMap": <object> }
El documento autoEncryptionOpts toma los siguientes parámetros:
Parameter | Tipo | Descripción | |||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| (Opcional) El clúster de MongoDB que aloja la Colección de Bóvedas de Llaves. Especifique un Si | |||||||||||||||||||||||||||
| string | (Obligatorio) El namespace completo de la colección del almacén 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. La encriptación a nivel de campo del lado del cliente admite los siguientes proveedores de KMS: Si es posible, considere definir las credenciales proporcionadas en
| |||||||||||||||||||||||||||
| Documento | (Opcional) Las reglas de cifrado automático a nivel de campo del lado del cliente, especificadas mediante el esquema JSON estándar de borrador 4 y palabras clave específicas de cifrado. Esta opción es mutuamente excluyente con Para ver la documentación completa, consulta Esquemas de cifrado. | |||||||||||||||||||||||||||
| booleano | (Opcional) Especifique | |||||||||||||||||||||||||||
| booleano | (Opcional) Especifique | |||||||||||||||||||||||||||
| booleano | (Opcional) Especifica | |||||||||||||||||||||||||||
| Objeto | (Opcional) La ruta al certificado de cliente TLS y al archivo de llave privada en formato PEM ( | |||||||||||||||||||||||||||
| Documento | (Opcional) El mapa de namespaces de colección a documentos Para obtener más información sobre los campos cifrados en Queryable Encryption, consulta Campos cifrados y consultas habilitadas. |
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 |
|---|---|---|
| string | Especifica la versión de la API. Actualmente, |
| booleano |
Si especificas Si no se especifica, el valor por defecto es |
| 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 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
Crea las opciones de cifrado a nivel de campo del lado del cliente
Cree las opciones de cifrado a nivel de campo del lado del cliente usando la string de clave local generada:
let autoEncryptionOpts = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, TEST_LOCAL_KEY) } } }
Crea tu cliente cifrado
Utilice el constructor con las opciones de cifrado de nivel de campo del lado del cliente configuradas para crear una conexión a la base de datos. Reemplace Mongo() la mongodb://myMongo.example.net URI con la URI de la cadena de conexión del clúster de destino.
encryptedClient = Mongo( "mongodb://myMongo.example.net:27017/?replSetName=myMongo", autoEncryptionOpts )
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 encriptación en uso 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 en el lado del cliente con una clave gestionada localmente:
genera una cadena de 96bytes codificada en base64sin saltos de línea
use para cargar la
mongoshclave
export TEST_LOCAL_KEY=$(echo "$(head -c 96 /dev/urandom | base64 | tr -d '\n')") mongosh --nodb
La siguiente operación crea un nuevo objeto de conexión dentro de una mongosh sesión. La opción especifica las AutoEncryptionOpts opciones necesarias para habilitar el cifrado automático del lado del hr.employees cliente en la colección:
var autoEncryptionOpts = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, process.env["TEST_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", autoEncryptionOpts )
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 campos taxid y taxid-short utilizando la llave de cifrado de datos y el algoritmo especificados. Solo los clientes configurados para el KMS correcto y que tengan acceso a la llave de cifrado de datos especificada pueden descifrar el campo.
La siguiente operación crea un nuevo objeto de conexión dentro de una sesión.mongosh La mongo.tlsOptions opción habilita una conexión utilizando KMIP como proveedor KMS:
var csfleConnection = { keyVaultNamespace: "encryption.__keyVault", kmsProviders: { kmip: { endpoint: "kmip.example.com:123" } }, tlsOptions: { kmip: { tlsCertificateKeyFile: "/path/to/client/cert-and-key-bundle.pem" } } } cluster = Mongo( "mongodb://mymongo.example.net:27017/?replicaSet=myMongoCluster", csfleConnection );
Consulta encriptación en uso 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 dentro de una sesiónmongosh. La opciónapihabilita la API estable V1 y especifica que no se pueden ejecutar comandos obsoletos fuera de la API estable.
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.