Sobre esta tarefa
Para tornar os campos criptografados consultáveis, crie umesquema de criptografia . Este esquema define quais campos são consultáveis e quais tipos de query são permitidos. Para obter mais informações, consulte Campos criptografados e queries ativadas.
Importante
A Queryable Encryption oferece suporte a queries de igualdade e intervalo. Você pode configurar um campo para apenas um tipo de query.
Antes de começar
Ao tornar campos criptografados consultáveis, considere o desempenho e a segurança. Para obter detalhes sobre como cada opção de configuração os afeta, consulte Configurar campos criptografados para otimização de pesquisa e armazenamento.
Passos
Especifique os campos a serem criptografados.
Adicione as strings
pathebsonTypea um documento dentro da array de campos:const encryptedFieldsObject = { fields: [ { path: "myDocumentField", bsonType: "int" } ] } Importante
Você pode especificar qualquer campo de criptografia, exceto o campo
_id.Se você estiver usando criptografia explícita, adicione um campo
keyIdcom o IDDEK do :{ path: "myDocumentField", bsonType: "int", keyId: "<unique data encryption key>" } Dica
Com a criptografia automática, o MongoDB cria chaves de criptografia para cada campo. Você configura
AutoEncryptionSettingsno cliente e, em seguida, usa o método auxiliarcreateEncryptedCollectionpara criar suas coleções.
Habilite as queries de intervalo nos campos desejados.
Isso permite executar queries com os operadores $lt, $lte, $gt e $gte .
Para obter detalhes sobre como as seguintes opções afetam a segurança e o desempenho, consulte Configurar campos criptografados para otimização de pesquisa e armazenamento.
Adicione o objeto
queriese definaqueryTypecomo"range":{ path: "myDocumentRangeField", bsonType: "int", queries: { queryType: "range" } } Defina os seguintes campos:
CampoTipoDescriçãoIgual ao campo
bsonTypeObrigatório se
bsonTypefordecimaloudouble. Opcional, mas altamente recomendado se forint,longoudate. O padrão é os valores mínimo e máximo debsonType.Quando possível, especificar limites em uma query melhora o desempenho. Se estiver consultando valores fora desses limites inclusivos, o MongoDB retornará um erro.
{ path: "myDocumentRangeField", bsonType: "int", queries: { queryType: "range", min: 0, max: 1200 } }
Exemplo
Este exemplo mostra como criar um esquema de criptografia para dados do internamento.
Considere o seguinte documento que contenha informações de identificação pessoal (PII), informações de cartão de crédito e informações médicas confidenciais:
{ "firstName": "Jon", "lastName": "Snow", "patientId": 12345187, "address": "123 Cherry Ave", "medications": [ "Adderall", "Lipitor" ], "patientInfo": { "ssn": "921-12-1234", "billing": { "type": "visa", "number": "1234-1234-1234-1234" } } }
Para garantir que os PII e as informações médicas confidenciais permaneçam seguras, esse esquema de criptografia adiciona os campos relevantes:
const encryptedFieldsObject = { fields: [ { path: "patientId", bsonType: "int" }, { path: "patientInfo.ssn", bsonType: "string" }, { path: "medications", bsonType: "array" }, { path: "patientInfo.billing", bsonType: "object" } ] }
Adicionar a propriedade queries torna os campos patientId e patientInfo.ssn aptos para queries. Este exemplo habilita queries de igualdade:
const encryptedFieldsObject = { fields: [ { path: "patientId", bsonType: "int", queries: { queryType: "equality" } }, { path: "patientInfo.ssn", bsonType: "string", queries: { queryType: "equality" } }, { path: "medications", bsonType: "array" }, { path: "patientInfo.billing", bsonType: "object" }, ] }