Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Provedores de KMS

Nesta página

  • Visão geral
  • Motivos para usar um sistema de gerenciamento de chaves remotas
  • Principais tarefas do sistema de gerenciamento
  • Crie e armazene sua chave mestra do cliente
  • Criar e criptografar uma chave de encriptação de dados
  • Serviços de gerenciamento de chaves suportados
  • KMS do Amazon Web Services
  • Cofre de chaves do Azure
  • KMS do Google Cloud Platform
  • KMIP
  • Provedor de chaves local

Saiba mais sobre os provedores do sistema de gerenciamento de chaves (KMS) que o Queryable Encryption suporta.

Usar um Sistema de gerenciamento de chaves remoto para managed sua chave mestra do cliente tem as seguintes vantagens em relação ao uso do sistema de arquivos local para hospedá-lo:

  • Armazenamento seguro da chave com auditoria de acesso

  • Risco reduzido de ter problemas de permissão de acesso

  • Disponibilidade e distribuição da chave para clientes remotos

  • Backup e recuperação automatizados de chaves

  • Gerenciamento centralizado do ciclo de vida da chave de encriptação

Além disso, para os seguintes fornecedores de KMS, seu KMS criptografa e descriptografa remotamente seu diretório de dados, garantindo que sua chave mestra do cliente nunca seja exposta à sua aplicação com Queryable Encryption habilitado:

  • KMS do Amazon Web Services

  • Cofre de chaves do Azure

  • KMS do Google Cloud

Na Queryable Encryption, seu sistema de gerenciamento de chaves:

  • Cria e criptografa a chave mestra do cliente

  • Criptografa as chaves de criptografia de dados criadas pelo seu aplicativo

  • Descriptografa chaves de criptografia de dados

Para saber mais sobre chave mestra do cliente e chave de encriptação de dados, consulte Keys and Key Vaults.

Para criar uma chave mestra do cliente, configure seu Sistema de Gerenciamento de Chaves para gerar sua chave mestra do cliente da seguinte maneira:

Diagrama

Para exibir um tutorial que demonstra como criar e armazenar uma chave mestra do cliente no KMS de sua preferência, consulte Tutoriais.

Para criar um diretório de dados:

  • Instanciar uma instância ClientEncryption em seu aplicativo habilitado para Queryable Encryption:

    • Forneça um objeto kmsProviders que especifique as credenciais que seu aplicativo habilitado para Queryable Encryption usa para se autenticar com seu provedor de KMS .

  • Crie um diretório de dados com o método CreateDataKey do objeto ClientEncryption em sua aplicação habilitada para Queryable Encryption.

    • Forneça um objeto do dataKeyOpts que especifique com qual chave seu KMS deve criptografar sua nova Chave de criptografia de dados.

Para aprender a criar e criptografar uma Chave de encriptação de dados, assista ao tutorial disponível nos recursos a seguir:

Para visualizar a estrutura dos objetos kmsProviders e dataKeyOpts de todos os provedores KMS compatíveis, consulte Serviços de gerenciamento de chaves suportados.

As seções a seguir desta página apresentam as seguintes informações para todos os provedores do Key Management System:

  • Arquitetura do cliente habilitado para Queryable Encryption

  • Estrutura de kmsProviders objetos

  • Estrutura de dataKeyOpts objetos

A Queryable Encryption é compatível com os seguintes provedores do Key Management System:

Esta seção fornece informações relacionadas ao uso do AWS Key Management Service em seu aplicativo habilitado para Queryable Encryption.

Para ver um tutorial que demonstra como usar o KMS da Amazon Web Services em sua aplicação habilitada para Queryable Encryption, consulte Usar Queryable Encryption automática com a Amazon Web Services.

O diagrama a seguir descreve a arquitetura de uma aplicação habilitada para Queryable Encryption usando o Amazon Web Services KMS.

Diagrama KMS

Observação

O cliente não consegue acessar a chave mestra do cliente

Ao usar o Sistema de gerenciamento de chaves anterior, seu aplicativo habilitado para Queryable Encryption não tem acesso à sua Chave mestre do cliente.

A tabela a seguir apresenta a estrutura de um objeto kmsProviders para o AWS KMS:

