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
- Azure Key Vault
- KMS do Google Cloud Platform
- KMIP
- Provedor de chaves local
Visão geral
Saiba mais sobre os provedores de criptografia em execução do sistema de gerenciamento de chaves (KMS).
Motivos para usar um sistema de gerenciamento de chaves remotas
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 provedores de KMS , seu KMS criptografa e descriptografa remotamente sua chave de criptografia de dados, garantindo que sua Chave Mestre do cliente nunca seja exposta à sua Queryable Encryption ou aplicação habilitado para CSFLE:
KMS do Amazon Web Services
Azure Key Vault
KMS do Google Cloud
Principais tarefas do sistema de gerenciamento
Na criptografia em execução, 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 chaves de encriptação de dados, consulte Chaves de encriptação e cofres de chaves .
Crie e armazene sua chave mestra do cliente
Para criar uma chave mestra do cliente, configure seu Sistema de Gerenciamento de Chaves para gerar sua chave mestra do cliente da seguinte maneira:
Para exibir um tutorial que demonstra como criar e armazenar uma CMK no KMS de sua preferência, consulte o Tutorial de criptografia automática do Queryable Encryption ou o Tutorial de criptografia automática do CSFLE.
Criar e criptografar uma chave de encriptação de dados
Para criar um diretório de dados:
Instancie uma instância
ClientEncryption
em seu aplicação habilitado para Queryable Encryption ou CSFLE :Forneça um objeto
kmsProviders
que especifique as credenciais que seu aplicativo usa para se autenticar com seu provedor KMS .
Crie uma Chave de criptografia de dados com o método
CreateDataKey
do objetoClientEncryption
em seu aplicativo.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.
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 de cliente habilitado para criptografia em execução
Estrutura de
kmsProviders
objetosEstrutura de
dataKeyOpts
objetos
Tanto a Queryable Encryption quanto o CSFLE são compatíveis com os seguintes provedores do Key Management System:
KMS do Amazon Web Services
Esta seção fornece informações relacionadas ao uso Amazon Web Services KMS em Queryable Encryption CSFLE seu aplicação habilitado para ou .
Para visualizar um tutorial que demonstra como usar o Amazon Web Services KMS em seu aplicativo, consulte Visão geral: Habilitar Queryable Encryption ou Usar criptografia automática em nível de campo do lado do cliente com o Amazon Web Services.
Arquitetura
O diagrama a seguir descreve a arquitetura de uma aplicação habilitada para Queryable Encryption usando o Amazon Web Services 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.
Objeto kmsProviders
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. |
Session Token | No | Sim | Contém um token obtido do AWS Security Token Service (STS). |
Objeto de Realm DataKeyOpts
A tabela a seguir apresenta a estrutura de um objeto dataKeyOpts
para o AWS KMS:
Campo | Obrigatório | Descrição |
---|---|---|
chave | Sim | Amazon Resource Number (ARN) da chave mestre. |
região | No | Região AWS de sua chave mestra, por exemplo. "us-west-2"; necessário somente se não for especificado em seu ARN. |
endpoint | No | Nome de host personalizado para o endpoint AWS, se configurado para sua conta. |
Azure Key Vault
Esta seção fornece informações relacionadas ao uso do Azure Key Vault em seu aplicativo habilitado para Queryable Encryption ou CSFLE.
Para ver um tutorial demonstrando como usar o Azure Key Vault em seu aplicativo, consulte Visão geral: Habilitar a Queryable Encryption ou Usar criptografia automática em nível de campo do lado do cliente com o Azure.
Arquitetura
O diagrama a seguir descreve a arquitetura de um aplicativo habilitado para Queryable Encryption usando o Azure Key Vault.
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.
Objeto kmsProviders
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 | No | 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. |
Objeto de Realm DataKeyOpts
A tabela a seguir mostra a estrutura de um objeto de Realm dataKeyOpts
para o Azure Key Vault:
Campo | Obrigatório | Descrição |
---|---|---|
keyName | 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.
KMS do Google Cloud Platform
Esta seção fornece informações relacionadas ao uso do Google Cloud Platform gerenciamento de chaves do em Queryable Encryption seu CSFLE aplicação habilitado para ou .
Para exibir um tutorial que demonstra como usar o GCP KMS em seu aplicação, consulte Visão geral: Habilitar a Queryable Encryption ou Usar criptografia automática em nível de campo do lado do cliente com GCP.
Arquitetura
O diagrama a seguir descreve a arquitetura de um aplicativo habilitado para Queryable Encryption usando o GCP 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.
Objeto kmsProviders
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 | Identifies your service account private key in either
base64 string or
Binary subtype 0
format without the prefix and suffix markers. Suppose your service account private key value is as follows:
The value you would specify for this field is:
If you have a user-key.json credential file, you can extract
the string by executing the following command in a bash or
similar shell. The following command requires that you install
OpenSSL
:
| |||
endpoint | No | Especifica um nome de host e número de porta para o servidor de autenticação. O padrão é oauth2.googleapis.com. |
Objeto de Realm DataKeyOpts
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. |
keyName | Sim | Identificador para a chave mestre simétrica. |
keyVersion | No | Especifica a versão da chave nomeada. Se não for especificada, a versão padrão da chave será usada. |
endpoint | No | Especifica o host e a porta opcional do Cloud KMS. O padrão é cloudkms.googleapis.com . |
KMIP
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 ou CSFLE.
Para saber como configurar o KMIP com o HashiCorp Vault, consulte a postagem do blog How to Set Up HashiCorp Vault KMIP Secrets Engine with MongoDB CSFLE or Queryable Encryption .
Arquitetura
O diagrama a seguir descreve a arquitetura de um aplicativo habilitado para Queryable Encryption usando um provedor de chaves compatível com KMIP .
Importante
O cliente acessa a chave mestre do cliente
Quando o aplicação habilitado para Queryable Encryption usa um provedor de chaves compatível com KMIPsem especificar a opção delegated
, o aplicação acessa diretamente a chave mestra do cliente. Para evitar acessar diretamente o CMK, você pode definir a opção delegated
como true
em seu objeto dataKeyOpts .
Objeto kmsProviders
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. |
Objeto de Realm DataKeyOpts
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 |
---|---|---|
keyId | No | O Se você não especificar o campo |
endpoint | Sim | O URI do seu provedor de chave compatível com KMIP. |
delegado | No | Defina essa opção como Se você não definir a opção IMPORTANTE: A opção |
Provedor de chaves local
Esta seção fornece informações relacionadas ao uso de um provedor de chave local em seu aplicação habilitado para Queryable Encryption ou CSFLE.
Aviso
Proteja seu arquivo de chave local em produção
Recomendamos armazenar as chaves mestras do cliente em um sistema de gerenciamento de chaves remoto (KMS ). Para saber como usar um KMS remoto na implementação do Queryable Encryption , consulte o guia Tutoriais .
Se você optar por usar um provedor de chaves local em produção, tenha muito cuidado e não o armazene no sistema de arquivos. Considere injetar a chave em seu aplicação cliente usando um processo secundário ou use outra abordagem que mantenha a chave segura.
Para visualizar um tutorial que demonstra como usar um provedor de chave local para testar a Queryable Encryption, consulte o Início Rápido da Queryable Encryption ou o Início Rápido do CSFLE.
Arquitetura
Quando você usa um provedor de chave local para teste, seu aplicação recupera sua chave mestre de cliente do computador em que é executado. Para usar um provedor de chave local em produção, use uma abordagem que não armazene a chave no sistema de arquivos. Por exemplo, você pode injetar a chave no processo do cliente por meio de um sidecar.
O diagrama a seguir descreve a arquitetura de um aplicação habilitado para Queryable Encryption usando um provedor de chaves local.
Objeto kmsProviders
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. |
Objeto de Realm DataKeyOpts
Ao usar um provedor de chave local, você especifica a chave mestra do cliente por meio do objeto kmsProviders
.