Página inicial do Docs → Desenvolver aplicações → Manual do MongoDB
Operações suportadas para criptografia automática
Nesta página
Esta página documenta os comandos específicos, operadores de query, operadores de atualização, estágios de agregação e expressões de agregação suportados por drivers configurados para criptografia automática de nível de campo do lado do cliente.
Comandos de leitura e escrita suportados
Os drivers que usam a criptografia automática em nível de campo do lado do cliente são compatíveis com os seguintes comandos:
Para qualquer comando suportado, os drivers retornam um erro se o comando usar um operador, estágio de agregação ou expressão de agregação não suportado. Para obter uma lista completa dos operadores, estágios e expressões suportados, consulte as seguintes seções desta página:
Os comandos a seguir não exigem criptografia automática. Os drivers configurados para criptografia automática em nível de campo do lado do cliente passam estes comandos diretamente para mongod
:
A emissão de qualquer outro comando por meio de um driver configurado para criptografia automática em nível de campo do lado do cliente retorna um erro.
[1] | Embora a criptografia automática de nível de campo do lado do cliente (CSFLE) não criptografa o comando getMore , a resposta ao comando pode conter valores de campo criptografados.
|
Operadores de query suportados
Os drivers configurados para criptografia automática em nível de campo do lado do cliente permitem os seguintes operadores de query quando emitidos em campos criptografados deterministicamente :
As queries que comparam um campo codificado com null
ou uma expressão regular sempre retornam um erro, mesmo ao usar um operador de query suportado. As queries que emitem esses operadores em um campo criptografado aleatoriamente retornam um erro.
O operador $exists
tem comportamento normal quando emitido para campos criptografados de forma determinística e aleatória.
As queries que especificam qualquer outro operador de query em um campo criptografado retornam um erro.
Os seguintes operadores de query retornam um erro mesmo que não sejam emitidos em um campo criptografado:
Aviso
Comportamento inesperado com BinData
O MongoDB armazena campos criptografados no nível do campo do lado do cliente como um blob BinData
. As operações de leitura e gravação emitidas com relação ao valor BinData
criptografado podem ter um comportamento inesperado ou incorreto em comparação com a emissão da mesma operação com relação ao valor descriptografado. Certas operações têm suporte rigoroso ao tipo BSON, em que emiti-las contra um valor BinData
retorna um erro.
Drivers que usam criptografia automática de nível de campo do lado do cliente analisam operações de leitura e gravação para operadores ou expressões que não oferecem suporte a valores
BinData
ou que têm comportamento inesperado quando emitidos em valoresBinData
.Os aplicativos que usam criptografia explícita (manual) no nível do campo do lado do cliente podem usar esta página como orientação para emitir operações de leitura e gravação em campos criptografados.
Operações de inserção não suportadas
Os drivers configurados para criptografia automática em nível de campo do lado do cliente não oferecem suporte a comandos de inserção com o seguinte comportamento:
Inserindo um documento com
Timestamp(0,0)
associado a um campo criptografado. O valor(0,0)
indica que omongod
deve gerar o Timestamp. Quandomongod
não pode gerar campos criptografados, o carimbo de data/hora resultante não é criptografado.Inserir um documento sem um
_id
criptografado se o esquema automático configurado especificar um campo_id
criptografado. Quandomongod
gera automaticamente um ObjectId não criptografado, a omissão_id
dos documentos resulta em documentos que não estão em conformidade com as regras de criptografia automática.Inserindo um documento com uma array associada a um campo criptografado deterministicamente . A criptografia automática de nível de campo do lado do cliente não oferece suporte à criptografia de arrays de forma determinística.
Operadores de atualização suportados
Os drivers configurados para criptografia automática em nível de campo do lado do cliente permitem os seguintes operadores de atualização quando emitidos em campos criptografados deterministicamente :
Quando você usa o operador $rename
em campos criptografados, o JSON schema automático deve especificar os mesmos metadados de criptografia para os nomes dos campos de origem e destino.
As atualizações que especificam qualquer outro operador de atualização em um campo criptografado retornam um erro.
As operações de atualização com o seguinte comportamento retornam um erro , mesmo usando um operador compatível:
A operação de atualização produz uma array dentro de um caminho criptografado.
A operação de atualização utiliza sintaxe de expressão de agregação.
Para operações de atualização que especificam um filtro de consulta em campos criptografados deterministicamente, o filtro de consulta deve usar somente operadores suportados nesses campos.
Estágios de aggregation suportados
Os drivers configurados para criptografia automática em nível de campo do lado do cliente oferecem suporte aos seguintes estágios de pipeline de agregação:
$group
(Para os requisitos de uso, consulte Comportamento$group
)$lookup
e$graphLookup
(para obter os requisitos de uso, consulte Comportamento$lookup
e$graphLookup
)
Os pipelines que operam em collections configuradas para criptografia automática que especificam qualquer outro estágio retornam um erro.
Para cada estágio de pipeline suportado, o MongoDB rastreia campos que devem ser criptografados à medida que passam pelos pipelines compatíveis e os marca para criptografia.
Cada estágio suportado deve especificar somente os operadores de query e expressões de agregação suportados.
$group
Comportamento
$group
tem os seguintes comportamentos específicos para criptografia em nível de campo do lado do cliente:
$group
suporta:
Agrupamento em campos criptografados deterministicamente.
Uso de acumuladores
$addToSet
e$push
em campos criptografados.
$group não suporta:
$lookup
e $graphLookup
comportamento
A criptografia automática em nível de campo do lado do cliente suporta $lookup
e $graphLookup
somente se a coleção from
corresponder à coleção na qual a agregação é executada (especificamente, operações de autopesquisa).
Os estágios $lookup
e $graphLookup
que fazem referência a uma coleção from
diferente retornam um erro.
Não é possível executar uma $lookup
a partir de um MongoClient
habilitado para CSFLE em collections não criptografadas.
Expressões de aggregation suportadas
Os drivers configurados para criptografia automática em nível de campo do lado do cliente permitem estágios de aggregation usando as seguintes expressões em campos criptografados deterministicamente :
Todas as outras expressões de aggregation retornam um erro se forem emitidas em campos criptografados.
Os estágios de aggregation com o seguinte comportamento retornam um erro mesmo se estiverem usando uma expressão de aggregation compatível:
Expressões | Comportamento rejeitado | Exemplo | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A expressão especifica um campo cujas propriedades de criptografia não podem ser conhecidas até o tempo de execução e um estágio de agregação subsequente inclui uma expressão que faça referência a esse campo. |
| |||||||||||||||
A expressão cria um novo campo que faz referência a um campo criptografado e opera nesse novo campo na mesma expressão. |
| |||||||||||||||
A expressão faz referência ao prefixo de um campo criptografado dentro da expressão de comparação. |
| |||||||||||||||
O resultado da expressão é comparado a um campo criptografado. |
| |||||||||||||||
A expressão vincula uma variável a um campo criptografado ou tenta religar $$CURRENT . |
| |||||||||||||||
O primeiro argumento para a expressão é um campo criptografado, e
|
|
Tipos de campo não suportados
Os drivers configurados para criptografia automática em nível de campo do lado do cliente (CSFLE) não suportam nenhuma operação de leitura ou gravação que exija criptografar os seguintes tipos de valor:
A criptografia não oculta adequadamente as informações de tipo para esses valores.
O CSFLE automático também não suporta operações de leitura ou escrita em um campo criptografado deterministicamente em que a operação compara o campo criptografado com os seguintes tipos de valor:
array
bool
decimal128
double
object