Campo
Obrigatório para o usuário do IAM
Obrigatório para a função do IAM
Descrição
ID da chave de acesso
Sim
Sim
Identifica o usuário da conta.
Chave de acesso secreta
Sim
Sim
Contém as credenciais de autenticação do usuário da conta.
Token da sessão
Não
Sim
Contém um token obtido do AWS Security Token Service (STS).

A tabela a seguir apresenta a estrutura de um objeto dataKeyOpts para o AWS KMS:

Campo
Obrigatório
Descrição
chave
Sim
Número de recurso daAmazon (ARN) da chave mestre.
região
Não
Região AWS de sua chave mestra, por exemplo. "us-west-2"; necessário somente se não for especificado em seu ARN.
endpoint
Não
Nome de host personalizado para o endpoint AWS, se configurado para sua conta.

Esta seção fornece informações relacionadas ao uso do Azure Key Vault em seu aplicativo habilitado para Queryable Encryption.

Para ver um tutorial demonstrando como usar o Azure Key Vault em seu aplicativo habilitado para Queryable Encryption, consulte Usar Queryable Encryption Automática com o Azure.

O diagrama a seguir descreve a arquitetura de um aplicativo habilitado para Queryable Encryption usando o Azure Key Vault.

Diagrama KMS

Observação

O cliente não consegue acessar a chave mestra do cliente

Ao usar o Sistema de gerenciamento de chaves anterior, seu aplicativo habilitado para Queryable Encryption não tem acesso à sua Chave mestre do cliente.

A tabela a seguir mostra a estrutura de um objeto de Realm kmsProviders para o Azure Key Vault:

Campo
Obrigatório
Descrição
azure.tenantId
Sim
Identifica a organização da conta.
azure.clientId
Sim
Identifica o clientId para autenticar seu aplicativo registrado.
azure.clientSecret
Sim
Usado para autenticar seu aplicativo registrado.
azure.identityPlatformEndpoint
Não
Especifica um nome de host e número de porta para o servidor de autenticação. O padrão é login.microsoftonline.com e é necessário apenas para instâncias não comerciais do Azure, como uma conta do governo ou da China.

A tabela a seguir mostra a estrutura de um objeto de Realm dataKeyOpts para o Azure Key Vault:

Campo
Obrigatório
Descrição
Nome da chave
Sim
Nome da chave mestre
keyVersion
Não, mas é altamente recomendável
Versão da chave mestre
Ponto final do KeyVault
Sim
URL do cofre de chaves. Por exemplo, myVaultName.vault.azure.net

Aviso

Se você não incluir um campo keyVersion, o Azure Key Vault tentará descriptografar as chaves de criptografia de dados usando a chave mestre do cliente mais recente. Se você girar a Customer Master Key, mas não reencapsular as chaves de encriptação de dados com a nova chave mestra, a tentativa de descriptografar uma chave de encriptação existente falhará, pois a chave de encriptação é criptografada com a versão anterior da Customer Master Key.

Esta seção fornece informações relacionadas ao uso do Google Cloud Key Management em seu aplicativo habilitado para Queryable Encryption.

Para visualizar um tutorial demonstrando como usar o GCP KMS em seu aplicativo habilitado para Queryable Encryption, consulte Usar Queryable Encryption Automática com GCP.

O diagrama a seguir descreve a arquitetura de um aplicativo habilitado para Queryable Encryption usando o GCP KMS.

Diagrama KMS

Observação

O cliente não consegue acessar a chave mestra do cliente

Ao usar o Sistema de gerenciamento de chaves anterior, seu aplicativo habilitado para Queryable Encryption não tem acesso à sua Chave mestre do cliente.

A tabela a seguir mostra a estrutura de um objeto de Realm kmsProviders para a Google Cloud Platform Key Management Service (GCP KMS):

Campo
Obrigatório
Descrição
Email
Sim
Identifica o endereço de e-mail da sua conta de serviço.
chave privada
Sim
Identifica a chave privada da sua conta de serviço em qualquer string base64 ou Formato de subtipo binário 0 sem os marcadores de prefixo e sufixo.

