ClientEncryption.encrypt(keyId, value, algorithm or encOptions)ClientEncryption.encrypt()encrypts thevalueusing the specifiedkeyIdand the algorithm specified byalgorithmorencOptions.encrypt()supports explicit (manual) encryption of field values.Retorna: Um
binary dataobjeto com subtipo 6.
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
- MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
clientEncryption = db.getMongo().getClientEncryption() clientEncryption.encrypt( keyId, value, algorithm or encOptions, )
Parâmetro | Tipo | Descrição |
|---|---|---|
|
| A chave de criptografia de dados para utilizar para criptografar The UUID is a BSON |
| O valor a ser criptografado. | |
| string ou documento |
|
Comportamento
The mongosh client-side field level and queryable encryption methods require a database connection configured for client-side encryption. If the current database connection was not initiated with client-side field level encryption enabled, either:
Utilize o construtor
Mongo()domongoshpara estabelecer uma conexão com as opções de criptografia do nível do campo do lado do cliente exigido. O métodoMongo()suporta os seguintes fornecedores de serviço de gerenciamento de chaves (KMS) para gerenciamento da chave mestra do cliente (CMK):
ou
- Use the
mongoshcommand line options to establish a connection with the required options. The command line options only support the Amazon Web Services KMS provider for CMK management.
Tipos de BSON não suportados
You cannot use encrypt() to encrypt values with the following BSON types:
minKeymaxKeynullundefined
If encrypting a field using AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic, encrypt() does not support the following BSON types:
doubledecimal128boolobjectarray
Exemplos
Criptografia no nível de campo do cliente
O exemplo a seguir usa um KMS managed localmente para a configuração de criptografia no nível do campo do lado do cliente.
Crie sua conexão criptografada
Inicie o mongosh
Executar:
mongosh --nodb --nodbsignifica não se conectar a um banco de dados de dados.Gerar uma string de chave
Gere uma string base de 64 96bytes:
const TEST_LOCAL_KEY = require("crypto").randomBytes(96).toString("base64") Criar um objeto de opções de criptografia
Para criar um objeto de opções de criptografia no nível do campo do lado do cliente , use a string
TEST_LOCAL_KEYda etapa anterior:var autoEncryptionOpts = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, TEST_LOCAL_KEY) } } } Criar um objeto de cliente criptografado
Para criar um objeto de cliente criptografado, use o construtor
Mongo(). Substitua omongodb://myMongo.example.netURI pelo URI da string de conexão para o cluster de destino. Por exemplo:encryptedClient = Mongo( "mongodb://myMongo.example.net:27017/?replSetName=myMongo", autoEncryptionOpts )
Criptografar seus dados
Retrieve the ClientEncryption object and use the ClientEncryption.encrypt() method to encrypt a value using a specific data encryption key UUID and encryption algorithm:
clientEncryption = encryptedClient.getClientEncryption(); clientEncryption.encrypt( UUID("64e2d87d-f168-493c-bbdf-a394535a2cb9"), "123-45-6789", "AEAD_AES_256_CBC_HMAC_SHA_512-Random" )
Você também pode especificar o algoritmo usando um documento com um 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" } )
Exemplos de resultados
If successful, encrypt() returns the encrypted value:
BinData(6,"AmTi2H3xaEk8u9+jlFNaLLkC3Q/+kmwDbbWrq+h9nuv9W+u7A5a0UnpULBNZH+Q21fAztPpU09wpKPrju9dKfpN1Afpj1/ZhFcH6LYZOWSBBOAuUNjPLxMNSYOOuITuuYWo=")
Para obter a documentação completa sobre como iniciar conexões do MongoDB com a criptografia no nível do campo do lado do cliente habilitada, consulte Mongo().
Queryable Encryption
O exemplo a seguir usa um KMS gerenciado localmente para a configuração de Queryable Encryption.
Crie sua conexão criptografada
Inicie o mongosh
Inicie o cliente
mongosh.mongosh --nodb Gere sua chave
Para configurar a Queryable Encryption para uma chave gerenciada localmente, gere uma string64de bytes codificada de base 96sem quebras de linha.
const TEST_LOCAL_KEY = require("crypto").randomBytes(96).toString("base64") Criar as opções de Queryable Encryption
Crie as opções de Queryable Encryption usando a string de chave local gerada:
var autoEncryptionOpts = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, TEST_LOCAL_KEY) } } } Crie seu cliente criptografado
Use o construtor
Mongo()com as opções de Queryable Encryption configuradas para criar uma conexão com o banco de dados. Substitua o URI domongodb://myMongo.example.netpelo URI da string de conexão do cluster de destino.encryptedClient = Mongo( "mongodb://myMongo.example.net:27017/?replSetName=myMongo", autoEncryptionOpts )
Criptografar seus dados
Retrieve the ClientEncryption object and use the ClientEncryption.encrypt() method to encrypt a value using a specific data encryption key UUID and encryption algorithm:
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" )
Você também pode especificar o algoritmo usando um documento contendo os campos:
algorithmqueryTypecontentionFactor
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 } )
Exemplos de resultados
If successful, encrypt() returns the encrypted value:
Binary(Buffer.from("05b100000005640020000000005ab3581a43e39a8e855b1ac87013e841735c09d19ae86535eea718dd56122ba50573002000000000703d2cba9832d90436c6c92eb232aa5b968cdcd7a3138570bc87ef0a9eb3a0e905630020000000009cb61df010b1bb54670a5ad979f25f4c48889059dfd8920782cf03dd27d1a50b05650020000000003f5acea703ea357d3eea4c6a5b19139a580089341424a247839fd4d5cf0d312a12636d00040000000000000000", "hex"), 6)
Saiba mais
Para obter a documentação completa sobre como iniciar conexões do MongoDB com a criptografia no nível do campo do lado do cliente habilitada, consulte Mongo().