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

Gerenciar chaves de criptografia de dados

Nesta página

  • Criar uma chave de criptografia de dados
  • Gerenciar o nome alternativo de uma Data Encryption Key (DEK)
  • Remover uma chave de criptografia de dados
  • Recuperar uma chave de criptografia de dados existente

Novidades na versão 4.2.

A criptografia no nível do campo no lado do cliente usa chaves de criptografia de dados para criptografia e descriptografia. O método mongosh assistente getKeyVault() retorna um objeto do cofre de chaves para criar, modificar e excluir chaves de criptografia de dados.

Esta página documenta a criptografia no nível do campo do lado do cliente usando mongosh e não se refere a nenhum driver oficial compatível com o MongoDB 4.2+. Consulte a documentação relevante para obter métodos e sintaxe de gerenciamento de chave de criptografia de dados específicas do driver.

O procedimento a seguir usa mongosh para criar uma chave de criptografia de dados para usar com criptografia e descriptografia em nível de campo no lado do cliente. Para obter orientação sobre o gerenciamento de chaves de criptografia de dados usando um driver compatível com 4.2+, consulte a documentação do driver .

Use as guias abaixo para selecionar oKMS apropriado para seu sistema:

1

A configuração da criptografia em nível de campo do lado do cliente para o AWS KMS requer um ID de chave de acesso da AWS e sua chave de acesso secreta associada. A chave de acesso da AWS deve corresponder a um usuário do IAM com todas as permissões de lista e leitura para o serviço KMS.

Para mitigar o risco dessas credenciais vazarem para os logs, o procedimento a seguir passa os valores para mongosh usando variáveis de ambiente.

Primeiro, certifique-se de ter configurado as seguintes variáveis de ambiente de acordo com a documentação da sua plataforma:

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

Em seguida, crie mongosh sessão usando as opções --eval, --shell e --nodb :

mongosh --eval "
var AWS_ACCESS_KEY_ID = '$AWS_ACCESS_KEY_ID'
var AWS_SECRET_ACCESS_KEY = '$AWS_SECRET_ACCESS_KEY'
" \
--shell --nodb

Este exemplo abre o mongosh sem uma conexão com um banco de banco de dados MongoDB . A opção --eval define as variáveis AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY em mongosh para o valor das variáveis de ambiente correspondentes. As variáveis especificadas também são suportadas pelo Amazon Web Services CLI.

2

Em mongosh, crie uma nova variável ClientSideFieldLevelEncryptionOptions para armazenar o documento de configuração de criptografia no nível do campo do lado do cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"aws" : {
"accessKeyId" : AWS_ACCESS_KEY_ID,
"secretAccessKey" : AWS_SECRET_ACCESS_KEY
}
}
}
3

Em mongosh, use o construtor Mongo() para estabelecer uma conexão de banco de dados de dados com o cluster de destino. Especifique o documento ClientSideFieldLevelEncryptionOptions como o segundo parâmetro para o construtor Mongo() para configurar a conexão para criptografia de nível de campo do lado do cliente :

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Substitua o URI do replaceMe.example.net pela string de conexão para o agrupamento de destino.

Use o objeto csfleDatabaseConnection para acessar os métodos de shell de criptografia de nível de campo do lado do cliente .

Para obter a documentação completa sobre o estabelecimento de conexões de banco de dados de dados configuradas para criptografia em nível de campo do lado do cliente , consulte a referência do construtor Mongo() .

4

Use o método getKeyVault() no objeto de conexão do banco de dados de dados csfleDatabaseConnection para criar o objeto keyVault :

keyVault = csfleDatabaseConnection.getKeyVault();

Importante

A criptografia no nível do campo no lado do cliente depende da singularidade imposta pelo servidor dos principais nomes alternativos. getKeyVault() cria um índice único em keyAltNames se não existir. Não elimine o índice único criado por getKeyVault().

5

Use o método KeyVault.createKey() no objeto keyVault para criar uma nova chave de encriptação de dados no cofre de chaves:

keyVault.createKey(
"aws",
"arn:aws:kms:region:account:key/keystring",
[ "keyAlternateName" ]
)

Onde:

  • O primeiro parâmetro deve ser "aws" para especificar o Amazon Web Services KMS configurado.

  • O segundo parâmetro deve ser o nome completo do recurso da Amazon (ARN) da chave mestra do cliente (CMK). O MongoDB usa a CMK especificada para criptografar a chave de encriptação de dados.

  • O terceiro parâmetro pode ser uma array de um ou mais keyAltNames para a chave de criptografia de dados. Cada nome alternativo de chave deve ser exclusivo. getKeyVault() cria um índice único em keyAltNames para impor uma exclusividade no campo se ainda não existir um. Os principais nomes alternativos facilitam a localização da chave de criptografia de dados.

Se for bem-sucedido, createKey() retornará o UUID da nova chave de criptografia de dados. O UUID é um objeto BSON Binary (BinData) com subtipo 4 que identifica exclusivamente a chave de criptografia de dados. A string UUID é a representação hexadecimal dos dados binários subjacentes.

Se você estiver fornecendo a chave de criptografia de dados para um driver oficial do MongoDB para configurar a criptografia automática em nível de campo do lado do cliente , deverá usar a base64 representação da UUID string .

Você pode executar a seguinte operação em mongosh para converter uma string hexadecimal UUID em sua representação base64 :

UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()

Forneça a UUID de sua própria chave de criptografia de dados para esse comando, conforme retornado das createKey() acima, ou conforme descrito em Recuperar uma chave de criptografia de dados existente .

1

A configuração da criptografia em nível de campo do lado do cliente para o Azure Key Vault requer um ID de locatário, um ID de cliente e um segredo de cliente válidos.

Para mitigar o risco dessas credenciais vazarem para os logs, o procedimento a seguir passa os valores para mongosh usando variáveis de ambiente.

Primeiro, certifique-se de ter configurado as seguintes variáveis de ambiente de acordo com a documentação da sua plataforma:

  • AZURE_TENANT_ID

  • AZURE_CLIENT_ID

  • AZURE_CLIENT_SECRET

Em seguida, crie uma sessão mongosh usando as opções --eval, --shell e --nodb :

