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

KeyVault.createKey()

Nesta página

  • Compatibilidade
  • Sintaxe
  • 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 no lado do cliente usa chaves de encriptação de dados para dar suporte à criptografia e descriptografia de valores de campo .

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

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

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:

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.

Os métodos de criptografia de nível de campo do lado do cliente mongo exigem uma conexão de reconhecimento de data center com a criptografia de nível de campo do lado do cliente habilitada. Se o reconhecimento de data center atual não foi iniciado com a criptografia de nível de campo do lado do cliente habilitada:

O exemplo a seguir destina-se a uma avaliação rápida da criptografia em nível de campo do lado do cliente. Para obter exemplos específicos de uso de KeyVault.createKey() com cada provedor deKMS compatível, consulte Criar uma chave de criptografia de dados.

A configuração da criptografia em nível de campo do lado do cliente para uma chave managed localmente requer a especificação de uma cadeia de 96 bytes codificada em base64 sem quebras de linha. A operação a seguir gera uma chave que atende aos requisitos declarados e a carrega no shell mongo :

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

Crie o objeto de criptografia no nível do campo do lado do cliente usando a string de chave local gerada:

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

Use o construtor Mongo() para criar uma conexão de reconhecimento de data center com as opções de criptografia no nível do campo do lado do cliente. 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",
ClientSideFieldLevelEncryptionOptions
)

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.addKeyAlternetName