Limitações
Nesta página
- Visão geral
- Atlas Search
- Limitações de suporte do MongoDB
- Fator de contenção
- Compactação manual da coleção de metadados
- encryptedFieldsMap Modification
- Suporte a operações de leitura e gravação
- 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
- CRUD
- Collections
- Descartar collection
- criar coleta
- Tipos de query
- Nomes de campo criptografados
- Visualizações
- Agrupamentos
- Unique Indexes
- O campo _id
- Suporte a consultas de leitura/gravação
Visão geral
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.
Atlas Search
Queryable Encryption é incompatível com oMongoDB Atlas Atlas Search.
Limitações de suporte do MongoDB
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ção Supressão.
Fator de contenção
O fator de contenção é uma configuração que ajuda a ajustar o desempenho com base no número de operações simultâneas. Ao não ser definido, a contenção usa um valor padrão de 8
, que fornece alto desempenho para a maioria das cargas de trabalho.
Você pode definir o fator de contenção somente ao especificar um campo para criptografia. Depois de especificar um campo para criptografia, o fator de contenção é imutável.
Para obter mais informações, consulte Configurando o fator de contenção.
Compactação manual da coleção de metadados
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.
encryptedFieldsMap Modification
Não modifique o encryptedFieldsMap
passado para seu MongoClient
. Isso pode resultar em um comportamento inesperado e incorreto durante a consulta.
Suporte a operações de leitura e gravação
O mongod
armazena apenas o BinData
criptografado e aplica qualquer expressão de agregação ou operador de consulta que especifique um campo criptografado ao valor BinData
. Embora a expressão ou o operador possa oferecer suporte a campos BinData
, o valor resultante pode ser incorreto ou inesperado quando comparado à emissão dessa mesma expressão ou operador em relação ao valor descriptografado. O mongod
gera um erro se a expressão ou o operador não suportar valores BinData
.
Redação
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
.
Log de consulta e supressão do profiler de banco de dados
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
compactStructuredEncryptionData
O comando
cleanupStructuredEncryptionData
Supressão de saída do estágio de comando e agregação
O comando collStats
e o estágio de agregação $collStats
:
Omit
"queryExecStats"
Omit
"latencyStats"
Edite
"WiredTiger"
, se presente, para incluir apenas o campourl
.
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.
Suporte a topologia
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
Fragmentação
As coleções de metadados não devem ser fragmentadas
As chaves de fragmento não devem ser campos criptografadas
Para transações de cluster fragmentado que usam Queryable Encryption, deve-se configurar readConcern como
snapshot
.
CRUD
O Queryable Encryption não oferece suporte a operações de atualização de vários documentos. Não há suporte para
db.collection.updateMany()
.A Queryable Encryption não suporta operações de atualização ou exclusão de várias declarações. Se tiver mais de uma operação de atualização ou exclusão,
db.collection.bulkWrite()
não é suportado.A Queryable Encryption limita
db.collection.findAndModify()
argumentos.fields
não é permitidonew
deve ser falso
Ao executar uma operação de upsert, todos os campos criptografados no filtro são excluídos da inserção.
Collections
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
adb.createCollection()
ao criar uma coleção Queryable Encryption sejsonSchema
contiver a palavra-chaveencrypt
.Você pode especificar tanto
encryptedFields
quantojsonSchema
adb.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
comonone
.Não é possível definir
validationAction
comowarn
.
Descartar collection
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.
criar coleta
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.
Tipos de query
Ao criar a coleção no encryptedFieldsMap
, o tipo de query que você especificar para um campo será imutável. Não é possível adicionar novos tipos de query a um campo existente nem alterar o tipo de query existente.
Nomes de campo criptografados
Os nomes dos campos criptografados são imutáveis. Por exemplo, se você especificar ssn
como um campo para criptografar, não poderá $rename
o nome do campo como taxPayerID
.
Visualizações
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 obter mais informações sobre visualizações, consulte visualizações
Agrupamentos
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.
Unique Indexes
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.
O campo _id
Você não pode configurar o Queryable Encryption para criptografar o campo _id
porque ele depende do valor gerado automaticamente pelo MongoDB.
Suporte a consultas de leitura/gravação
A criptografia automática é compatível com um subconjunto de comandos, operadores de consultas, operadores de atualização, estágios de agregação e expressões de agregação. Para obter a lista de operações com suporte, consulte Operações com suporte para criptografia automática.