mongosh --eval "
var AZURE_TENANT_ID = '$AZURE_TENANT_ID'
var AZURE_CLIENT_ID = '$AZURE_CLIENT_ID'
var AZURE_CLIENT_SECRET = '$AZURE_CLIENT_SECRET'
" \
--shell --nodb

Este exemplo abre o mongosh sem uma conexão com um banco de banco de dados MongoDB . A opção --eval define as variáveis AZURE_TENANT_ID, e AZURE_CLIENT_ID, e AZURE_CLIENT_SECRET em mongosh para o valor das variáveis de ambiente correspondentes.

2

Em mongosh, crie uma nova variável ClientSideFieldLevelEncryptionOptions para armazenar o documento de configuração de criptografia no nível do campo do lado do cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"azure" : {
"tenantId" : AZURE_TENANT_ID,
"clientId" : AZURE_CLIENT_ID,
"clientSecret" : AZURE_CLIENT_SECRET
}
}
}
3

Em mongosh, use o construtor Mongo() para estabelecer uma conexão de banco de dados de dados com o cluster de destino. Especifique o documento ClientSideFieldLevelEncryptionOptions como o segundo parâmetro para o construtor Mongo() para configurar a conexão para criptografia de nível de campo do lado do cliente :

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Substitua o URI do replaceMe.example.net pela string de conexão para o agrupamento de destino.

Use o objeto csfleDatabaseConnection para acessar os métodos de shell de criptografia de nível de campo do lado do cliente .

Para obter a documentação completa sobre o estabelecimento de conexões de banco de dados de dados configuradas para criptografia em nível de campo do lado do cliente , consulte a referência do construtor Mongo() .

4

Use o método getKeyVault() no objeto de conexão do banco de dados de dados csfleDatabaseConnection para criar o objeto keyVault :

keyVault = csfleDatabaseConnection.getKeyVault();

Importante

A criptografia no nível do campo no lado do cliente depende da singularidade imposta pelo servidor dos principais nomes alternativos. getKeyVault() cria um índice único em keyAltNames se não existir. Não elimine o índice único criado por getKeyVault().

5

Use o método KeyVault.createKey() no objeto keyVault para criar uma nova chave de encriptação de dados no cofre de chaves:

keyVault.createKey(
"azure",
{ keyName: "keyvaultname", keyVaultEndpoint: "endpointname" },
[ "keyAlternateName" ]
)

Onde:

  • O primeiro parâmetro deve ser "azure" para especificar o Azure Key Vault configurado.

  • O segundo parâmetro deve ser um documento contendo:

    • o nome do seu Azure Key Vault

    • o nome DNS do Azure Key Vault a ser usado (por exemplo my-key-vault.vault.azure.net)

  • O terceiro parâmetro pode ser uma array de um ou mais keyAltNames para a chave de criptografia de dados. Cada nome alternativo de chave deve ser exclusivo. getKeyVault() cria um índice único em keyAltNames para impor uma exclusividade no campo se ainda não existir um. Os principais nomes alternativos facilitam a localização da chave de criptografia de dados.

Se for bem-sucedido, createKey() retornará o UUID da nova chave de criptografia de dados. O UUID é um objeto BSON Binary (BinData) com subtipo 4 que identifica exclusivamente a chave de criptografia de dados. A string UUID é a representação hexadecimal dos dados binários subjacentes.

Se você estiver fornecendo a chave de criptografia de dados para um driver oficial do MongoDB para configurar a criptografia automática em nível de campo do lado do cliente , deverá usar a base64 representação da UUID string .

Você pode executar a seguinte operação em mongosh para converter uma string hexadecimal UUID em sua representação base64 :

UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()

Forneça a UUID de sua própria chave de criptografia de dados para esse comando, conforme retornado das createKey() acima, ou conforme descrito em Recuperar uma chave de criptografia de dados existente .

1

A configuração da criptografia no nível do campo do lado do cliente para o GCP KMS requer seu e-mail do GCP e sua chave privada associada.

Para mitigar o risco dessas credenciais vazarem para os logs, o procedimento a seguir passa os valores para mongosh usando variáveis de ambiente.

Primeiro, certifique-se de ter configurado as seguintes variáveis de ambiente de acordo com a documentação da sua plataforma:

  • GCP_EMAIL

  • GCP_PRIVATEKEY

Em seguida, crie uma sessão mongosh usando as opções --eval, --shell e --nodb :

mongosh --eval "
var GCP_EMAIL = '$GCP_EMAIL'
var GCP_PRIVATEKEY = '$GCP_PRIVATEKEY'
" \
--shell --nodb

Este exemplo abre o mongosh sem uma conexão com um banco de banco de dados MongoDB . A opção --eval define as variáveis GCP_EMAIL e GCP_PRIVATEKEY em mongosh para o valor das variáveis de ambiente correspondentes.

2

Em mongosh, crie uma nova variável ClientSideFieldLevelEncryptionOptions para armazenar o documento de configuração de criptografia no nível do campo do lado do cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"gcp" : {
"email" : GCP_EMAIL,
"privateKey" : GCP_PRIVATEKEY
}
}
}
3

Em mongosh, use o construtor Mongo() para estabelecer uma conexão de banco de dados de dados com o cluster de destino. Especifique o documento ClientSideFieldLevelEncryptionOptions como o segundo parâmetro para o construtor Mongo() para configurar a conexão para criptografia de nível de campo do lado do cliente :

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Substitua o URI do replaceMe.example.net pela string de conexão para o agrupamento de destino.

Use o objeto csfleDatabaseConnection para acessar os métodos de shell de criptografia de nível de campo do lado do cliente .

Para obter a documentação completa sobre o estabelecimento de conexões de banco de dados de dados configuradas para criptografia em nível de campo do lado do cliente , consulte a referência do construtor Mongo() .

4

Use o método getKeyVault() no objeto de conexão do banco de dados de dados csfleDatabaseConnection para criar o objeto keyVault :

keyVault = csfleDatabaseConnection.getKeyVault();

Importante

A criptografia no nível do campo no lado do cliente depende da singularidade imposta pelo servidor dos principais nomes alternativos. getKeyVault() cria um índice único em keyAltNames se não existir. Não elimine o índice único criado por getKeyVault().

