Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Criar um esquema de criptografia

Para tornar os campos criptografados consultáveis, crie um esquema 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 estimar o armazenamento que as queries de prefixo, sufixo e substring exigem antes de configurá-las, consulte Estimar o impacto do armazenamento de Queryable Encryption .

Você pode configurar a criptografia para cada campo na array fields do seu encryptedFieldsObject. A tabela a seguir descreve os subcampos disponíveis:

Campo
Tipo
Descrição

path

String

Obrigatório. O caminho da notação de ponto para o campo a ser criptografado, como "patientInfo.ssn". Você pode especificar qualquer campo exceto o campo _id.

bsonType

String

Obrigatório. O tipo de BSON do campo a ser criptografado. Para uma lista completa dos tipos suportados, consulte Tipos de BSON.

keyId

UUID

Opcional. O UUID da DEK a ser usado para criptografar esse campo. O UUID é um elemento de dados binários BSON do subtipo 4.

Os IDs de chave devem ser exclusivos. Especificar um keyId que já está em uso retorna um erro.

Se omitido, você pode usar o método assistente createEncryptedCollection() para criar chaves automaticamente.

queries

Objeto

opcional. Habilita a query neste campo criptografado . Se omitido, o campo é criptografado, mas não pode ser consultado.

Para saber mais sobre as opções de query, 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. Opcionalmente, defina um campo keyId com a ID da DEK.

    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 prefix e suffix no mesmo campo, mas não pode habilitar nenhum dos dois se estiver usando substring.

  1. Adicione o objeto queries e defina queryType para "prefix", "suffix" ou "substring":

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

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