Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

db.createEncryptedCollection() (método mongosh)

Nuevo en la versión 7.0.

db.createEncryptedCollection(collName, options)

db.createEncryptedCollection() crea una colección cifrada especificada por collName en la base de datos actual.

Este método es un contenedor alrededor de ClientEncryption.createEncryptedCollection() que crea automáticamente claves de datos si encryptedFields.fields[*].keyId es null o se omite en la definición options.createCollectionOptions.encryptedFields.

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.

db.createEncryptedCollection() tiene la siguiente sintaxis:

db.createEncryptedCollection(
collName,
{
provider: kmsProviderName,
createCollectionOptions: encryptedFieldsMap,
masterKey: customerMasterKeyCredentials
}
)

db.createEncryptedCollection() toma estos campos:

Campo
Tipo
Necesidad
Descripción

collName

string

Requerido

Nombre de la colección a cifrar en la base de datos actual.

options

Documento

Requerido

Opciones para configurar la colección cifrada.

options.provider

string

Requerido

El KMS que usa para almacenar su clave maestra de cliente.

options.createCollectionOptions

Documento

Requerido

Campos a encriptar. Debe contener un documento encryptedFields. Consulta Pasos para obtener detalles sobre cómo configurar el documento encryptedFields.

options.masterKey

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 local.

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:

or

El método db.createEncryptedCollection() se ejecuta en el contexto del actual db y usa la misma conexión habilitada para Cifrado Consultable que la sesión actual de mongosh. Internamente, llama a ClientEncryption.createEncryptedCollection() con el nombre actual de la base de datos, el nombre de la colección especificada y el documento de opciones provisto.

Cuando options.createCollectionOptions.encryptedFields.fields[*].keyId es null o se omite, el método crea automáticamente las claves de datos requeridas en el key vault y rellena los valores correspondientes de keyId en la definición de encryptedFields de la colección creada.

El siguiente ejemplo utiliza un KMS gestionado de forma local para la configuración de Queryable Encryption.

1
  1. Inicia mongosh

    Ejecuta:

    mongosh --nodb

    --nodb significa no conectarse a una base de datos.

  2. Generar un String

    Genera una cadena base de 64 96bytes:

    const TEST_LOCAL_KEY = require("crypto").randomBytes(96).toString("base64")
  3. 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_KEY del paso anterior:

    var autoEncryptionOpts = {
    "keyVaultNamespace" : "encryption.__dataKeys",
    "kmsProviders" : {
    "local" : {
    "key" : BinData(0, TEST_LOCAL_KEY)
    }
    }
    }
  4. Cree un objeto cliente cifrado

    Para crear un objeto cliente cifrado, utiliza el constructor Mongo(). Reemplace el URI mongodb://myMongo.example.net por 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
    )
2

Crea un encryptedFieldsMap para especificar qué campos quieres cifrar:

const encryptedFieldsMap = {
encryptedFields: {
fields: [
{
path: "secretField",
bsonType: "string",
queries: { queryType: "equality" },
// keyId omitted; db.createEncryptedCollection() generates it
},
],
},
};
3

Crea una colección cifrada de enc.users utilizando el asistente en la base de datos actual:

const encDb = encryptedClient.getDB("enc");
let result = encDb.createEncryptedCollection(
"users",
{
provider: "local",
createCollectionOptions: encryptedFieldsMap,
masterKey: {} // masterKey is optional when provider is local
}
);
4

db.createEncryptedCollection() devuelve un objeto de resultado que incluye el nombre de la colección creada y la definición de encryptedFields de la colección.

Verifique el valor de result.collection para confirmar que la colección se haya creado en la ubicación deseada y, opcionalmente, inspeccione el encryptedFields completado:

enc> result.collection
enc.users
enc> result.encryptedFields
{
fields: [
{
path: "secretField",
bsonType: "string",
queries: { queryType: "equality", /* ... */ },
keyId: UUID("...")
}
]
}
  • 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.

Volver

db.createCollection

En esta página