5

Use o método KeyVault.createKey() no objeto keyVault para criar uma nova chave de encriptação de dados no cofre de chaves:

keyVault.createKey(
"gcp",
{
projectId: "projectid",
location: "locationname",
keyRing: "keyringname",
keyName: "keyname"
},
[ "keyAlternateName" ]
)

Onde:

  • O primeiro parâmetro deve ser "gcp" para especificar o Google Cloud Platform KMS configurado.

  • O segundo parâmetro deve ser um documento contendo

    • projectid é o nome do seu projeto GCP, como my-project

    • locationname é a localização do chaveiro KMS, como global

    • keyringname é o nome do chaveiro KMS, como my-keyring

    • keyname é o nome da sua chave.

  • O terceiro parâmetro pode ser uma array de um ou mais keyAltNames para a chave de criptografia de dados. Cada nome alternativo de chave deve ser exclusivo. getKeyVault() cria um índice único em keyAltNames para impor uma exclusividade no campo se ainda não existir um. Os principais nomes alternativos facilitam a localização da chave de criptografia de dados.

Se for bem-sucedido, createKey() retornará o UUID da nova chave de criptografia de dados. O UUID é um objeto BSON Binary (BinData) com subtipo 4 que identifica exclusivamente a chave de criptografia de dados. A string UUID é a representação hexadecimal dos dados binários subjacentes.

Se você estiver fornecendo a chave de criptografia de dados para um driver oficial do MongoDB para configurar a criptografia automática em nível de campo do lado do cliente , deverá usar a base64 representação da UUID string .

Você pode executar a seguinte operação em mongosh para converter uma string hexadecimal UUID em sua representação base64 :

UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()

Forneça a UUID de sua própria chave de criptografia de dados para esse comando, conforme retornado das createKey() acima, ou conforme descrito em Recuperar uma chave de criptografia de dados existente .

1

Configurar a criptografia de nível de campo do lado do cliente para uma chave gerenciada localmente requer a especificação de uma de64 96bytes de base codificada string sem quebras de linha.

Para mitigar o risco dessas credenciais vazarem para os logs, o procedimento a seguir passa os valores para mongosh usando variáveis de ambiente.

A seguinte operação gera uma chave que atende aos requisitos definidos e a adiciona ao ~/.profile do usuário. Se a chave DEV_LOCAL_KEY já existir, pule esta operação.

echo "export DEV_LOCAL_KEY=\"$(head -c 96 /dev/urandom | base64 | tr -d '\n')\"" >> ~/.profile

O sistema operacional do host pode exigir logout e login novamente para atualizar as variáveis de ambiente carregadas. Alternativamente, você pode utilizar o comando source ~/.profile para atualizar manualmente a shell.

Observação

Seu sistema operacional ou shell de host específico pode ter procedimentos diferentes para definir variáveis de ambiente persistentes. Consulte a documentação do sistema operacional ou do shell do host para obter um procedimento mais específico, conforme apropriado.

2

Crie uma sessão do mongosh utilizando as opções --eval, --shell e --nodb :

mongosh --eval "var LOCAL_KEY = '$DEV_LOCAL_KEY' " \
--shell --nodb

O exemplo abre automaticamente mongosh sem uma conexão com um banco de banco de dados MongoDB . A opção --eval define a variável LOCAL_KEY em mongosh para o valor da variável de ambiente correspondente.

3

Em mongosh, crie uma nova variável ClientSideFieldLevelEncryptionOptions para armazenar o documento de configuração de criptografia no nível do campo do lado do cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"local" : {
"key" : BinData(0, LOCAL_KEY)
}
}
}
4

Em mongosh, use o construtor Mongo() para estabelecer uma conexão de banco de dados de dados com o cluster de destino. Especifique o documento ClientSideFieldLevelEncryptionOptions como o segundo parâmetro para o construtor Mongo() para configurar a conexão para criptografia de nível de campo do lado do cliente :

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Substitua o URI do replaceMe.example.net pela string de conexão para o agrupamento de destino.

Use o objeto csfleDatabaseConnection para acessar os métodos de shell de criptografia de nível de campo do lado do cliente .

Para obter a documentação completa sobre o estabelecimento de conexões de banco de dados de dados configuradas para criptografia em nível de campo do lado do cliente , consulte a referência do construtor Mongo() .

5

Use o método getKeyVault() no objeto de conexão do banco de dados de dados csfleDatabaseConnection para criar o objeto keyVault :

keyVault = csfleDatabaseConnection.getKeyVault();

Importante

A criptografia no nível do campo no lado do cliente depende da singularidade imposta pelo servidor dos principais nomes alternativos. getKeyVault() cria um índice único em keyAltNames se não existir. Não elimine o índice único criado por getKeyVault().

6

Use o método KeyVault.createKey() no objeto keyVault para criar uma nova chave de encriptação de dados no cofre de chaves:

keyVault.createKey(
"local",
[ "keyAlternateName" ]
)

Onde:

  • O primeiro parâmetro deve ser local para especificar a chave gerenciada localmente configurada.

  • O segundo parâmetro pode ser uma array de um ou mais keyAltNames para a chave de criptografia de dados. Cada nome alternativo de chave deve ser exclusivo. getKeyVault() cria um índice único em keyAltNames para impor uma exclusividade no campo, caso ainda não exista uma. Os principais nomes alternativos facilitam a localização da chave de criptografia de dados.

Se for bem-sucedido, createKey() retornará o UUID da nova chave de criptografia de dados. O UUID é um objeto BSON Binary (BinData) com subtipo 4 que identifica exclusivamente a chave de criptografia de dados. A string UUID é a representação hexadecimal dos dados binários subjacentes.

Se você estiver fornecendo a chave de criptografia de dados para um driver oficial do MongoDB para configurar a criptografia automática em nível de campo do lado do cliente , deverá usar a base64 representação da UUID string .

Você pode executar a seguinte operação em mongosh para converter uma string hexadecimal UUID em sua representação base64 :

UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()

Forneça a UUID de sua própria chave de criptografia de dados para esse comando, conforme retornado das createKey() acima, ou conforme descrito em Recuperar uma chave de criptografia de dados existente .