Suponha que o valor da chave privada da sua conta de serviço seja o seguinte:
-----BEGIN PRIVATE KEY-----\nyour-private-key\n-----END PRIVATE KEY-----\n
O valor que você especificaria para este campo é:
your-private-key
Se você tiver um user-key.json arquivo de credencial do , você poderá extrair a string executando o seguinte comando em uma caixa ou shell semelhante. O comando a seguir requer a instalação do OpenSSL:
cat user-key.json | jq -r .private_key | openssl pkcs8 -topk8 -nocrypt -inform PEM -outform DER | base64 -w 0
endpoint
Não
Especifica um nome de host e número de porta para o servidor de autenticação. O padrão é oauth2.googleapis.com.

A tabela a seguir mostra a estrutura de um objeto de Realm dataKeyOpts para a Google Cloud Platform Key Management Service (GCP KMS):

Campo
Obrigatório
Descrição
projectId
Sim
Identificador do seu projeto no qual você criou a chave.
localização
Sim
Região especificada para sua chave.
chaveiro
Sim
Identificador do grupo de chaves ao qual sua chave pertence.
Nome da chave
Sim
Identificador para a chave mestre simétrica.
keyVersion
Não
Especifica a versão da chave nomeada. Se não for especificada, a versão padrão da chave será usada.
endpoint
Não
Especifica o host e a porta opcional do Cloud KMS. O padrão é cloudkms.googleapis.com.

Esta seção fornece informações relacionadas ao uso de um KMIP Sistema de gerenciamento de chaves compatível em seu aplicativo habilitado para Queryable Encryption.

O diagrama a seguir descreve a arquitetura de um aplicativo habilitado para Queryable Encryption usando um provedor de chaves compatível com KMIP .

Diagrama

Importante

O cliente acessa a chave mestre do cliente

Quando o aplicativo habilitado para Queryable Encryption usa um provedor de chaves compatível com KMIP , o aplicativo acessa diretamente a chave mestre do cliente.

A tabela a seguir apresenta a estrutura de um objeto kmsProviders para um sistema de gerenciamento de chaves compatível com KMIP:

Observação

Autenticar por TLS/SSL

Seu aplicativo habilitado para Queryable Encryption autentica por TLS/SSL ao usar KMIP.

Campo
Obrigatório
Descrição
endpoint
Sim
Especifica um nome de host e número de porta para o servidor de autenticação.

A tabela a seguir apresenta a estrutura de um objeto dataKeyOpts para um sistema de gerenciamento de chaves compatível com KMIP:

Campo
Obrigatório
Descrição
chaveId
Não

O keyId campo de um 96 objeto gerenciado de dados secretos de bytes armazenados em seu provedor de chaves compatível com KMIP .

Se você não especificar o campo keyId no documento masterKey que enviar ao provedor de chaves compatível com KMIP, o driver criará um novo objeto gerenciado de dados secretos de 96 bytes no provedor de chaves compatível com KMIPpara atuar como sua chave mestra.

endpoint
Sim
O URI do seu provedor de chave compatível com KMIP.

Esta seção fornece informações relacionadas ao uso de um provedor de chaves locais (seu sistema de arquivos) em seu aplicativo habilitado para Queryable Encryption.

Aviso

Não use um arquivo de chave local na 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 .

Para ver um tutorial que demonstra como usar um provedor de chave local para testar a Queryable Encryption, consulte Início Rápido.

Quando você usa um provedor de chaves locais, sua aplicação recupera sua chave mestra do cliente do sistema de arquivos do computador em que ele é executado. O diagrama a seguir descreve a arquitetura de um aplicativo habilitado para Queryable Encryption usando um provedor de chaves local.

Diagrama de arquitetura do provedor de chave local.

A tabela a seguir apresenta a estrutura de um objeto kmsProviders para um provedor de chaves local:

Campo
Obrigatório
Descrição
chave
Sim
A chave mestre usada para criptografar/descriptografar chaves de dados. A chave mestre é passada como uma string codificada base64.

Ao usar um provedor de chave local, você especifica a chave mestra do cliente por meio do objeto kmsProviders.

← Girar e retrair chaves de criptografia