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
keyIdsejanull. As chaves de dados serão criadas usando MongoDB\Driver\ClientEncryption::createDataKey() e os$kmsProvider$masterKeyparâmetros e fornecidos. Uma cópia da opçãoencryptedFieldsmodificada será retornada além do resultado da criação da coleção.Este método não afeta nenhuma configuração de criptografia automática em objetos
MongoDB\Clientexistentes. 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
$kmsProviderparâ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. Isso corresponde à opção
masterKeypara MongoDB\Driver\ClientEncryption::createDataKey().Se
$kmsProviderfor "local", deve sernull.$options: arrayUma array especificando as opções desejadas.
O parâmetro
$optionssuporta 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 êxito, $result conterá o documento de resposta do create comando e $encryptedFields['fields'][0]['keyId'] conterá um objeto MongoDB \BSON\Binary 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