MongoDB\Database::createEncryptedCollection()
Novidade na versão 1,16.
Definição
MongoDB\Database::createEncryptedCollection()
Cria explicitamente uma collection criptografada.
function createEncryptedCollection( string $collectionName, MongoDB\Driver\ClientEncryption $clientEncryption, string $kmsProvider, ?array $masterKey, array $options ): array Este método criará automaticamente chaves de dados para quaisquer campos criptografados em que
keyId
sejanull
. As chaves de dados serão criadas usando MongoDB\Driver\ClientEncryption::createDataKey() e os$kmsProvider
$masterKey
parâmetros e fornecidos. Uma cópia da opçãoencryptedFields
modificada será retornada além do resultado da criação da collection.Este método não afeta nenhuma configuração de criptografia automática em objetos
MongoDB\Client
existentes. Os usuários devem configurar a criptografia automática após criar a coleção criptografada comcreateEncryptedCollection()
.
Parâmetros
$collectionName
: string- O nome da collection criptografada a ser criada.
$clientEncryption
: MongoDB\Driver\ClientEncryption- O objeto ClientEncryption usado para criar chaves de dados.
$kmsProvider
: string- Fornecedor de KMS (por exemplo "local", "Amazon Web Services") que serão usadas para criptografar novas chaves de dados. Corresponde ao
$kmsProvider
parâmetro para MongoDB\Driver\ClientEncryption::createDataKey(). $masterKey
: array|nullOpções de chave específicas do KMS que serão usadas para criptografar novas chaves de dados. Corresponde à
masterKey
opção para MongoDB\Driver\ClientEncryption::createDataKey().Se
$kmsProvider
for "local", deve sernull
.$options
: arrayUma array especificando as opções desejadas.
O parâmetro
$options
suporta as mesmas opções queMongoDB\Database::createCollection()
. A opçãoencryptedFields
é obrigatória.
Return Values
Uma tupla (ou seja, array de dois elementos) contendo o documento de resultado do comando de criação (uma array ou objeto de acordo com a opção typeMap
) e a opção encryptedFields
modificada.
Erros/exceções
MongoDB\Exception\CreateEncryptedCollectionException
se algum erro for encontrado ao criar as chaves de dados ou a collection. A exceção original e a opção encryptedFields
modificada podem ser acessadas por meio dos métodos getPrevious()
e getEncryptedFields()
, respectivamente.
MongoDB\Exception\InvalidArgumentException
para erros relacionados à análise de parâmetros ou opções.
Exemplo
O exemplo abaixo cria uma collection users
criptografada no banco de dados test
. O campo ssn
dentro da coleção users
será definido como um campo de string criptografado.
// 96-byte master key used to encrypt/decrypt data keys define('LOCAL_MASTERKEY', '...'); $client = new MongoDB\Client; $clientEncryption = $client->createClientEncryption([ 'keyVaultNamespace' => 'keyvault.datakeys', 'kmsProviders' => [ 'local' => ['key' => new MongoDB\BSON\Binary(base64_decode(LOCAL_MASTERKEY), 0)], ], ); [$result, $encryptedFields] = $client->test->createEncryptedCollection( 'users', $clientEncryption, 'local', null, [ 'encryptedFields' => [ 'fields' => [ ['path' => 'ssn', 'bsonType' => 'string', 'keyId' => null], ], ], ] );
Se a coleção criptografada tiver sido criada com sucesso, $result
conterá o documento de resposta do create
comando e $encryptedFields['fields'][0]['keyId']
conterá um MongoDB\BSON\Binary objeto com subtipo 4 (ou seja, UUID).
A opção encryptedFields
modificada pode então ser usada para construir um novo MongoDB\Client
com a criptografia automática habilitada.
$encryptedClient = new MongoDB\Client( null, // Connection string [], // Additional connection string options [ 'autoEncryption' => [ 'keyVaultNamespace' => 'keyvault.datakeys', 'kmsProviders' => [ 'local' => ['key' => new MongoDB\BSON\Binary(base64_decode(LOCAL_MASTERKEY), 0)], ], 'encryptedFieldsMap' => [ 'test.users' => $encryptedFields, ], ], ] );
Veja também
criar referência de comando no manual do MongoDB