Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / / / /

Criar um esquema de criptografia

Nesta página

  • Sobre esta tarefa
  • Antes de começar
  • Passos
  • Crie um documento de esquema de criptografia JSON.
  • Especifique os campos a serem criptografados.
  • Habilite as queries de igualdade nos campos desejados.
  • Habilite as queries de intervalo nos campos desejados.
  • Exemplo

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.

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.

1

Inclua um encryptedFieldsObject com uma array fields aninhada:

const encryptedFieldsObject = {
fields: []
}
2
  1. Adicione as strings path e bsonType 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.

  2. 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 auxiliar createEncryptedCollection para criar suas coleções.

3

Isso permite executar queries com os operadores $eq, $ne, $in e $nin .

Adicione o objeto queries e defina queryType como "equality":

{
path: "myDocumentField",
bsonType: "int",
queries: { queryType: "equality" }
}
4

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.

  1. Adicione o objeto queries e defina queryType como "range":

    {
    path: "myDocumentRangeField",
    bsonType: "int",
    queries: { queryType: "range" }
    }
  2. Defina os seguintes campos:

    Campo
    Tipo
    Descrição
    Igual ao campo bsonType

    Obrigatório se bsonType for decimal ou double. Opcional, mas altamente recomendado se for int, long ou date. O padrão é os valores mínimo e máximo de bsonType.

    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
    }
    }

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"
},
]
}

Voltar

Campos e queries