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ú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.

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