Criar um esquema de criptografia
Nesta página
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
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
.Se você estiver usando criptografia explícita, adicione um campo
keyId
com 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
AutoEncryptionSettings
no cliente e, em seguida, usa o método auxiliarcreateEncryptedCollection
para 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
queries
e definaqueryType
como"range"
:{ path: "myDocumentRangeField", bsonType: "int", queries: { queryType: "range" } } Defina os seguintes campos:
CampoTipoDescriçãoIgual ao campobsonType
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 } }
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" }, ] }