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

Limitações do Queryable Encryption

Nesta página

  • Visão geral
  • Limitações de suporte do MongoDB
  • Operações suportadas
  • Compactação manual da coleção de metadados
  • Modificando o encryptedFieldsMap
  • O campo _id
  • Nomes de campo criptografados
  • Modificando Campos de Query
  • Redação
  • Log de consulta e supressão do profiler de banco de dados
  • Supressão de saída do estágio de comando e agregação
  • Suporte a topologia
  • Fragmentação
  • Collections
  • Descartar collection
  • criar coleta
  • arrays
  • Visualizações
  • Agrupamentos
  • Unique Indexes

Considere estas limitações e restrições antes de ativar a Queryable Encryption. Algumas operações não são suportadas e outras se comportam de forma diferente.

Para limitações de compatibilidade, leia Compatibilidade.

A Queryable Encryption em uma collection elimina campos de alguns comandos de diagnóstico e omite algumas operações do registro de queries. Isso limita os dados disponíveis aos engenheiros de suporte do MongoDB, especialmente ao analisar o desempenho da query. Para medir o impacto das operações em relação a collections criptografadas, use uma ferramenta de monitoramento de desempenho de aplicativos de terceiros para coletar métricas.

Para obter detalhes, consulte a seçãoRedação desta página.

A Queryable Encryption oferece suporte a um subconjunto de comandos, operadores de query, operadores de atualização, estágios de agregação e expressões de agregação . Para obter a lista de operações suportadas, consulte Operações suportadas para Queryable Encryption.

Execute manualmente a compactação da coleção de metadados quando suas coleções de metadados excederem 1 GB. A compactação diminui o tamanho das coleções de metadados associadas aos campos criptografados e melhora o desempenho.

Não modifique o encryptedFieldsMap passado para seu MongoClient. Isso pode resultar em um comportamento inesperado e incorreto durante a consulta.

A Queryable Encryption criptografa o conjunto de campos na configuração encryptionFieldsMap que você passa para o construtor do MongoClient . Se você especificar um campo que antes era texto simples em sua configuração encryptedFieldsMap que existe nos documentos de coleção, só poderá executar query nesse campo de documentos inseridos depois de atualizar sua configuração encryptedFieldsMap .

Por exemplo, considere um banco de dados de dados no qual você inseriu documentos com um campo de texto simples streetAddress . Adicionar este campo a encryptedFieldsMap e executar inserções subsequentes inserirá o valor codificado de streetAddress no banco de banco de dados. O driver enviará queries futuras para um streetAddress específico como BinData. Como resultado, os valores de texto simples nos documentos originais nunca corresponderão a queries futuras.

Você não pode configurar o Queryable Encryption para criptografar o campo _id porque ele depende do valor gerado automaticamente pelo MongoDB.

Você não pode renomear um campo criptografado . Por exemplo, se você especificar ssn como um campo a ser criptografado, não poderá $rename o nome do campo para taxPayerID.

O tipo de query que você especifica para um campo ao criar a collection no encryptedFieldsMap é imutável. Não é possível habilitar novos tipos de query para um campo existente e não é possível alterar o tipo de query existente.

Para melhorar a segurança, a Queryable Encryption oculta campos de alguns comandos de diagnóstico em coleções criptografadas e omite determinadas operações do log de query. Uma coleção criptografada é qualquer coleção com a opção encryptedFields .

As operações CRUD abaixo são omitidas do registro de query de operações lentas e da coleção do Database Profiler system.profile quando você as executa em uma coleção criptografada.

O comando collStats e o estágio de agregação $collStats:

  • Omit "queryExecStats"

  • Omit "latencyStats"

  • Edite "WiredTiger", se presente, para incluir apenas o campo url .

O comando currentOp e o estágio de agregação $currentOp:

  • Omita todos os campos após "command".

  • Suprima "command" para incluir apenas o primeiro elemento $comment e $db.

O comando top retorna somente o nome da collection de collections criptografadas.