O procedimento a seguir usa mongosh para gerenciar os nomes alternativos de uma chave de criptografia de dados. Para obter orientação sobre o gerenciamento de chaves de criptografia de dados usando um driver compatível com 4.2+, consulte a documentação do driver .

Se você ainda estiver na sessão mongosh configurada nas etapas de Criar uma Chave de criptografia de dados acima, poderá pular diretamente para a etapa 5.

Use as guias abaixo para selecionar o KMS apropriado para sua implantação:

1

A configuração da criptografia em nível de campo do lado do cliente para o AWS KMS requer um ID de chave de acesso da AWS e sua chave de acesso secreta associada. A chave de acesso da AWS deve corresponder a um usuário do IAM com todas as permissões de lista e leitura para o serviço KMS.

Para mitigar o risco dessas credenciais vazarem para os logs, o procedimento a seguir passa os valores para mongosh usando variáveis de ambiente.

Primeiro, certifique-se de ter configurado as seguintes variáveis de ambiente de acordo com a documentação da sua plataforma:

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

Em seguida, crie mongosh sessão usando as opções --eval, --shell e --nodb :

mongosh --eval "
var AWS_ACCESS_KEY_ID = '$AWS_ACCESS_KEY_ID'
var AWS_SECRET_ACCESS_KEY = '$AWS_SECRET_ACCESS_KEY'
" \
--shell --nodb

Este exemplo abre o mongosh sem uma conexão com um banco de banco de dados MongoDB . A opção --eval define as variáveis AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY em mongosh para o valor das variáveis de ambiente correspondentes. As variáveis especificadas também são suportadas pelo Amazon Web Services CLI.

2

Em mongosh, crie uma nova variável ClientSideFieldLevelEncryptionOptions para armazenar o documento de configuração de criptografia no nível do campo do lado do cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"aws" : {
"accessKeyId" : AWS_ACCESS_KEY_ID,
"secretAccessKey" : AWS_SECRET_ACCESS_KEY
}
}
}
3

Em mongosh, use o construtor Mongo() para estabelecer uma conexão de banco de dados de dados com o cluster de destino. Especifique o documento ClientSideFieldLevelEncryptionOptions como o segundo parâmetro para o construtor Mongo() para configurar a conexão para criptografia de nível de campo do lado do cliente :

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Substitua o URI do replaceMe.example.net pela string de conexão para o agrupamento de destino.

Use o objeto csfleDatabaseConnection para acessar os métodos de shell de criptografia de nível de campo do lado do cliente .

Para obter a documentação completa sobre o estabelecimento de conexões de banco de dados de dados configuradas para criptografia em nível de campo do lado do cliente , consulte a referência do construtor Mongo() .

4

Use o método getKeyVault() no objeto de conexão do banco de dados de dados csfleDatabaseConnection para criar o objeto keyVault :

keyVault = csfleDatabaseConnection.getKeyVault();

Importante

A criptografia no nível do campo no lado do cliente depende da singularidade imposta pelo servidor dos principais nomes alternativos. getKeyVault() cria um índice único em keyAltNames se não existir. Não elimine o índice único criado por getKeyVault().

5

Use as etapas abaixo para adicionar ou remover um nome alternativo de chave existente.

Adicionar nome alternativo da chave

Importante

A criptografia no nível do campo no lado do cliente depende da singularidade imposta pelo servidor dos principais nomes alternativos. Valide que existe um índice único em keyAltNames antes de adicionar um novo nome alternativo de chave. Se o índice único foi descartado, você deverá recriá- lo antes de adicionar quaisquer nomes alternativos principais.

Use o KeyVault.addKeyAlternateName() para adicionar um novo nome alternativo a uma chave de criptografia de dados :

keyVault.addKeyAlternateName(
UUID("<Replace Me With The UUID Of The Key To Modify"),
"NewKeyAltNameForMyFirstCSFLEDataKey"
)

Onde:

  • O primeiro parâmetro deve ser o UUID da chave de criptografia de dados a ser modificada.

  • O segundo parâmetro deve ser uma string única. getKeyVault() cria um índice único em keyAltNames para impor a exclusividade dos principais nomes alternativos.

KeyVault.addKeyAlternateName() retorna o documento de chave de criptografia de dados antes da modificação. Use KeyVault.getKey() para recuperar a chave de criptografia de dados modificada.

Remover nome alternativo da chave

Use o KeyVault.removeKeyAlternateName() para remover um nome alternativo de chave de uma chave de criptografia de dados:

keyVault.removeKeyAlternateName(
UUID("<Replace Me With The UUID Of The Key To Modify"),
"NewKeyAltNameForMyFirstCSFLEDataKey"
)

Onde:

  • O primeiro parâmetro deve ser o UUID da chave de criptografia de dados a ser modificada.

  • O segundo parâmetro deve ser um nome alternativo da chave de string.

KeyVault.removeKeyAlternateName() retorna a chave de criptografia de dados antes da modificação. Use KeyVault.getKey() para recuperar a chave de criptografia de dados modificada.

1

A configuração da criptografia em nível de campo do lado do cliente para o Azure Key Vault requer um ID de locatário, um ID de cliente e um segredo de cliente válidos.

Para mitigar o risco dessas credenciais vazarem para os logs, o procedimento a seguir passa os valores para mongosh usando variáveis de ambiente.

Primeiro, certifique-se de ter configurado as seguintes variáveis de ambiente de acordo com a documentação da sua plataforma:

  • AZURE_TENANT_ID

  • AZURE_CLIENT_ID

  • AZURE_CLIENT_SECRET

Em seguida, crie uma sessão mongosh usando as opções --eval, --shell e --nodb :

mongosh --eval "
var AZURE_TENANT_ID = '$AZURE_TENANT_ID'
var AZURE_CLIENT_ID = '$AZURE_CLIENT_ID'
var AZURE_CLIENT_SECRET = '$AZURE_CLIENT_SECRET'
" \
--shell --nodb

Este exemplo abre o mongosh sem uma conexão com um banco de banco de dados MongoDB . A opção --eval define as variáveis AZURE_TENANT_ID, e AZURE_CLIENT_ID, e AZURE_CLIENT_SECRET em mongosh para o valor das variáveis de ambiente correspondentes.

