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

Campos criptografados e queries habilitadas

Nesta página

  • Tipos de query e comportamento suportados
  • Validação de esquema de cliente e servidor
  • Considerações ao ativar a query
  • Configurar campos criptografados para pesquisa e armazenamento ideais

Ao usar a Queryable Encryption, você define campos criptografados no nível da coleção usando um esquema de criptografia. Criptografar um campo e ativar queries aumenta os requisitos de armazenamento e afeta o desempenho da query. Você pode configurar um campo criptografado para queries de igualdade ou de intervalo, mas não para ambas. Configure campos para o tipo de query esperado.

Para obter instruções sobre como criar um esquema de criptografia e configurar a query, consulte Criar um esquema de criptografia.

Para obter uma lista de operadores de query compatíveis e comportamento com campos criptografados, consulte Operadores de query compatíveis.

O MongoDB suporta o uso de validação de esquema para impor a criptografia de campos específicos em uma coleção. Os clientes que usam a Queryable Encryption se comportam de maneira diferente, dependendo da configuração da conexão com o banco de dados de dados:

  • Se o objeto de conexão encryptedFieldsMap contiver uma chave para a coleção especificada, o cliente usará esse objeto para executar automaticamente a Queryable Encryption, em vez de usar o esquema remoto. No mínimo, as regras locais devem criptografar todos os campos que o esquema remoto criptografa.

  • Se o objeto de conexão encryptedFieldsMap não contiver uma chave para a coleção especificada, o cliente baixará o esquema remoto do lado do servidor para a coleção e o usará.

    Importante

    Comportamento do esquema remoto

    Ao usar um esquema remoto:

    • O cliente confia que o servidor tem um esquema válido

    • O cliente usa o esquema remoto apenas para executar uma Queryable Encryption automática. O cliente não força nenhuma outra regra de validação especificada no esquema.

Você pode tornar um campo criptografado consultável. Para alterar quais campos são criptografados ou consultáveis, reconstrua o esquema de criptografia da collection e recrie a collection.

Se você não precisar executar query de um campo criptografado, talvez não seja necessário habilitar a query nesse campo. Você ainda pode recuperar o documento consultando outros campos que podem ser consultados ou não criptografados.

Para cada collection criptografada, o MongoDB cria duas collections de metadados, aumentando o espaço de armazenamento. O MongoDB cria um índice para cada campo criptografado , o que aumenta a duração das operações de gravação nesse campo. Quando uma operação de gravação atualiza um campo indexado, MongoDB atualiza o índice relacionado.

O MongoDB fornece os seguintes parâmetros para facilitar a depuração e o ajuste de desempenho:

min, max

Tipo de Query: apenas queries de intervalo.

Tipo: deve corresponder ao bsonType do campo.

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

Especifique valores mínimos e máximos (inclusive) para query de um campo quando possível, pois limites menores melhoram a eficiência da query. Se estiver consultando valores fora desses limites, o MongoDB retornará um erro.

Importante

Os parâmetros esparsidade, precisão, trimFactor e contenção são destinados somente a usuários avançados. Os valores padrão para essas opções são adequados para a maioria dos casos de uso e só devem ser modificados se seu caso de uso exigir.

sparsity

Tipo de Query: apenas queries de intervalo.

Tipo: Inteiro de 1-4.

Opcional. O padrão é 2.

Afeta o quão completamente o MongoDB indexa os valores de intervalo. A baixa esparsidade (indexação compacta) melhora o desempenho da consulta, mas armazena mais documentos nas coleções de metadados criptografadas para cada operação de inserção ou atualização, causando maior sobrecarga de armazenamento. Alta escassez faz o oposto.

precision

Tipo de Query: apenas queries de intervalo.

Tipo: inteiro.

Opcional. Permitido somente se bsonType for double ou decimal. Se não for definido, o MongoDB usa a mesma precisão máxima que bsonType, double ou decimal.

Determina quantos dígitos são levados em conta ao executar query de um campo double ou decimal. Cada dígito adicional aumenta a sobrecarga de armazenamento e tem um alto impacto no intervalo pesquisável e na geração de índices. Este parâmetro limita a precisão das queries de intervalo. Valores precision diferentes afetam a saída da query, embora os valores criptografados ainda sejam armazenados com precisão total.

trimFactor

Tipo de Query: apenas queries de intervalo.

Tipo: inteiro.

Opcional. O padrão é 6.

O trimFactor controla a taxa de transferência de inserções e atualizações simultâneas. Um trimFactor mais alto aumenta a taxa de transferência de inserção e atualizações simultâneas ao custo de desacelerar algumas operações de leitura de intervalo. Um trimFactor mais baixo faz o oposto.

contention

Tipo de query: queries de igualdade e faixa.

Tipo: inteiro.

Opcional. O padrão é 8.

Operações de gravação simultâneas, como inserir o mesmo par de campo/valor em vários documentos em sucessão próxima, podem causar contenção: conflitos que atrasam as operações.

Com o Queryable Encryption, o MongoDB rastreia as ocorrências de cada par de campo/valor em uma coleção criptografada usando um contador interno. O fator de contenção particiona esse contador, semelhante a uma array. Isto minimiza problemas ao incrementar o contador ao utilizar insert, update ou findAndModify para adicionar ou modificar um campo codificado com o mesmo par de campo/valor em sucessão próxima. contention = 0 cria uma array com um elemento no índice 0. contention = 4 cria uma array com 5 elementos nos índices 0-4. O MongoDB incrementa um elemento de array aleatório durante a inserção.

Ao não ser definido, o contention padroniza para 8, que fornece alto desempenho para a maioria das cargas de trabalho. Uma contenção mais alta melhora o desempenho das operações de inserção e atualização em campos de baixa cardinalidade , no entanto, reduz o desempenho da procuras.

Opcionalmente, você pode incluir contention nos campos consultáveis para alterar o valor do padrão de 8.

Para obter informações mais completas sobre o fator de contenção e suas implicações criptográficas, consulte "Seção 9: Diretivas" no Documento técnico de Queryable Encryption do MongoDB.

Voltar

Fundamentals