Em aplicativos de cliente habilitados para criptografia no nível do campo (CSFLE) do lado do cliente, você pode usar avalidação de esquema para que sua instância do MongoDB imponha a criptografia de campos específicos. Para especificar quais campos exigem criptografia, use as palavras- chave da regra de criptografia automática com o objeto de validação $jsonSchema . O servidor rejeita quaisquer operações de gravação para essa coleção onde os campos especificados não são objetos do subtipo { Binary (BinData) 6 .
Para saber como um cliente habilitado para CSFLE configurado para usar criptografia automática se comporta quando encontra um esquema do lado do servidor, consulte Aplicação de criptografia em nível de campo no lado do servidor.
Para saber como um cliente habilitado para CSFLE configurado para usar criptografia explícita se comporta quando encontra um esquema do lado do servidor, consulte Aplicação de criptografia em nível de campo no lado do servidor.
Exemplo
Considere um reconhecimento de data center hr com uma collection employees . Os documentos na collection employees têm o seguinte formato:
{ "name": "Jane Doe", "age": 51 }
Você deseja impor o seguinte comportamento para aplicativos clientes usando sua coleção:
Ao criptografar o campo
age, os clientes devem seguir estas regras de criptografia:Use a chave de criptografia com um
_iddeUUID("e114f7ad-ad7a-4a68-81a7-ebcb9ea0953a").Use o algoritmo de criptografia aleatório .
O campo
agedeve ser um número inteiro.
Ao criptografar o campo
name, os clientes devem seguir estas regras de criptografia:Use a chave de criptografia com um
_iddeUUID("33408ee9-e499-43f9-89fe-5f8533870617").Use o algoritmo de criptografia determinístico .
O campo
namedeve ser uma string.
O seguinte código mongosh utiliza o comando collMod para atualizar a coleção hr.employees para incluir um validator para impor o comportamento anterior:
db.getSiblingDB("hr").runCommand({ collMod: "employees", validator: { $jsonSchema: { bsonType: "object", properties: { age: { encrypt: { keyId: [UUID("e114f7ad-ad7a-4a68-81a7-ebcb9ea0953a")], algorithm: "AEAD_AES_256_CBC_HMAC_SHA_512-Random", bsonType: "int", }, }, name: { encrypt: { keyId: [UUID("33408ee9-e499-43f9-89fe-5f8533870617")], algorithm: "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic", bsonType: "string", }, }, }, }, }, });
Saiba mais
Para saber mais sobre os algoritmos de criptografia compatíveis com o CSFLE, consulte Campos e tipos de criptografia.
Para saber mais sobre esquemas de criptografia e regras de criptografia, consulte Esquemas de criptografia CSFLE.