Limitações do Queryable Encryption
Nesta página
- Visão geral
- Garantias de segurança
- 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
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.
Para limitações de compatibilidade, leia Compatibilidade.
Garantias de segurança
Aviso
A Queryable Encryption contra a exfiltração de dados, não contra invasores com acesso persistente a um ambiente ou contra aqueles que podem recuperar snapshots do banco de dados de dados e transcrições/registros de query que os acompanhem.
Ao usar a Queryable Encryption, as queries de igualdade e faixa oferecem segurança semelhante contra invasores com snapshots de banco de dados de dados. No entanto, um invasor com acesso a instantâneos do banco de dados de dados e informações de query está além do escopo das garantias de segurança do Queryable Encryption. Isso é especialmente verdadeiro para queries de intervalo, mesmo que apenas um pequeno número de transcrições ou registros de query seja recuperado. 6.1Consulte : Queries de Intervalo no Modelo Persistente no whitepaper de visão geral para obter detalhes.
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 Redação desta página.
Operações suportadas
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.
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.
Modificando o encryptedFieldsMap
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.
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.
Nomes de campo criptografados
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
.
Modificando Campos de Query
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.
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
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.
arrays
A Queryable Encryption não oferece suporte à criptografia automática em campos dentro de uma array de documentos.
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.