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.
Para usar as queries de prefixo, sufixo ou substring de visualização pública com, você deve fazer download separadamente mongosh da 8.2 Biblioteca compartilhada de mongosh criptografia automática ou superior e, em seguida, especificar o caminho da biblioteca para usando a opção --cryptSharedLibPath .
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.Opcionalmente, defina um campo
keyIdcom oID DEK do .Importante
Os IDs de chave devem ser exclusivos, caso contrário, o servidor retornará um erro.
Ao configurar
AutoEncryptionSettingsno cliente, você pode usar o método assistentecreateEncryptedCollectionpara criar chaves automaticamente.{ path: "myDocumentField", bsonType: "int", keyId: "<unique data encryption key>" }
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 } }
Ative queries de prefixo, sufixo ou substring nos campos desejados.
Esses tipos de query são somente para campos string. Você pode habilitar prefixPreview e suffixPreview no mesmo campo, mas não pode habilitar nenhum dos dois se estiver usando substringPreview.
Aviso
As queries de prefixo, sufixo e substring estão em visualização pública
As queries de prefixo, sufixo e substring do Queryable Encryption estão disponíveis em visualização pública no MongoDB 8.2. Não habilite esses tipos de query em produção. A funcionalidade de visualização pública será incompatível com o recurso GA, e você terá que descartar todas as collections que habilitarem essas queries.
prefixPreviewas queries habilitam as expressões de agregação$encStrStartsWithe$encStrNormalizedEq.suffixPreviewas queries habilitam as expressões de agregação$encStrEndsWithe$encStrNormalizedEq.substringPreviewas queries habilitam as expressões de agregação$encStrContainse$encStrNormalizedEq.
Adicione o objeto
queriese definaqueryTypepara"prefixPreview","suffixPreview"ou"substringPreview":{ path: "myDocumentStringField", bsonType: "string", queries: { queryType: "substringPreview" } } Defina os seguintes campos.
Para obter detalhes sobre como eles afetam a segurança e o desempenho, consulte Configurar campos criptografados para otimização de pesquisa e armazenamento.
CampoTipoDescriçãointeiro
substringPreviewapenas consultas. O comprimento máximo permitido para um campo indexado por substring.inteiro
O comprimento mínimo de prefixo/sufixo/substring permitido para query.
inteiro
O comprimento máximo de prefixo/sufixo/substring permitido para query.
IMPORTANTE: esta configuração afeta fortemente o desempenho da query. Limite-o sempre que possível.
Boolean
Opcional. Se as queries diferenciam maiúsculas de minúsculas. Padrão é
true.Boolean
Opcional. Se as queries são sensíveis a diacríticos. Padrão é
true.{ path: "myDocumentStringField", bsonType: "string", queries: { "queryType": "substringPreview", "strMaxLength": 30, "strMinQueryLength": 1, "strMaxQueryLength": 20, "caseSensitive": false } }
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" }, ] }