O estágio de agregação $planCacheStats omite as operações em coleções criptografadas, mesmo que as operações sejam armazenadas em cache normalmente.

  • Conjuntos de réplicas e clusters fragmentados são aceitos

  • Implantações autônomas não são aceitas

  • Não há compatibilidade para leituras secundárias

  • As coleções de metadados não devem ser fragmentadas

  • As chaves de fragmento não devem ser campos criptografadas

  • Não é possível usar a criptografia de nível de campo do lado do cliente com Queryable Encryption na mesma coleção.

    • O Queryable Encryption não oferece suporte à migração de coleções criptografadas com criptografia no nível do campo do lado do cliente. Você deve descriptografar seus documentos e inseri-los um por um.

    • A Queryable Encryption não oferece suporte à migração automática de uma collection não criptografada. Você deve inserir os documentos um a um.

  • A Queryable Encryption oferece suporte apenas a novas coleções. Você não pode adicionar ou remover a Queryable Encryption de coleções existentes.

  • Você não pode renomear uma coleção com campos criptografados.

  • Você não pode especificar jsonSchema a db.createCollection() ao criar uma coleção Queryable Encryption se jsonSchema contiver a palavra-chave encrypt.

    • Você pode especificar tanto encryptedFields quanto jsonSchema a db.createCollection(), desde que o jsonSchema não contenha validação para campos criptografados.

  • A Queryable Encryption não é compartível com Visualizações, coleções de séries temporais nem collections limitadas.

  • A Queryable Encryption não é compatível com índices TTL ou índices únicos.

  • Você não pode desabilitar a validação do jsonSchema .

  • Quando uma coleção usa a opção encryptedFields :

    • Não é possível definir validationLevel como none.

    • Não é possível definir validationAction como warn.

  • Descartar coleções de um MongoClient que não está configurado para Queryable Encryption não descarta as coleções de metadados associadas. mongod registra um aviso se você soltar uma coleção com campos criptografados antes de descartar as coleções de metadados.

Dica

Ao descartar uma coleção com um MongoClient configurado para Queryable Encryption, os drivers compatíveis também descartam as coleções de metadados associadas.

Sempre crie explicitamente quaisquer coleções que usem Queryable Encryption. A criação implícita de collections não cria os índices e collections de metadados necessários, resultando em um baixo desempenho da query.

A Queryable Encryption não oferece suporte à criptografia automática em campos dentro de uma array de documentos.

As aplicações não podem confiar na criptografia automática para evitar queries não suportadas em visualizações de coleções com campo criptografados.

Queries nas visualizações de coleções que contenham valores criptografados com a Queryable Encryption podem retornar resultados inesperados ou incorretos se o pipeline de agregação fundamental das visualizações ou a query fizerem referência a campos criptografados. Ao criar uma visualização em uma coleção que contenha valores criptografados com a Queryable Encryption, evite operar em campos criptografados para reduzir o risco de resultados inesperados ou incorretos.

Para mais informações sobre visualizações, consulte Visualizações.

A Queryable Encryption ignora os agrupamentos especificados pelo usuário ou os agrupamentos padrão da coleção. A criptografia obscurece o valor do campo e evita o comportamento normal de agrupamento. Queries sensíveis ao agrupamento em campo criptografados podem retornar resultados inesperados ou incorretos.

Para obter mais informações sobre agrupamentos, consulte Documento de agrupamento.

Os drivers compatíveis com Criptografia Consultável possuem uma lista de operações suportadas para criptografia automática. Para operações de leitura e gravação sem suporte, a biblioteca de suporte subjacente não pode introspeccionar o catálogo de coleção para identificar o agrupamento padrão. Os aplicativos, portanto, não podem contar com a validação do Queryable Encryption para impedir a query em campos criptografados com padrões de agrupamento.

Os índices únicos não poderão garantir a exclusividade se a chave de índice especificar quaisquer campos criptografados.

Queryable Encryption sempre gera um valor criptografado diferente, mesmo para a mesma entrada. O servidor considera cada valor criptografado exclusivo, mesmo que o valor descriptografado possa não ser. Isso significa que, mesmo que uma coleção use uma restrição exclusiva imposta por índice nos campo, a coleção ainda pode conter vários documento com valores de texto simples duplicados para esse campo.

Os drivers compatíveis com o Queryable Encryption configurados para criptografia automática suportam algumas operações de criptografia automática. Para operações de leitura e gravação não permitidas, a biblioteca subjacente não pode introspecção do catálogo de índices para identificar um determinado campo como exclusivo. Os aplicativos não podem confiar na validação automática de criptografia para evitar violações de restrições exclusivas em campos criptografados aleatoriamente.

Voltar

Comparação de abordagens