Menu Docs
Página inicial do Docs
/
Manual do banco de dados
/ / /

KeyVault.rewrapManyDataKey() (método mongosh)

KeyVault.rewrapManyDataKey(filter, options)

Descriptografa várias chaves de criptografia de dados (DEK) e as criptografa novamente com uma nova chave mestra do cliente (CMK). Use este método para girar a CMK que criptografa suas DEKs. Para saber mais sobre CMKs e DEKs, consulte Chaves de criptografia e cofres de chaves.

Você especifica uma chave mestra do cliente por meio do parâmetro masterKey . Se você não incluir um argumento masterKey, o método descriptografará e criptografará cada DEK com a chave mestra do cliente referenciada nos metadados desse DEK. Para saber mais sobre os metadados dos DEKs, consulte Metadados usados para descriptografia.

Retorna:Um objeto BulkWriteResult que relata quantas chaves de dados foram afetadas.

Aviso

Faça backup da sua collection de cofre de chaves

Antes de girar seu diretório de dados, certifique-se de criar uma cópia de segurança da sua collection de cofre de chaves. Se você perder o acesso ao seu diretório de dados, perderá todos os seus dados criptografados.

Para saber como criar um backup de uma collection, consulte Fazer backup e restaurar uma implantação autogerenciada com as ferramentas do MongoDB .

Esse comando está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

KeyVault.rewrapManyDataKey tem a seguinte sintaxe:

let keyVault = db.getMongo().getKeyVault()
keyVault.rewrapManyDataKey(
<filter>,
<options>
)
Parâmetro
Tipo
Descrição

filter

O query filtro para a collection de cofres de chaves

options

documento

Este documento tem dois campos:

  • provider: Um KMS provider (Amazon Web Services KMS, Azure Key Vault, GCP KMS, o provedor local ou KMIP)

  • masterKey: Uma chave específica do KMS usada para criptografar a nova chave de dados

Importante

Suporte de rotação de chaves

Para visualizar as dependências do driver para a API de rotação de chaves, consulte Compatibilidade.

Esta operação não é atômica e não deve ser executada em paralelo com outras operações de gerenciamento de chaves.

Os mongosh ClientEncryption métodos exigem uma conexão de banco de dados com a criptografia em uso ativada. Se a conexão atual do banco de dados não tiver sido iniciada com a criptografia em uso ativada, faça o seguinte:

Esses exemplos permitem que você avalie rapidamente a criptografia no nível do campo do lado do cliente. Para obter exemplos específicos usando cada provedor deKMS suportado, consulte Gerenciamento de chaves de criptografia.

1

Inicie o cliente mongosh .

mongosh --nodb
2

Para configurar a criptografia no nível do campo do lado do cliente para uma chave managed localmente, gere uma cadeia de 96 bytes codificada em base64 sem quebras de linha.

const TEST_LOCAL_KEY = require("crypto").randomBytes(96).toString("base64")
3

Crie as opções de criptografia no nível do campo do lado do cliente usando a string de chave local gerada:

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

Use o construtor Mongo() com as opções de criptografia de nível de campo do lado do cliente configuradas para criar uma conexão com o reconhecimento de data center. Substitua o URI mongodb://myMongo.example.net pelo URI da string de conexão do cluster de destino.

encryptedClient = Mongo(
"mongodb://myMongo.example.net:27017/?replSetName=myMongo",
autoEncryptionOpts
)

Recupere o objeto KeyVault e use o método KeyVault.rewrapManyDataKey() para reembrulhar as chaves existentes em um novo masterKey. Se nenhum novo masterKey for fornecido, cada chave de dados manterá seu respectivo masterKey atual .

O exemplo a seguir mostra como você pode retrair cada chave de dados com seu respectivo masterKey atual :

let keyVault = mongo.getKeyVault()
keyVault.rewrapManyDataKey()

O exemplo a seguir mostra como você pode retrair cada chave de dados com um novo masterKey:

let keyVault = mongo.getKeyVault()
keyVault.rewrapManyDataKey({}, {
provider: 'aws',
masterKey: {
region: 'us-east-2',
key: 'arn:aws:kms:us-east-2:...'
}
})

O exemplo a seguir mostra como reencapsular chaves de dados que não foram reencapsuladas nos trinta dias anteriores.

let keyVault = mongo.getKeyVault()
const thirtyDaysAgo = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000);
keyVault.rewrapManyDataKey({ updateDate: { $lt: thirtyDaysAgo } });

KeyVault.rewrapManyDataKey() retorna um objeto BulkWriteResult detalhando quantas chaves de dados foram afetadas:

{
bulkWriteResult: BulkWriteResult {
result: {
ok: 1,
writeErrors: [],
writeConcernErrors: [],
insertedIds: [],
nInserted: 0,
nUpserted: 0,
nMatched: 3,
nModified: 3,
nRemoved: 0,
upserted: [],
opTime: { ts: Timestamp({ t: 1655840760, i: 3 }), t: 23 }
}
}
}

Voltar

KeyVault.removeKeyAltName

Nesta página