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

Usar criptografia explícita

Nesta página

  • Visão geral
  • Antes de começar
  • Procedimento
  • Criar uma chave mestra do cliente
  • Crie um índice único em sua coleção do Key Vault
  • Crie seu diretório de dados e collection criptografada
  • Configure seu MongoClient para leituras e gravações criptografadas
  • Inserir um documento com campos criptografados
  • Recupere seu documento criptografado
  • Saiba mais

Este guia mostra como criptografar um documento com criptografia explícita e um driver MongoDB.

Após concluir este guia, você poderá configurar um driver para criptografar campos em um documento usando criptografia explícita. Com esse conhecimento, você deve ser capaz de criar um aplicativo cliente que use criptografia explícita. com descriptografia automática.

Importante

Não use este aplicativo em produção

Como esse aplicativo de exemplo armazena uma chave de criptografia no sistema de arquivos do aplicativo, você corre o risco de acesso não autorizado à chave ou de perda da chave para descriptografar seus dados.

Para visualizar um tutorial que demonstra como criar um aplicativo habilitado para Queryable Encryption que usa um sistema de gerenciamento de chaves remoto, consulte Tutoriais.

Para concluir e executar o código neste guia, você precisa configurar seu ambiente de desenvolvimento, como mostrado na página Requisitos de instalação.

Dica

Veja: Aplicação Completa

Para ver o código completo do aplicativo criado neste guia, selecione a guia correspondente ao driver do MongoDB de sua preferência e siga o link fornecido:

1

Você deve criar uma chave mestra do cliente (CMK) para executar a Queryable Encryption.

Crie uma chave mestra do cliente de 96 bytes e salve-a no arquivo master-key.txt:

openssl rand 96 > master-key.txt

Observação

Use uma linguagem de programação para criar uma chave mestre do cliente

Se preferir usar sua linguagem de programação preferida para gerar sua CMK, você pode visualizar trechos de código que demonstram como gerar uma Chave Mestre do Cliente em cada uma das linguagens suportadas deste guia no GitHub.

Aviso

Não use um arquivo de chave local em produção

Um arquivo de chave local em seu sistema de arquivos é inseguro e não é recomendado para produção. Em vez disso, você deve armazenar as chaves mestras do cliente em um sistema de gerenciamento de chaves remoto (KMS).

Para saber como usar um KMS remoto em sua implementação do Queryable Encryption, consulte o Guia de tutoriais .

2

Crie um índice único no campo keyAltNames na sua collection encryption.__keyVault .

Selecione a guia correspondente ao driver MongoDB de sua preferência:

3
1

Recupere o conteúdo do arquivo de chave mestra do cliente que você gerou na etapa Criar uma chave mestra do cliente deste guia.

Passe o valor chave mestra do cliente para as configurações do seu provedor de KMS. O cliente usa essas configurações para descobrir a chave mestra do cliente. Defina o nome do provedor como local para informar ao driver que você está usando um provedor de chaves local.

Selecione a guia correspondente ao driver MongoDB de sua preferência:

2

Crie um cliente com sua connection string do MongoDB e o namespace da collection do Key Vault e crie as chaves de criptografia de dados:

Observação

Permissões de namespace da coleção de cofre de chaves

A collection de cofre de chaves está no namespace encryption.__keyVault . Certifique-se de que o trigger de banco de dados que sua aplicação usa para se conectar ao MongoDB tenha permissões de ReadWrite nesse namespace.

3

Use uma instância MongoClient habilitada para Queryable Encryption para especificar quais campo você deve criptografar e criar sua collection criptografada:

A saída do código nesta seção deve se assemelhar ao seguinte:

Created encrypted collection!

Dica

Veja: Código Completo

4
1

Especifique encryption.__keyVault como o namespace da coleção Key Vault.

2

Especifique o fornecedor de KMS e especifique a chave mestra do cliente em linha:

3

Recupere as chaves de criptografia de dados criadas na etapa Criar uma chave de criptografia de dados deste guia:

4

Dica

Saiba mais

Para saber mais sobre a biblioteca referenciada por esse caminho, consulte a página Biblioteca compartilhada de criptografia automática para Queryable Encryption .

5

Instancie um objeto MongoClient com as seguintes configurações de criptografia automática:

Observação

Descriptografia automática

Usamos uma instância MongoClient com criptografia automática habilitada para realizar a descriptografia automática.

Para saber mais sobre criptografia explícita com descriptografia automática, consulte a seção Noções básicas.

6

Instancie um objeto ClientEncryption da seguinte maneira:

5

Use sua instância MongoClient habilitada para Queryable Encryption para inserir um documento criptografado no namespace medicalRecords.patients usando o seguinte trecho de código:

Quando você insere um documento, o cliente habilitado para Queryable Encryption criptografa os campos do documento de forma que ele se pareça com o seguinte:

{
"_id": {
"$oid": "6303e36053cc7ec2e6a630bd"
},
"firstName": "Jon",
"patientId": {
"$binary": {
"base64": "BxLJUBmg703civqMz8ASsD4QEYeSneOGiiYHfLE77ELEkp1EC/fXPrKCNRQl2mAFddszqDJ0P3znKrq0DVMEvJoU6wa0Ra+U+JjNVr8NtJE+TpTLCannY5Av6iGfLAaiHbM/E8Ftz1YCQsArQwuNp3wIV/GJPLa2662xsyk0wz7F6IRGC3FlnxpN4UIFaHE1M7Y6kEnx3tEy5uJBvU4Sex7I2H0kqHthClH77Q6xHIHc8H9d6upvgnEbkKBCnmc24A2pSG/xZ7LBsV3j5aOboPISuN/lvg==",
"subType": "06"
}
},
"medications": {
"$binary": {
"base64": "BvOsveapfUxiuQxCMSM2fYIEyRlQaSqR+0NxlMarwurBflvoMz1FrSjSGgCVCpK8X+YrilP6Bac99kkaUmRJfjo4savxcjpOfEnUj5bHciPyfQBYmYF4PMLDtTTzGZpPilb9d5KgpIMBXxHi+dIcog==",
"subType": "06"
}
},
"__safeContent__": [
{
"$binary": {
"base64": "ZLPIpgxzXpHUGrvdIHetwmMagR+mqvuUj5nzXNGf/WM=",
"subType": "00"
}
}
]
}

Aviso

Não modifique o campo __safeContent__.

O campo __safeContent__ é essencial para o Queryable Encryption. Não modifique o conteúdo deste campo.

Dica

Veja: Código Completo

6

Recupere o documento criptografado inserido na etapa Inserir um documento com campos criptografados deste guia por meio de uma query em um campo criptografado:

A saída do trecho de código anterior deve conter o seguinte documento:

{
"__safeContent__": [
{
"Subtype": 0,
"Data": "LfaIuWm9o30MIGrK7GGUoStJMSNOjRgbxy5q2TPiDes="
}
],
"_id": "6303a770857952ca5e363fd2",
"firstName": "Jon",
"medications": ["Atorvastatin", "Levothyroxine"],
"patientId": 12345678
}

Dica

Veja: Código Completo

Para ver um tutorial sobre como usar o Queryable Encryption com um KMS remoto, consulte Tutoriais.

Para saber como funciona a Queryable Encryption, consulte criptografia explícita.

Para saber mais sobre os tópicos mencionados neste guia, consulte os seguintes links:

← Use o Queryable Encryption com o KMIP