Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

ClientEncryption.encrypt() (método mongosh)

ClientEncryption.encrypt(keyId, value, algorithm or encOptions)

ClientEncryption.encrypt() cifra el value utilizando el especificado keyId y el algoritmo especificado por algorithm encOptionso. admiteencrypt() el cifrado explícito (manual) de los valores de campo.

Devuelve:

Un objeto binary data con subtipo.6

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.

clientEncryption = db.getMongo().getClientEncryption()
clientEncryption.encrypt(
keyId,
value,
algorithm or encOptions,
)
Parameter
Tipo
Descripción

keyId

UUID

La clave de cifrado de datos que se utilizará para cifrar el value.

El UUID es un objeto binary data BSON con subtipo 4 que identifica una llave de cifrado de datos específica. Si la llave de cifrado de datos no existe en la bóveda de llaves configurada para la conexión de base de datos, encrypt() devuelve un error. Consulte Colección de Bóvedas de Llaves para obtener más información sobre las bóvedas de llaves y las llaves de cifrado de datos.

value

El valor a cifrar.

algorithm or encOptions

string o documento

  • Para cifrar explícitamente campos con Cifrado a nivel de campo del lado del cliente:

    Especifica el algorithm como una string o encOptions como un documento que contenga el campo algorithm.

    Los algoritmos compatibles son:

    • AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic

    • AEAD_AES_256_CBC_HMAC_SHA_512-Random

    Para ver ejemplos, consulte la sección "Configurar el algoritmo de cifrado a nivel de campo del lado del cliente".

    Para la documentación completa sobre los algoritmos de cifrado admitidos, consulta Campos y tipos de cifrado.

  • Para encriptar explícitamente campos usando Queryable Encryption:

    Especifica el algorithm como una string o encOptions como un documento que contenga los campos:

    • algorithm: El algoritmo de cifrado que se utiliza para cifrar el value. Los algoritmos compatibles son:

      • Indexed

      • Unindexed

    • contentionFactorRequerido cuando algorithm está configurado en Indexed. Relacionado con la frecuencia de los valores para este campo.

    • queryTypeEl único tipo de query actualmente soportado es "equality". queryType debe establecerse cuando el algoritmo no sea Indexed.

    Para ver ejemplos, consulte la sección "Configurar el algoritmo de cifrado consultable".

    Para obtener detalles sobre los algoritmos de cifrado admitidos, consulte Algoritmos y tipos de query.

Los métodos de cifrado a nivel de campo del lado del cliente y consultables requieren una conexión a la 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, se producirá lo mongosh siguiente:

or

No se puede utilizar para cifrar valores con los siguientes tipos encrypt() BSON:

  • minKey

  • maxKey

  • null

  • undefined

Si se cifra un campo usando,AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic encrypt() no admite los siguientes tipos BSON:

  • double

  • decimal128

  • bool

  • object

  • array

El siguiente ejemplo utiliza un KMS gestionado localmente para la configuración de cifrado a nivel de campo en el lado del cliente.

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

Recupere el ClientEncryption objeto y utilice el método para cifrar un valor utilizando una ClientEncryption.encrypt() clave UUID de cifrado de datos específica y un algoritmo de cifrado:

clientEncryption = encryptedClient.getClientEncryption();
clientEncryption.encrypt(
UUID("64e2d87d-f168-493c-bbdf-a394535a2cb9"),
"123-45-6789",
"AEAD_AES_256_CBC_HMAC_SHA_512-Random"
)

También puede especificar el algoritmo utilizando un documento con un campo algorithm:

clientEncryption = encryptedClient.getClientEncryption();
clientEncryption.encrypt(
UUID("64e2d87d-f168-493c-bbdf-a394535a2cb9"),
"123-45-6789",
{ algorithm: "AEAD_AES_256_CBC_HMAC_SHA_512-Random" }
)

Si tiene éxito, devuelve el valorencrypt() cifrado:

BinData(6,"AmTi2H3xaEk8u9+jlFNaLLkC3Q/+kmwDbbWrq+h9nuv9W+u7A5a0UnpULBNZH+Q21fAztPpU09wpKPrju9dKfpN1Afpj1/ZhFcH6LYZOWSBBOAuUNjPLxMNSYOOuITuuYWo=")

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().

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

1
  1. Inicia mongosh

    Inicie el cliente mongosh.

    mongosh --nodb
  2. Genere su clave

    Para configurar Queryable Encryption para una clave gestionada localmente, genere una string base64codificada en 96bytes sin saltos de línea.

    const TEST_LOCAL_KEY = require("crypto").randomBytes(96).toString("base64")
  3. Crea las opciones de Queryable Encryption

    Crea las opciones de Queryable Encryption usando la string de clave local generada:

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

    Utilice el Mongo() constructor con las opciones de Queryable Encryption configuradas para crear una conexión de base de datos. Reemplaza el URI mongodb://myMongo.example.net con el URI de cadena de conexión del clúster de destino.

    encryptedClient = Mongo(
    "mongodb://myMongo.example.net:27017/?replSetName=myMongo",
    autoEncryptionOpts
    )
2

Recupere el ClientEncryption objeto y utilice el método para cifrar un valor utilizando una ClientEncryption.encrypt() clave UUID de cifrado de datos específica y un algoritmo de cifrado:

const eDB = "encrypted"
const eKV = "__keyVault"
const clientEncryption = encryptedClient.getClientEncryption();
const keyVaultClient = Mongo().getDB(eDB).getCollection(eKV)
const dek = keyVaultClient.findOne({ keyAltNames: "dataKey1" })
clientEncryption.encrypt(
dek._id,
"123-45-6789",
"Unindexed"
)

También puedes especificar el algoritmo utilizando un documento que contenga los campos:

  • algorithm

  • queryType

  • contentionFactor

const eDB = "encrypted"
const eKV = "__keyVault"
const clientEncryption = encryptedClient.getClientEncryption();
const keyVaultClient = Mongo().getDB(eDB).getCollection(eKV)
const dek = keyVaultClient.findOne({ keyAltNames: "dataKey1" })
clientEncryption.encrypt(
dek._id,
"123-45-6789",
{
algorithm: "Indexed",
queryType: "equality",
contentionFactor: 8
}
)

Si tiene éxito, devuelve el valorencrypt() cifrado:

Binary(Buffer.from("05b100000005640020000000005ab3581a43e39a8e855b1ac87013e841735c09d19ae86535eea718dd56122ba50573002000000000703d2cba9832d90436c6c92eb232aa5b968cdcd7a3138570bc87ef0a9eb3a0e905630020000000009cb61df010b1bb54670a5ad979f25f4c48889059dfd8920782cf03dd27d1a50b05650020000000003f5acea703ea357d3eea4c6a5b19139a580089341424a247839fd4d5cf0d312a12636d00040000000000000000", "hex"), 6)

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().