Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

criptografia no nível do campo

Ao trabalhar com um cluster do MongoDB Enterprise ou do MongoDB Atlas , você pode usar o mongosh para configurar a Queryable Encryption ou a Client-Side Field Level Encryption e conectar-se ao suporte de criptografia. Tanto a Queryable Encryption quanto o CSFLE usam chaves de criptografia de dados para oferecer suporte à criptografia e descriptografia de valores de campo e armazenam esse material de chave de criptografia em um Serviço de Gerenciamento de Chaves (KMS).

mongosh suporta os seguintes provedores de KMS para uso com Queryable Encryption e CSFLE:

  • KMS do Amazon Web Services

  • Azure Key Vault

  • KMS do Google Cloud Platform

  • Arquivo de chave gerenciado localmente

O procedimento a seguir usa mongosh para criar uma chave de criptografia de dados para criptografia no nível do campo.

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

1

Crie uma sessão mongosh sem conectar-se a um banco de dados em execução usando a opção --nodb :

mongosh --nodb
2

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.

Em mongosh, crie uma nova variável AutoEncryptionOpts para armazenar a configuração de criptografia em nível de campo no lado do cliente, que contém essas credenciais:

var autoEncryptionOpts = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"aws" : {
"accessKeyId" : "YOUR_AWS_ACCESS_KEY_ID",
"secretAccessKey" : "YOUR_AWS_SECRET_ACCESS_KEY"
}
}
}

Preencha os valores para YOUR_AWS_ACCESS_KEY_ID e YOUR_AWS_SECRET_ACCESS_KEY conforme apropriado.

3

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

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

Substitua o URI do replaceMe.example.net pelo URI da string de conexão para o cluster de destino.

4

Crie o keyVault objeto utilizando o getKeyVault() método de shell:

keyVault = csfleDatabaseConnection.getKeyVault();
5

Crie a chave de criptografia de dados utilizando o createKey() método de shell:

keyVault.createKey(
"aws",
{ region: "regionname", key: "awsarn" },
[ "keyAlternateName" ]
)

Onde:

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

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

    • a região do Amazon Web Services à qual você está se conectando, como us-west-2

    • o Amazon Resource Name (ARN) para a chave mestra do cliente (CMK) do AWS.

  • 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. Para recuperar o novo documento da chave de criptografia de dados do cofre de chaves:

  • Use getKey() para recuperar a chave criada por seu UUID,ou

  • Use para recuperar a chave por seu nome alternativo, se getKeyByAltName() especificado.

1

Crie uma sessão mongosh sem conectar-se a um banco de dados em execução usando a opção --nodb :

mongosh --nodb
2

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.

Em mongosh, crie uma nova variável AutoEncryptionOpts para armazenar a configuração de criptografia em nível de campo no lado do cliente, que contém essas credenciais:

var autoEncryptionOpts = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"azure" : {
"tenantId" : "YOUR_TENANT_ID",
"clientId" : "YOUR_CLIENT_ID",
"clientSecret" : "YOUR_CLIENT_SECRET"
}
}
}

Preencha os valores para YOUR_TENANT_ID, YOUR_CLIENT_ID e YOUR_CLIENT_SECRET conforme apropriado.

3

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

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

Substitua o URI do replaceMe.example.net pelo URI da string de conexão para o cluster de destino.

4

Crie o keyVault objeto utilizando o getKeyVault() método de shell:

keyVault = csfleDatabaseConnection.getKeyVault();
5

Crie a chave de criptografia de dados utilizando o createKey() método de shell:

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. Para recuperar o novo documento da chave de criptografia de dados do cofre de chaves:

  • Use getKey() para recuperar a chave criada por seu UUID,ou

  • Use para recuperar a chave por seu nome alternativo, se getKeyByAltName() especificado.

1

Crie uma sessão mongosh sem conectar-se a um banco de dados em execução usando a opção --nodb :

mongosh --nodb
2

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.

Em mongosh, crie uma nova variável AutoEncryptionOpts para armazenar a configuração de criptografia em nível de campo no lado do cliente, que contém essas credenciais:

var autoEncryptionOpts = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"gcp" : {
"email" : "YOUR_GCP_EMAIL",
"privateKey" : "YOUR_GCP_PRIVATEKEY"
}
}
}

Preencha os valores para YOUR_GCP_EMAIL e YOUR_GCP_PRIVATEKEY conforme apropriado.

3

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

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

Substitua o URI do replaceMe.example.net pelo URI da string de conexão para o cluster de destino.

4

Crie o keyVault objeto utilizando o getKeyVault() método de shell:

keyVault = csfleDatabaseConnection.getKeyVault();
5

Crie a chave de criptografia de dados utilizando o createKey() método de shell:

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. Para recuperar o novo documento da chave de criptografia de dados do cofre de chaves:

  • Use getKey() para recuperar a chave criada por seu UUID,ou

  • Use para recuperar a chave por seu nome alternativo, se getKeyByAltName() especificado.

1

Crie uma sessão mongosh sem conectar-se a um banco de dados em execução usando a opção --nodb :

mongosh --nodb
2

Para configurar a criptografia no nível do campo do lado do cliente para uma chave gerenciada localmente, você deve especificar uma string de 96 bytes codificada em base64 sem quebras de linha. Execute o seguinte comando em mongosh para gerar uma chave que corresponda a estes requisitos:

crypto.randomBytes(96).toString('base64')

Você precisará desta chave na próxima etapa.

3

mongoshNo, crie uma nova variável AutoEncryptionOpts para armazenar a configuração de criptografia do nível do campo do lado do cliente , substituindo MY_LOCAL_KEY o pela chave gerada na 1 etapa:

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

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

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

Crie o keyVault objeto utilizando o getKeyVault() método de shell:

keyVault = csfleDatabaseConnection.getKeyVault();
6

Crie a chave de criptografia de dados utilizando o createKey() método de shell:

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. cria um índice únicogetKeyVault() 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. Para recuperar o novo documento da chave de criptografia de dados do cofre de chaves:

  • Use getKey() para recuperar a chave criada por seu UUID,ou

  • Use para recuperar a chave por seu nome alternativo, se getKeyByAltName() especificado.