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
path
ebsonType
a 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
keyId
com oID DEK do .Importante
Os IDs de chave devem ser exclusivos, caso contrário, o servidor retornará um erro.
Ao configurar
AutoEncryptionSettings
no cliente, você pode usar o método assistentecreateEncryptedCollection
para 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
queries
e definaqueryType
como"range"
:{ path: "myDocumentRangeField", bsonType: "int", queries: { queryType: "range" } } Defina os seguintes campos:
CampoTipoDescriçãoIgual ao campo
bsonType
Obrigatório se
bsonType
fordecimal
oudouble
. Opcional, mas altamente recomendado se forint
,long
oudate
. 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.
prefixPreview
as queries habilitam as expressões de agregação$encStrStartsWith
e$encStrNormalizedEq
.suffixPreview
as queries habilitam as expressões de agregação$encStrEndsWith
e$encStrNormalizedEq
.substringPreview
as queries habilitam as expressões de agregação$encStrContains
e$encStrNormalizedEq
.
Adicione o objeto
queries
e definaqueryType
para"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
substringPreview
apenas 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" }, ] }