Página inicial do Docs → Desenvolver aplicações → Manual do MongoDB
Usar criptografia no nível do campo automática no lado do cliente com GCP
Nesta página
- Visão geral
- Antes de começar
- Configurar o KMS
- Registrar uma conta de serviço do GCP
- Criar uma chave mestra do cliente GCP
- Criar o aplicativo
- Crie um índice único em sua coleção do Key Vault
- Criar uma chave de criptografia de dados
- Configure o MongoClient
- Inserir um documento com campos criptografados
- Recupere seu documento criptografado
- Saiba mais
Visão geral
Este guia mostra como criar um aplicativo habilitado para criptografia de nível de campo (CSFLE) do lado do cliente usando o serviço de gerenciamento de chaves do Google Cloud.
Depois de concluir as etapas deste guia, você deverá ter:
Uma chavemestra do cliente hospedada no serviço de gerenciamento de chaves do Google Cloud.
Uma aplicação cliente que insere documento criptografados usando sua chave mestra do cliente.
Antes de começar
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.
Neste guia, os exemplos de código usam texto de espaço reservado. Antes de executar os exemplos, substitua seus valores por esses espaços reservados.
Por exemplo:
dek_id := "<Your Base64 DEK ID>"
Você deve substituir tudo o que estiver entre aspas por sua ID DEK.
dek_id := "abc123"
Selecione a linguagem de programação para a qual você deseja ver exemplos de código no menu suspenso Select your language no lado direito da página.
Dica
Veja: Aplicação Completa
Para ver o código completo do aplicativo executável deste tutorial, acesse o link a seguir:
Configurar o KMS
Registrar uma conta de serviço do GCP
Registre-se ou faça login em sua conta existente no Google Cloud.
Crie uma conta de serviço para seu projeto
Para criar uma conta de serviço no Google Cloud, siga as instruções para criar uma conta de serviço. guia na documentação oficial do Google.
Adicionar uma chave de conta de serviço
Para adicionar uma chave de conta de serviço no Google Cloud, siga o Gerenciamento de chaves de conta de serviço guia na documentação oficial do Google.
Importante
Ao criar sua chave de conta de serviço, você recebe um download único das informações da chave privada. Certifique-se de baixar este arquivo no formato PKCS12 ou JSON para uso posterior neste tutorial.
Criar uma chave mestra do cliente GCP
Criar uma nova chave mestre do cliente
Crie um chaveiro e uma chave simétrica seguindo o Criar uma chave guia da documentação oficial do Google.
Essa chave é a chave mestre do cliente (CMK).
Registre os seguintes detalhes da sua chave mestra do cliente para uso em uma etapa futura deste tutorial.
Campo | Obrigatório | Descrição |
---|---|---|
key_name | Sim | Identificador para a chave mestra do cliente. |
key_ring | Sim | Identificador do grupo de chaves ao qual sua chave pertence. |
key_version | Não | A versão da chave nomeada. |
localização | Sim | Região especificada para sua chave. |
endpoint | Não | O host e a porta opcional do GCP KMS. O valor padrão é cloudkms.googleapis.com . |
Criar o aplicativo
Selecione a guia que corresponde ao driver MongoDB que você está usando em seu aplicativo para ver as amostras de código relevantes.
Criar uma chave de criptografia de dados
Adicione suas credenciais do GCP KMS
Adicione as credenciais da conta de serviço ao código do cliente habilitado para CSFLE.
Dica
Você salvou um arquivo contendo as credenciais da chave da conta de serviço na etapa Criar uma conta de serviço GCP deste guia.
Se você baixou suas credenciais no formato JSON, poderá usar o seguinte comando para extrair o valor de sua chave privada, substituindo <credentials-filename>
pelo nome do seu arquivo de credenciais:
cat <credentials-filename> | jq -r .private_key | openssl pkcs8 -topk8 -nocrypt -inform PEM -outform DER | base64
Se você baixou suas credenciais no formato PKCS12, você precisará especificar sua senha de importação de conta de serviço do GCP e adicionar uma senha PEM para acessar a chave ao acessá-la usando o seguinte comando, substituindo <credentials-filename>
pelo nome do seu arquivo de credenciais:
openssl pkcs12 -info -in <credentials-filename>
Dica
Saiba mais
Para saber mais sobre o objeto do provedor de KMS para o GCP, consulte GCP KMS.
Adicione suas informações principais
Atualize o seguinte código para especificar sua Chave Mestre do Cliente:
Dica
Registrou os detalhes da Chave Mestre do Cliente na etapa Criar uma Chave Mestre do Cliente deste guia.
Dica
Saiba mais
Para ver um diagrama que mostra como o aplicativo cliente cria a chave de encriptação de dados ao usar um serviço de gerenciamento de chaves do Google Cloud, consulte Arquitetura.
Para saber mais sobre as opções de criação de uma Chave de criptografia de dados criptografada com uma Chave Mestre do Cliente hospedada no Azure Key Vault, consulte Objeto kmsProviders e Objeto dataKeyOpts.
Dica
Veja: Código Completo
Configure o MongoClient
Crie um esquema de criptografia para sua coleção
Dica
Adicione sua chave de encriptação de dados ID Base64
Certifique-se de atualizar o seguinte código para incluir seu ID Base64 DEK . Você recebeu esse valor na etapa Gerar sua chave de criptografia de dados deste guia.
Especifique o local da biblioteca compartilhada de criptografia automática
Observação
Opções de criptografia automática
As opções de criptografia automática fornecem informações de configuração para a Biblioteca compartilhada de criptografia automática, que modifica o comportamento do aplicativo ao acessar campos criptografados.
Para saber mais sobre a Biblioteca compartilhada de criptografia automática, consulte a página Biblioteca compartilhada de criptografia automática para CSFLE.
Inserir um documento com campos criptografados
Use sua instância de MongoClient
habilitada para CSFLE 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 CSFLE criptografa os campos do documento de forma que ele se pareça com o seguinte:
{ "_id": { "$oid": "<_id of your document>" }, "name": "Jon Doe", "ssn": { "$binary": "<cipher-text>", "$type": "6" }, "bloodType": { "$binary": "<cipher-text>", "$type": "6" }, "medicalRecords": { "$binary": "<cipher-text>", "$type": "6" }, "insurance": { "provider": "MaestCare", "policyNumber": { "$binary": "<cipher-text>", "$type": "6" } } }
Dica
Veja: Código Completo
Recupere seu documento criptografado
Recupere o documento criptografado inserido na etapa Inserir um documento com campos criptografados deste guia.
Para mostrar a funcionalidade do CSFLE, as seguintes consultas de trecho de código para seu documento com um cliente configurado para CSFLE automático, bem como um cliente que não está configurado para CSFLE automático.
A saída do trecho de código anterior deve ser semelhante a esta:
Finding a document with regular (non-encrypted) client. { _id: new ObjectId("629a452e0861b3130887103a"), name: 'Jon Doe', ssn: new Binary(Buffer.from("0217482732d8014cdd9ffdd6e2966e5e7910c20697e5f4fa95710aafc9153f0a3dc769c8a132a604b468732ff1f4d8349ded3244b59cbfb41444a210f28b21ea1b6c737508d9d30e8baa30c1d8070c4d5e26", "hex"), 6), bloodType: new Binary(Buffer.from("0217482732d8014cdd9ffdd6e2966e5e79022e238536dfd8caadb4d7751ac940e0f195addd7e5c67b61022d02faa90283ab69e02303c7e4001d1996128428bf037dea8bbf59fbb20c583cbcff2bf3e2519b4", "hex"), 6), 'key-id': 'demo-data-key', medicalRecords: new Binary(Buffer.from("0217482732d8014cdd9ffdd6e2966e5e790405163a3207cff175455106f57eef14e5610c49a99bcbd14a7db9c5284e45e3ee30c149354015f941440bf54725d6492fb3b8704bc7c411cff6c868e4e13c58233c3d5ed9593eca4e4d027d76d3705b6d1f3b3c9e2ceee195fd944b553eb27eee69e5e67c338f146f8445995664980bf0", "hex"), 6), insurance: { policyNumber: new Binary(Buffer.from("0217482732d8014cdd9ffdd6e2966e5e79108decd85c05be3fec099e015f9d26d9234605dc959cc1a19b63072f7ffda99db38c7b487de0572a03b2139ac3ee163bcc40c8508f366ce92a5dd36e38b3c742f7", "hex"), 6), provider: 'MaestCare' } } Finding a document with encrypted client, searching on an encrypted field { _id: new ObjectId("629a452e0861b3130887103a"), name: 'Jon Doe', ssn: 241014209, bloodType: 'AB+', 'key-id': 'demo-data-key', medicalRecords: [ { weight: 180, bloodPressure: '120/80' } ], insurance: { policyNumber: 123142, provider: 'MaestCare' } }
Dica
Veja: Código Completo
Saiba mais
Para saber mais sobre os tópicos mencionados neste guia, consulte os seguintes links:
Saiba mais sobre componentes CSFLE na página Referência.
Saiba como funcionam as chaves mestras do cliente e as chaves de criptografia de dados na página Chaves e cofres de chaves
Veja como os provedores de KMS gerenciam suas chaves CSFLE na página Provedores de KMS CSFLE.