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úblicamongosh com, você deve baixar separadamente 8 a2 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" }, ] }