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

KeyVault.createKey()

Nesta página

  • Comportamento
  • Exemplo
KeyVault.createKey(keyManagementService, customerMasterKey, ["keyAltName"])

Adiciona uma chave de criptografia de dados ao cofre de chave associado à conexão do banco de dados de dados. A criptografia no nível do campo do lado do cliente usa chaves de criptografia de dados para oferecer suporte à criptografia e descriptografia de valores de campo .

createKey() tem a seguinte sintaxe:

keyVault = db.getMongo().getKeyVault()
keyVault.createKey(
keyManagementService,
customerMasterKey,
[ "keyAltName" ]
)
Parâmetro
Tipo
Descrição
keyManagementService
string

Obrigatório

O serviço de gerenciamento de chaves (KMS) a ser usado para recuperar a chave mestra do cliente (CMK). Aceita os seguintes parâmetros:

  • aws para Amazon Web Services KMS. Requer a especificação de uma string de chave mestra do cliente (CMK) para customerMasterKey.

  • azure para o Azure Key Vault. Requer a especificação de um documento chave mestra do cliente (CMK) para customerMasterKey.

    Novidades na versão 5.0.

  • gcp para KMS do Google Cloud Platform. Requer a especificação de um documento chave mestra do cliente (CMK) para customerMasterKey.

    Novidades na versão 5.0.

  • local para uma chave managed localmente.

Se database connection não foi configurado com o KMS especificado, a criação da chave de criptografia de dados falha.

customerMasterKey
string ou documento

A chave mestra do cliente (CMK) a ser usada para criptografar a chave de encriptação de dados. Obrigatório se keyManagementService for aws, azure ou gcp.

Forneça a chave mestra do cliente da seguinte maneira, dependendo do seu provedor de KMS:

createKey() solicita que o KMS criptografe o material da chave de criptografia de dados usando a CMK especificada. Se a CMK não existir ou se a configuração AutoEncryptionOpts não tiver privilégios suficientes para utilizar a CMK, createKey() retornará um erro.

Este parâmetro não terá efeito se keyManagementService for local e puder ser omitido com segurança.

keyAltName
array de strings

Opcional

O nome alternativo para a chave de criptografia de dados. Use keyAltName para melhorar a encontrabilidade de um diretório de dados específico ou como um análogo de um comentário.

O método getKeyVault() cria automaticamente um índice único no campo keyAltNames com um filtro de índice parcial para somente documentos onde keyAltNames existe.

options
documento

Opcional

Um documento que especifica opções para a nova chave. options tem os seguintes campos:

  • masterKey: a nova chave mestre para criptografar dados.

  • keyAltNames: uma array de nomes alternativos, um por chave mestre.

  • keyMaterial: binddata usado para criar a chave.

Retorna:O identificador exclusivo UUID do diretório de dados criado.

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

O exemplo a seguir destina-se a uma avaliação rápida da criptografia em nível de campo do lado do cliente. Para exemplos específicos de utilizar o KeyVault.createKey() com cada fornecedor deKMS do suportado, consulte Criar uma Chave de Dados.

Para configurar a criptografia no nível do campo do lado do cliente para uma chave gerenciada localmente:

  • gerar uma string de 96 bytes codificada em base 64sem quebras de linha

  • use mongosh para carregar a chave

export TEST_LOCAL_KEY=$(echo "$(head -c 96 /dev/urandom | base64 | tr -d '\n')")
mongosh --nodb

Crie o objeto 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, process.env["TEST_LOCAL_KEY"])
}
}
}

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.createKey() para criar uma nova chave de chave de criptografia de dados usando a chave gerenciada localmente:

keyVault = encryptedClient.getKeyVault()
keyVault.createKey("local", ["data-encryption-key"])

Se for bem-sucedido, createKey() retornará o UUID da nova chave de criptografia de dados. Para recuperar o novo documento da chave de encriptação de dados do cofre de chaves:

Voltar

KeyVault.createDataKey