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

Gerenciamento de collection criptografada

Nesta página

  • Visão geral
  • collection de metadados
  • Custos de Armazenamento
  • Custos de gravação
  • Inserir operações
  • Atualizar operações
  • Excluir operações
  • Compactação de Índices

Neste guia, você pode aprender como managed sua collection criptografadas e os custos de armazenamento e gravação da Queryable Encryption.

O Queryable Encryption introduz a capacidade de criptografar campo confidenciais em seu documento usando criptografia aleatória, enquanto ainda pode query os campo criptografados.

Com o Queryable Encryption, um determinado valor de texto simples sempre é criptografado para um texto cifrado diferente, enquanto ainda permanece consultável. Para habilitar essa funcionalidade, o Queryable Encryption usa quatro estruturas de dados:

  • Três collection de metadados

  • Um campo em cada documento na collection criptografada chamado __safeContent__

Importante

É fundamental que essas estruturas de dados não sejam modificadas ou excluídas, ou os resultados da query estarão incorretos.

Quando você cria uma collection criptografada usando o Queryable Encryption, o MongoDB cria três collection de metadados:

  • enxcol_.<collectionName>.esc, denominado ESC

  • enxcol_.<collectionName>.ecc, denominado ECC

  • enxcol_.<collectionName>.ecoc, denominado ECOC

Exemplo

Se você criar uma collection chamada "clientes", o MongoDB criará as seguintes collection de metadados:

  • enxcol_.patients.esc

  • enxcol_.patients.ecc

  • enxcol_.patients.ecoc

Quando você insere documento com campo criptografados que deseja consultar, o MongoDB atualiza a collection de metadados para manter um índice que permite fazer query. O MongoDB se refere a isso como "campo indexado". Isso tem um custo de armazenamento e velocidade de gravação.

Os custos de armazenamento e gravação aumentam com base no número de campos indexados por documento.

Importante

Pré-visualização técnica

A orientação do MongoDB durante a visualização técnica é esperar duas a três vezes o requisito de armazenamento para uma collection Queryable Encryption e collection de metadados associadas. Por exemplo, uma collection de 1 GB pode ter um requisito de armazenamento de 2 a 3 GB para collection de metadados associadas.

Essa orientação será ajustada em uma versão futura.

Ao inserir um documento, cada campo requer duas gravações em collection de metadados.

  • Uma gravação para ESC

  • Uma gravação para ECOC

Exemplo

A inserção de um documento com dois campos indexados requer:

  • Uma gravação na coleção criptografada.

  • quatro gravações na collection de metadados.

Ao atualizar um documento, cada campo indexado exige quatro gravações em collection de metadados.

  • Uma gravação para ESC

  • Uma gravação para ECC

  • Duas gravações em ECOC

Exemplo

Atualizar um documento com dois campos indexados requer:

  • Uma gravação na coleção criptografada.

  • Oito gravações nas coleções de metadados.

Ao excluir um documento, cada campo indexado requer duas gravações na collection de metadados.

  • Uma gravação para ECC

  • Uma gravação para ECOC

Exemplo

Excluir um documento com dois campos indexados requer:

  • Uma gravação na collection criptografada.

  • quatro gravações na collection de metadados.

Importante

Pré-visualização técnica

Você é obrigado a executar a compactação de índice durante a visualização técnica. O MongoDB planeja executar automaticamente a compactação de índices em uma versão futura.

À medida que você insere, atualiza e exclui documento, a collection de metadados muda e cresce. A compactação de índice é um processo que remove a collection de metadados e reduz seu tamanho.

Você deve executar a compactação de índice quando o tamanho de ECOC exceder 1 GB.

Você pode verificar o tamanho de suas coleções utilizando mongosh e emitindo o comando db.collection.totalSize() .

Exemplo

Neste exemplo, a collection criptografada é chamada de "pacients".

db.enxcol_.patients.ecoc.totalSize()
1407960328

Importante

Você deve configurar seu cliente para que o Queryable Encryption execute a compactação do índice.

Para executar a compactação de índice, use mongosh e execute o comando db.collection.compactStructuredEncryptionData() para reduzir o tamanho das collections de metadados.

Exemplo

const eDB = "encryption"
const eKV = "__keyVault"
const secretDB = "records"
const secretCollection = "patients"
const localKey = fs.readFileSync("master-key.txt")
const localKeyProvider = { key: localKey }
const queryableEncryptionOpts = {
kmsProviders: { local: localKeyProvider },
keyVaultNamespace: `${eDB}.${eKV}`,
}
const encryptedClient = Mongo("localhost:27017", queryableEncryptionOpts)
const encryptedDB = encryptedClient.getDB(secretDB)
const encryptedCollection = encryptedDB.getCollection(secretCollection)
encryptedCollection.compactStructuredEncryptionData()
{
"stats": {
...
},
"ok": 1,
...
}

Voltar

Campos e queries