Gerenciar chaves de criptografia de dados
Nesta página
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.
Criar uma chave de criptografia de dados
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:
Inicie o mongosh
.
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.
Criar a configuração de criptografia.
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 } } }
Conecte-se ao suporte de criptografia.
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()
.
Crie o objeto Key Vault.
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()
.
Crie a chave de criptografia de dados.
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 emkeyAltNames
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 .
Inicie o mongosh
.
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.
Criar a configuração de criptografia.
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 } } }
Conecte-se ao suporte de criptografia.
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()
.
Crie o objeto Key Vault.
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()
.
Crie a chave de criptografia de dados.
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 emkeyAltNames
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 .
Inicie o mongosh
.
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.
Criar a configuração de criptografia.
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 } } }
Conecte-se ao suporte de criptografia.
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()
.
Crie o objeto Key Vault.
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()
.
Crie a chave de criptografia de dados.
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, comomy-project
locationname
é a localização do chaveiro KMS, comoglobal
keyringname
é o nome do chaveiro KMS, comomy-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 emkeyAltNames
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 .
Gere uma chave de criptografia.
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.
Inicie o mongosh
.
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.
Criar a configuração de criptografia.
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) } } }
Conecte-se ao suporte de criptografia.
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()
.
Crie o objeto Key Vault.
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()
.
Crie a chave de criptografia de dados.
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 emkeyAltNames
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 .
Gerenciar o nome alternativo de uma Data Encryption Key (DEK)
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:
Inicie o mongosh
.
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.
Criar a configuração de criptografia.
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 } } }
Conecte-se ao suporte de criptografia.
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()
.
Crie o objeto Key Vault.
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()
.
Gerenciar o nome alternativo da chave de criptografia de dados.
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 emkeyAltNames
para impor a exclusividade dos principais nomes alternativos.
KeyVault.addKeyAlternateName()
retorna o documento de chave de criptografia de dados antes da modificação. UseKeyVault.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. UseKeyVault.getKey()
para recuperar a chave de criptografia de dados modificada.
Inicie o mongosh
.
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.
Criar a configuração de criptografia.
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 } } }
Conecte-se ao suporte de criptografia.
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()
.
Crie o objeto Key Vault.
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()
.
Gerenciar o nome alternativo da chave de criptografia de dados.
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 emkeyAltNames
para impor a exclusividade dos principais nomes alternativos.
KeyVault.addKeyAlternateName()
retorna o documento de chave de criptografia de dados antes da modificação. UseKeyVault.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. UseKeyVault.getKey()
para recuperar a chave de criptografia de dados modificada.
Inicie o mongosh
.
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.
Criar a configuração de criptografia.
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 } } }
Conecte-se ao suporte de criptografia.
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()
.
Crie o objeto Key Vault.
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()
.
Gerenciar o nome alternativo da chave de criptografia de dados.
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 emkeyAltNames
para impor a exclusividade dos principais nomes alternativos.
KeyVault.addKeyAlternateName()
retorna o documento de chave de criptografia de dados antes da modificação. UseKeyVault.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. UseKeyVault.getKey()
para recuperar a chave de criptografia de dados modificada.
Gere uma chave de criptografia.
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.
Inicie o mongosh
.
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.
Criar a configuração de criptografia.
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) } } }
Conecte-se ao suporte de criptografia.
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()
.
Crie o objeto Key Vault.
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()
.
Gerenciar o nome alternativo da chave de criptografia de dados.
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 emkeyAltNames
para impor a exclusividade dos principais nomes alternativos.
KeyVault.addKeyAlternateName()
retorna o documento de chave de criptografia de dados antes da modificação. UseKeyVault.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. UseKeyVault.getKey()
para recuperar a chave de criptografia de dados modificada.
Remover uma chave de criptografia de dados
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:
Inicie o mongosh
.
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.
Criar a configuração de criptografia.
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 } } }
Conecte-se ao suporte de criptografia.
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()
.
Crie o objeto Key Vault.
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()
.
Exclua a chave de criptografia de dados usando seu UUID
.
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"))
Inicie o mongosh
.
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.
Criar a configuração de criptografia.
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 } } }
Conecte-se ao suporte de criptografia.
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()
.
Crie o objeto Key Vault.
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()
.
Exclua a chave de criptografia de dados usando seu UUID
.
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"))
Inicie o mongosh
.
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.
Criar a configuração de criptografia.
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 } } }
Conecte-se ao suporte de criptografia.
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()
.
Crie o objeto Key Vault.
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()
.
Exclua a chave de criptografia de dados usando seu UUID
.
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"))
Gere uma chave de criptografia.
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.
Inicie o mongosh
.
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.
Criar a configuração de criptografia.
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) } } }
Conecte-se ao suporte de criptografia.
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()
.
Crie o objeto Key Vault.
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()
.
Exclua a chave de criptografia de dados usando seu UUID
.
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"))
Recuperar uma chave de criptografia de dados existente
Para recuperar um documento de chave de encriptação de dados existente do cofre de chaves:
Use
getKey()
para recuperar a chave criada por seu UUID ouUse
getKeyByAltName()
para recuperar a chave por seu nome alternativo, se especificado. Para obter mais informações sobre como trabalhar com nomes alternativos, consulte Gerenciar o nome alternativo de uma Data Encryption Key (DEK).
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.