2

Em mongosh, crie uma nova variável ClientSideFieldLevelEncryptionOptions para armazenar o documento de configuração de criptografia no nível do campo do lado do cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"azure" : {
"tenantId" : AZURE_TENANT_ID,
"clientId" : AZURE_CLIENT_ID,
"clientSecret" : AZURE_CLIENT_SECRET
}
}
}
3

Em mongosh, use o construtor Mongo() para estabelecer uma conexão de banco de dados de dados com o cluster de destino. Especifique o documento ClientSideFieldLevelEncryptionOptions como o segundo parâmetro para o construtor Mongo() para configurar a conexão para criptografia de nível de campo do lado do cliente :

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Substitua o URI do replaceMe.example.net pela string de conexão para o agrupamento de destino.

Use o objeto csfleDatabaseConnection para acessar os métodos de shell de criptografia de nível de campo do lado do cliente .

Para obter a documentação completa sobre o estabelecimento de conexões de banco de dados de dados configuradas para criptografia em nível de campo do lado do cliente , consulte a referência do construtor Mongo() .

4

Use o método getKeyVault() no objeto de conexão do banco de dados de dados csfleDatabaseConnection para criar o objeto keyVault :

keyVault = csfleDatabaseConnection.getKeyVault();

Importante

A criptografia no nível do campo no lado do cliente depende da singularidade imposta pelo servidor dos principais nomes alternativos. getKeyVault() cria um índice único em keyAltNames se não existir. Não elimine o índice único criado por getKeyVault().

5

Use as etapas abaixo para adicionar ou remover um nome alternativo de chave existente.

Adicionar nome alternativo da chave

Importante

A criptografia no nível do campo no lado do cliente depende da singularidade imposta pelo servidor dos principais nomes alternativos. Valide que existe um índice único em keyAltNames antes de adicionar um novo nome alternativo de chave. Se o índice único foi descartado, você deverá recriá- lo antes de adicionar quaisquer nomes alternativos principais.

Use o KeyVault.addKeyAlternateName() para adicionar um novo nome alternativo a uma chave de criptografia de dados :

keyVault.addKeyAlternateName(
UUID("<Replace Me With The UUID Of The Key To Modify"),
"NewKeyAltNameForMyFirstCSFLEDataKey"
)

Onde:

  • O primeiro parâmetro deve ser o UUID da chave de criptografia de dados a ser modificada.

  • O segundo parâmetro deve ser uma string única. getKeyVault() cria um índice único em keyAltNames para impor a exclusividade dos principais nomes alternativos.

KeyVault.addKeyAlternateName() retorna o documento de chave de criptografia de dados antes da modificação. Use KeyVault.getKey() para recuperar a chave de criptografia de dados modificada.

Remover nome alternativo da chave

Use o KeyVault.removeKeyAlternateName() para remover um nome alternativo de chave de uma chave de criptografia de dados:

keyVault.removeKeyAlternateName(
UUID("<Replace Me With The UUID Of The Key To Modify"),
"NewKeyAltNameForMyFirstCSFLEDataKey"
)

Onde:

  • O primeiro parâmetro deve ser o UUID da chave de criptografia de dados a ser modificada.

  • O segundo parâmetro deve ser um nome alternativo da chave de string.

KeyVault.removeKeyAlternateName() retorna a chave de criptografia de dados antes da modificação. Use KeyVault.getKey() para recuperar a chave de criptografia de dados modificada.

1

A configuração da criptografia no nível do campo do lado do cliente para o GCP KMS requer seu e-mail do GCP e sua chave privada associada.

Para mitigar o risco dessas credenciais vazarem para os logs, o procedimento a seguir passa os valores para mongosh usando variáveis de ambiente.

Primeiro, certifique-se de ter configurado as seguintes variáveis de ambiente de acordo com a documentação da sua plataforma:

  • GCP_EMAIL

  • GCP_PRIVATEKEY

Em seguida, crie uma sessão mongosh usando as opções --eval, --shell e --nodb :

mongosh --eval "
var GCP_EMAIL = '$GCP_EMAIL'
var GCP_PRIVATEKEY = '$GCP_PRIVATEKEY'
" \
--shell --nodb

Este exemplo abre o mongosh sem uma conexão com um banco de banco de dados MongoDB . A opção --eval define as variáveis GCP_EMAIL e GCP_PRIVATEKEY em mongosh para o valor das variáveis de ambiente correspondentes.

2

Em mongosh, crie uma nova variável ClientSideFieldLevelEncryptionOptions para armazenar o documento de configuração de criptografia no nível do campo do lado do cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"gcp" : {
"email" : GCP_EMAIL,
"privateKey" : GCP_PRIVATEKEY
}
}
}
3

Em mongosh, use o construtor Mongo() para estabelecer uma conexão de banco de dados de dados com o cluster de destino. Especifique o documento ClientSideFieldLevelEncryptionOptions como o segundo parâmetro para o construtor Mongo() para configurar a conexão para criptografia de nível de campo do lado do cliente :

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Substitua o URI do replaceMe.example.net pela string de conexão para o agrupamento de destino.

Use o objeto csfleDatabaseConnection para acessar os métodos de shell de criptografia de nível de campo do lado do cliente .

Para obter a documentação completa sobre o estabelecimento de conexões de banco de dados de dados configuradas para criptografia em nível de campo do lado do cliente , consulte a referência do construtor Mongo() .

4

Use o método getKeyVault() no objeto de conexão do banco de dados de dados csfleDatabaseConnection para criar o objeto keyVault :

keyVault = csfleDatabaseConnection.getKeyVault();

Importante

A criptografia no nível do campo no lado do cliente depende da singularidade imposta pelo servidor dos principais nomes alternativos. getKeyVault() cria um índice único em keyAltNames se não existir. Não elimine o índice único criado por getKeyVault().

5

Use as etapas abaixo para adicionar ou remover um nome alternativo de chave existente.

Adicionar nome alternativo da chave

Importante

A criptografia no nível do campo no lado do cliente depende da singularidade imposta pelo servidor dos principais nomes alternativos. Valide que existe um índice único em keyAltNames antes de adicionar um novo nome alternativo de chave. Se o índice único foi descartado, você deverá recriá- lo antes de adicionar quaisquer nomes alternativos principais.

