Nuevo en la versión 7.0.
ClientEncryption.createEncryptedCollection(dbName, collName, clientEncOpts)ClientEncryption.createEncryptedCollectioncrea una colección cifrada especificada porcollNameen la base de datos especificada pordbName.
Tip
En mongoshpuedes usar el asistente
db.createEncryptedCollection(), que se ejecuta en el contexto de la base de datos actual y genera automáticamente claves de datos cuando no se especifican valores de keyId.
Compatibilidad
Este comando 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.
Sintaxis
ClientEncryption.createEncryptedCollection tiene la siguiente sintaxis:
clientEncryption = db.getMongo().getClientEncryption() clientEncryption.createEncryptedCollection( dbName, collName, { provider: kmsProviderName, createCollectionOptions: encryptedFieldsMap, masterKey: customerMasterKeyCredentials } )
Campos de comandos
createEncryptedCollection toma estos campos:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| string | Requerido | Nombre de la base de datos que se desea cifrar. |
| string | Requerido | Nombre de la colección a cifrar. |
| Documento | Requerido | Opciones para configurar la colección cifrada. |
| string | Requerido | El KMS que usa para almacenar su clave maestra de cliente. |
| Documento | Requerido | Campos para cifrar. Consulta Especificar campos para cifrado para obtener detalles sobre cómo configurar el objeto |
| Documento | Opcional | Especifica las credenciales y los campos de identificación de clave necesarios para acceder a la clave principal cuando el proveedor KMS es AWS, GCP o Azure. Opcional cuando el proveedor de KMS sea |
Comportamiento
Los métodos mongosh de cifrado a nivel de campo del lado del cliente y Queryable Encryption requieren una conexión de base de datos configurada para el cifrado del lado del cliente. Si la conexión actual a la base de datos no se inició con el cifrado a nivel de campo del lado del cliente habilitado, entonces:
Utiliza el
Mongo()constructor de lamongoshpara establecer una conexión con las opciones necesarias de cifrado a nivel de campo en el lado del cliente. El métodoMongo()admite los siguientes proveedores de Key Management Service (KMS) para la gestión de llaves maestras de cliente (llaves maestras de cliente):
or
Utiliza
mongoshopciones de línea de comandos para establecer una conexión con las opciones requeridas. Las opciones de línea de comandos solo admiten el proveedor Amazon Web Services KMS para la gestión de llave maestra de cliente.
Ejemplo
El siguiente ejemplo utiliza un KMS gestionado de forma local para la configuración de Queryable Encryption.
Crea Tu Conexión Encriptada
Inicia mongosh
Ejecuta:
mongosh --nodb --nodbsignifica no conectarse a una base de datos.Generar un String
Genera una cadena base de 64 96bytes:
const TEST_LOCAL_KEY = require("crypto").randomBytes(96).toString("base64") Crear un objeto de opciones de cifrado
Para crear un objeto de opciones de cifrado de nivel de campo del lado del cliente, utilice la string
TEST_LOCAL_KEYdel paso anterior:var autoEncryptionOpts = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, TEST_LOCAL_KEY) } } } Cree un objeto cliente cifrado
Para crear un objeto cliente cifrado, utiliza el constructor
Mongo(). Reemplace el URImongodb://myMongo.example.netpor el URI de la cadena de conexión para el clúster de destino. Por ejemplo:encryptedClient = Mongo( "mongodb://myMongo.example.net:27017/?replSetName=myMongo", autoEncryptionOpts )
Cree su colección cifrada
Crea una colección enc.users cifrada:
clientEncryption = encryptedClient.getClientEncryption(); let result = clientEncryption.createEncryptedCollection( "enc", "users", { provider: "local", createCollectionOptions: encryptedFieldsMap, masterKey: {} // masterKey is optional when provider is local } )
Obtén más información
Para obtener la documentación completa sobre cómo iniciar conexiones MongoDB con el cifrado a nivel de campo en el lado del cliente activado, consulte
Mongo().Para un ejemplo completo de cómo crear y consultar una colección cifrada, consulta Queryable Encryption Quick Start.