Menu Docs
Página inicial do Docs
/ /

Criar um esquema de criptografia

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.

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 .

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. 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 assistente createEncryptedCollection para criar chaves automaticamente.

    {
    path: "myDocumentField",
    bsonType: "int",
    keyId: "<unique data encryption key>"
    }
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
    }
    }
5

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.

  1. Adicione o objeto queries e defina queryType para "prefixPreview", "suffixPreview" ou "substringPreview":

    {
    path: "myDocumentStringField",
    bsonType: "string",
    queries: { queryType: "substringPreview" }
    }
  2. 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.

    Campo
    Tipo
    Descrição

    inteiro

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

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

Nesta página