Use o KeyVault.addKeyAlternateName() para adicionar um novo nome alternativo a uma chave de criptografia de dados :

keyVault.addKeyAlternateName(
UUID("<Replace Me With The UUID Of The Key To Modify"),
"NewKeyAltNameForMyFirstCSFLEDataKey"
)

Onde:

  • O primeiro parâmetro deve ser o UUID da chave de criptografia de dados a ser modificada.

  • O segundo parâmetro deve ser uma string única. getKeyVault() cria um índice único em keyAltNames para impor a exclusividade dos principais nomes alternativos.

KeyVault.addKeyAlternateName() retorna o documento de chave de criptografia de dados antes da modificação. Use KeyVault.getKey() para recuperar a chave de criptografia de dados modificada.

Remover nome alternativo da chave

Use o KeyVault.removeKeyAlternateName() para remover um nome alternativo de chave de uma chave de criptografia de dados:

keyVault.removeKeyAlternateName(
UUID("<Replace Me With The UUID Of The Key To Modify"),
"NewKeyAltNameForMyFirstCSFLEDataKey"
)

Onde:

  • O primeiro parâmetro deve ser o UUID da chave de criptografia de dados a ser modificada.

  • O segundo parâmetro deve ser um nome alternativo da chave de string.

KeyVault.removeKeyAlternateName() retorna a chave de criptografia de dados antes da modificação. Use KeyVault.getKey() para recuperar a chave de criptografia de dados modificada.

1

Configurar a criptografia de nível de campo do lado do cliente para uma chave gerenciada localmente requer a especificação de uma de64 96bytes de base codificada string sem quebras de linha.

Para mitigar o risco dessas credenciais vazarem para os logs, o procedimento a seguir passa os valores para mongosh usando variáveis de ambiente.

A seguinte operação gera uma chave que atende aos requisitos definidos e a adiciona ao ~/.profile do usuário. Se a chave DEV_LOCAL_KEY já existir, pule esta operação.

echo "export DEV_LOCAL_KEY=\"$(head -c 96 /dev/urandom | base64 | tr -d '\n')\"" >> ~/.profile

O sistema operacional do host pode exigir logout e login novamente para atualizar as variáveis de ambiente carregadas. Alternativamente, você pode utilizar o comando source ~/.profile para atualizar manualmente a shell.

Observação

Seu sistema operacional ou shell de host específico pode ter procedimentos diferentes para definir variáveis de ambiente persistentes. Consulte a documentação do sistema operacional ou do shell do host para obter um procedimento mais específico, conforme apropriado.

2

Crie uma sessão do mongosh utilizando as opções --eval, --shell e --nodb :

mongosh --eval "var LOCAL_KEY = '$DEV_LOCAL_KEY' " \
--shell --nodb

O exemplo abre automaticamente mongosh sem uma conexão com um banco de banco de dados MongoDB . A opção --eval define a variável LOCAL_KEY em mongosh para o valor da variável de ambiente correspondente.

3

Em mongosh, crie uma nova variável ClientSideFieldLevelEncryptionOptions para armazenar o documento de configuração de criptografia no nível do campo do lado do cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"local" : {
"key" : BinData(0, LOCAL_KEY)
}
}
}
4

Em mongosh, use o construtor Mongo() para estabelecer uma conexão de banco de dados de dados com o cluster de destino. Especifique o documento ClientSideFieldLevelEncryptionOptions como o segundo parâmetro para o construtor Mongo() para configurar a conexão para criptografia de nível de campo do lado do cliente :

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Substitua o URI do replaceMe.example.net pela string de conexão para o agrupamento de destino.

Use o objeto csfleDatabaseConnection para acessar os métodos de shell de criptografia de nível de campo do lado do cliente .

Para obter a documentação completa sobre o estabelecimento de conexões de banco de dados de dados configuradas para criptografia em nível de campo do lado do cliente , consulte a referência do construtor Mongo() .

5

Use o método getKeyVault() no objeto de conexão do banco de dados de dados csfleDatabaseConnection para criar o objeto keyVault :

keyVault = csfleDatabaseConnection.getKeyVault();

Importante

A criptografia no nível do campo no lado do cliente depende da singularidade imposta pelo servidor dos principais nomes alternativos. getKeyVault() cria um índice único em keyAltNames se não existir. Não elimine o índice único criado por getKeyVault().

6

Use as etapas abaixo para adicionar ou remover um nome alternativo de chave existente.

Adicionar nome alternativo da chave

Importante

A criptografia no nível do campo no lado do cliente depende da singularidade imposta pelo servidor dos principais nomes alternativos. Valide que existe um índice único em keyAltNames antes de adicionar um novo nome alternativo de chave. Se o índice único foi descartado, você deverá recriá- lo antes de adicionar quaisquer nomes alternativos principais.

Use o KeyVault.addKeyAlternateName() para adicionar um novo nome alternativo a uma chave de criptografia de dados :

keyVault.addKeyAlternateName(
UUID("<Replace Me With The UUID Of The Key To Modify"),
"NewKeyAltNameForMyFirstCSFLEDataKey"
)

Onde:

  • O primeiro parâmetro deve ser o UUID da chave de criptografia de dados a ser modificada.

  • O segundo parâmetro deve ser uma string única. getKeyVault() cria um índice único em keyAltNames para impor a exclusividade dos principais nomes alternativos.

KeyVault.addKeyAlternateName() retorna o documento de chave de criptografia de dados antes da modificação. Use KeyVault.getKey() para recuperar a chave de criptografia de dados modificada.

Remover nome alternativo da chave

Use o KeyVault.removeKeyAlternateName() para remover um nome alternativo de chave de uma chave de criptografia de dados:

keyVault.removeKeyAlternateName(
UUID("<Replace Me With The UUID Of The Key To Modify"),
"NewKeyAltNameForMyFirstCSFLEDataKey"
)

Onde:

  • O primeiro parâmetro deve ser o UUID da chave de criptografia de dados a ser modificada.

  • O segundo parâmetro deve ser um nome alternativo da chave de string.

