KeyVault.createKey()
Nesta página
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âmetroTipoDescriçãokeyManagementService
stringObrigató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) paracustomerMasterKey
.azure
para o Azure Key Vault. Requer a especificação de um documento chave mestra do cliente (CMK) paracustomerMasterKey
.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) paracustomerMasterKey
.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 documentoA chave mestra do cliente (CMK) a ser usada para criptografar a chave de encriptação de dados. Obrigatório se
keyManagementService
foraws
,azure
ougcp
.Forneça a chave mestra do cliente da seguinte maneira, dependendo do seu provedor de KMS:
Para o Amazon Web Services KMS, especifique o nome do recurso da Amazon (ARN) completo da chave mestre como uma única string.
Para o Azure Key Vault KMS, especifique um documento contendo os seguintes pares de valores de chave:
keyName
- O nome do Azure Key VaultkeyVaultEndpoint
- O nome DNS do Azure Key Vault a ser usadokeyVersion
- Opcional. A versão da chave especificada emkeyName
, se aplicável
Novidades na versão 5.0.
Para o GCP KMS, especifique um documento contendo os seguintes pares de valores de chave:
projectId
- O nome do projeto GCPlocation
- A localização do chaveiro KMSkeyRing
- O nome do chaveiro KMS (geralmente 'global')keyName
- O nome da chave a ser usadakeyVersion
- Opcional. A versão da chave especificada emkeyName
, se aplicável
Novidades na versão 5.0.
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çãoAutoEncryptionOpts
não tiver privilégios suficientes para utilizar a CMK,createKey()
retornará um erro.Este parâmetro não terá efeito se
keyManagementService
forlocal
e puder ser omitido com segurança.keyAltName
array de stringsOpcional
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 campokeyAltNames
com um filtro de índice parcial para somente documentos ondekeyAltNames
existe.options
documentoOpcional
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.
Comportamento
Requer a configuração da criptografia no nível do campo do lado do cliente na conexão do reconhecimento de data center
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:
Use o construtor
Mongo()
domongosh
para estabelecer uma conexão com as opções necessárias de criptografia de nível de campo no lado do cliente. O métodoMongo()
é compatível com os seguintes provedores de serviço de gerenciamento de chaves (KMS) para o gerenciamento da chave mestra do cliente (CMK):ou
Utilize as
mongosh
opções da linha de comando para estabelecer uma conexão com as opções exigidas. As opções de linha de comando são compatíveis apenas com o provedor Amazon Web Services KMS para gerenciamento da chave mestra do cliente.
Exemplo
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:
Use
getKey()
para recuperar a chave criada emUUID
.-ou-
Use
getKeyByAltName()
para recuperar a chave pelo nome alternativo.