KeyVault.removeKeyAlternateName() retorna a chave de criptografia de dados antes da modificação. Use KeyVault.getKey() para recuperar a chave de criptografia de dados modificada.

Aviso

Excluir uma chave de criptografia de dados torna todos os campos criptografados usando essa chave como permanentemente ilegíveis.

O procedimento a seguir usa mongosh para remover uma chave de criptografia de dados do cofre de chaves. Para obter orientação sobre o gerenciamento de chave de criptografia de dados usando um driver compatível com 4.2+, consulte a documentação do driver .

Se você ainda estiver na sessão mongosh configurada nas etapas de Criar uma Chave de criptografia de dados acima, poderá pular diretamente para a etapa 5.

Use as guias abaixo para selecionar o KMS apropriado para sua implantação:

1

A configuração da criptografia em nível de campo do lado do cliente para o AWS KMS requer um ID de chave de acesso da AWS e sua chave de acesso secreta associada. A chave de acesso da AWS deve corresponder a um usuário do IAM com todas as permissões de lista e leitura para o serviço KMS.

Para mitigar o risco dessas credenciais vazarem para os logs, o procedimento a seguir passa os valores para mongosh usando variáveis de ambiente.

Primeiro, certifique-se de ter configurado as seguintes variáveis de ambiente de acordo com a documentação da sua plataforma:

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

Em seguida, crie mongosh sessão usando as opções --eval, --shell e --nodb :

mongosh --eval "
var AWS_ACCESS_KEY_ID = '$AWS_ACCESS_KEY_ID'
var AWS_SECRET_ACCESS_KEY = '$AWS_SECRET_ACCESS_KEY'
" \
--shell --nodb

Este exemplo abre o mongosh sem uma conexão com um banco de banco de dados MongoDB . A opção --eval define as variáveis AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY em mongosh para o valor das variáveis de ambiente correspondentes. As variáveis especificadas também são suportadas pelo Amazon Web Services CLI.

2

Em mongosh, crie uma nova variável ClientSideFieldLevelEncryptionOptions para armazenar o documento de configuração de criptografia no nível do campo do lado do cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"aws" : {
"accessKeyId" : AWS_ACCESS_KEY_ID,
"secretAccessKey" : AWS_SECRET_ACCESS_KEY
}
}
}
3

Em mongosh, use o construtor Mongo() para estabelecer uma conexão de banco de dados de dados com o cluster de destino. Especifique o documento ClientSideFieldLevelEncryptionOptions como o segundo parâmetro para o construtor Mongo() para configurar a conexão para criptografia de nível de campo do lado do cliente :

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Substitua o URI do replaceMe.example.net pela string de conexão para o agrupamento de destino.

Use o objeto csfleDatabaseConnection para acessar os métodos de shell de criptografia de nível de campo do lado do cliente .

Para obter a documentação completa sobre o estabelecimento de conexões de banco de dados de dados configuradas para criptografia em nível de campo do lado do cliente , consulte a referência do construtor Mongo() .

4

Use o método getKeyVault() no objeto de conexão do banco de dados de dados csfleDatabaseConnection para criar o objeto keyVault :

keyVault = csfleDatabaseConnection.getKeyVault();

Importante

A criptografia no nível do campo no lado do cliente depende da singularidade imposta pelo servidor dos principais nomes alternativos. getKeyVault() cria um índice único em keyAltNames se não existir. Não elimine o índice único criado por getKeyVault().

5

Use o método KeyVault.deleteKey() no objeto keyVault para excluir uma chave de dados do cofre de chaves:

keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
1

A configuração da criptografia em nível de campo do lado do cliente para o Azure Key Vault requer um ID de locatário, um ID de cliente e um segredo de cliente válidos.

Para mitigar o risco dessas credenciais vazarem para os logs, o procedimento a seguir passa os valores para mongosh usando variáveis de ambiente.

Primeiro, certifique-se de ter configurado as seguintes variáveis de ambiente de acordo com a documentação da sua plataforma:

  • AZURE_TENANT_ID

  • AZURE_CLIENT_ID

  • AZURE_CLIENT_SECRET

Em seguida, crie uma sessão mongosh usando as opções --eval, --shell e --nodb :

mongosh --eval "
var AZURE_TENANT_ID = '$AZURE_TENANT_ID'
var AZURE_CLIENT_ID = '$AZURE_CLIENT_ID'
var AZURE_CLIENT_SECRET = '$AZURE_CLIENT_SECRET'
" \
--shell --nodb

Este exemplo abre o mongosh sem uma conexão com um banco de banco de dados MongoDB . A opção --eval define as variáveis AZURE_TENANT_ID, e AZURE_CLIENT_ID, e AZURE_CLIENT_SECRET em mongosh para o valor das variáveis de ambiente correspondentes.

2

Em mongosh, crie uma nova variável ClientSideFieldLevelEncryptionOptions para armazenar o documento de configuração de criptografia no nível do campo do lado do cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"azure" : {
"tenantId" : AZURE_TENANT_ID,
"clientId" : AZURE_CLIENT_ID,
"clientSecret" : AZURE_CLIENT_SECRET
}
}
}
3

Em mongosh, use o construtor Mongo() para estabelecer uma conexão de banco de dados de dados com o cluster de destino. Especifique o documento ClientSideFieldLevelEncryptionOptions como o segundo parâmetro para o construtor Mongo() para configurar a conexão para criptografia de nível de campo do lado do cliente :

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Substitua o URI do replaceMe.example.net pela string de conexão para o agrupamento de destino.

Use o objeto csfleDatabaseConnection para acessar os métodos de shell de criptografia de nível de campo do lado do cliente .

Para obter a documentação completa sobre o estabelecimento de conexões de banco de dados de dados configuradas para criptografia em nível de campo do lado do cliente , consulte a referência do construtor Mongo() .

4

Use o método getKeyVault() no objeto de conexão do banco de dados de dados csfleDatabaseConnection para criar o objeto keyVault :

keyVault = csfleDatabaseConnection.getKeyVault();

Importante

A criptografia no nível do campo no lado do cliente depende da singularidade imposta pelo servidor dos principais nomes alternativos. getKeyVault() cria um índice único em keyAltNames se não existir. Não elimine o índice único criado por getKeyVault().

5

Use o método KeyVault.deleteKey() no objeto keyVault para excluir uma chave de dados do cofre de chaves:

keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
1

A configuração da criptografia no nível do campo do lado do cliente para o GCP KMS requer seu e-mail do GCP e sua chave privada associada.

Para mitigar o risco dessas credenciais vazarem para os logs, o procedimento a seguir passa os valores para mongosh usando variáveis de ambiente.

Primeiro, certifique-se de ter configurado as seguintes variáveis de ambiente de acordo com a documentação da sua plataforma:

  • GCP_EMAIL

  • GCP_PRIVATEKEY

Em seguida, crie uma sessão mongosh usando as opções --eval, --shell e --nodb :

mongosh --eval "
var GCP_EMAIL = '$GCP_EMAIL'
var GCP_PRIVATEKEY = '$GCP_PRIVATEKEY'
" \
--shell --nodb

Este exemplo abre o mongosh sem uma conexão com um banco de banco de dados MongoDB . A opção --eval define as variáveis GCP_EMAIL e GCP_PRIVATEKEY em mongosh para o valor das variáveis de ambiente correspondentes.

2

Em mongosh, crie uma nova variável ClientSideFieldLevelEncryptionOptions para armazenar o documento de configuração de criptografia no nível do campo do lado do cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"gcp" : {
"email" : GCP_EMAIL,
"privateKey" : GCP_PRIVATEKEY
}
}
}
3

Em mongosh, use o construtor Mongo() para estabelecer uma conexão de banco de dados de dados com o cluster de destino. Especifique o documento ClientSideFieldLevelEncryptionOptions como o segundo parâmetro para o construtor Mongo() para configurar a conexão para criptografia de nível de campo do lado do cliente :

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Substitua o URI do replaceMe.example.net pela string de conexão para o agrupamento de destino.

Use o objeto csfleDatabaseConnection para acessar os métodos de shell de criptografia de nível de campo do lado do cliente .

Para obter a documentação completa sobre o estabelecimento de conexões de banco de dados de dados configuradas para criptografia em nível de campo do lado do cliente , consulte a referência do construtor Mongo() .

4

Use o método getKeyVault() no objeto de conexão do banco de dados de dados csfleDatabaseConnection para criar o objeto keyVault :

keyVault = csfleDatabaseConnection.getKeyVault();

Importante

A criptografia no nível do campo no lado do cliente depende da singularidade imposta pelo servidor dos principais nomes alternativos. getKeyVault() cria um índice único em keyAltNames se não existir. Não elimine o índice único criado por getKeyVault().

5

Use o método KeyVault.deleteKey() no objeto keyVault para excluir uma chave de dados do cofre de chaves:

keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
1

Configurar a criptografia de nível de campo do lado do cliente para uma chave gerenciada localmente requer a especificação de uma de64 96bytes de base codificada string sem quebras de linha.

Para mitigar o risco dessas credenciais vazarem para os logs, o procedimento a seguir passa os valores para mongosh usando variáveis de ambiente.

A seguinte operação gera uma chave que atende aos requisitos definidos e a adiciona ao ~/.profile do usuário. Se a chave DEV_LOCAL_KEY já existir, pule esta operação.

echo "export DEV_LOCAL_KEY=\"$(head -c 96 /dev/urandom | base64 | tr -d '\n')\"" >> ~/.profile

O sistema operacional do host pode exigir logout e login novamente para atualizar as variáveis de ambiente carregadas. Alternativamente, você pode utilizar o comando source ~/.profile para atualizar manualmente a shell.

Observação

Seu sistema operacional ou shell de host específico pode ter procedimentos diferentes para definir variáveis de ambiente persistentes. Consulte a documentação do sistema operacional ou do shell do host para obter um procedimento mais específico, conforme apropriado.

2

Crie uma sessão do mongosh utilizando as opções --eval, --shell e --nodb :

mongosh --eval "var LOCAL_KEY = '$DEV_LOCAL_KEY' " \
--shell --nodb

O exemplo abre automaticamente mongosh sem uma conexão com um banco de banco de dados MongoDB . A opção --eval define a variável LOCAL_KEY em mongosh para o valor da variável de ambiente correspondente.

3

Em mongosh, crie uma nova variável ClientSideFieldLevelEncryptionOptions para armazenar o documento de configuração de criptografia no nível do campo do lado do cliente:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"local" : {
"key" : BinData(0, LOCAL_KEY)
}
}
}
4

Em mongosh, use o construtor Mongo() para estabelecer uma conexão de banco de dados de dados com o cluster de destino. Especifique o documento ClientSideFieldLevelEncryptionOptions como o segundo parâmetro para o construtor Mongo() para configurar a conexão para criptografia de nível de campo do lado do cliente :

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

Substitua o URI do replaceMe.example.net pela string de conexão para o agrupamento de destino.

Use o objeto csfleDatabaseConnection para acessar os métodos de shell de criptografia de nível de campo do lado do cliente .

Para obter a documentação completa sobre o estabelecimento de conexões de banco de dados de dados configuradas para criptografia em nível de campo do lado do cliente , consulte a referência do construtor Mongo() .

5

Use o método getKeyVault() no objeto de conexão do banco de dados de dados csfleDatabaseConnection para criar o objeto keyVault :

keyVault = csfleDatabaseConnection.getKeyVault();

Importante

A criptografia no nível do campo no lado do cliente depende da singularidade imposta pelo servidor dos principais nomes alternativos. getKeyVault() cria um índice único em keyAltNames se não existir. Não elimine o índice único criado por getKeyVault().

6

Use o método KeyVault.deleteKey() no objeto keyVault para excluir uma chave de dados do cofre de chaves:

keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))

Para recuperar um documento de chave de encriptação de dados existente do cofre de chaves:

Se fornecer a chave de criptografia de dados para um driver oficial compatível com 4.2+ para configurar a criptografia automática em nível de campo do lado do cliente, você deverá usar a representação base64 da string UUID.

Você pode executar a seguinte operação em mongosh para converter uma string hexadecimal UUID em sua representação base64 :

UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()

Forneça o UUID de sua própria chave de criptografia de dados para este comando.

Voltar

Gerenciamento de chaves de criptografia de dados e chaves mestras