Menu Docs
Página inicial do Docs
/ / /
Manual da Biblioteca PHP
/ /

MongoDB\Database::createEncryptedCollection()

Nesta página

  • Definição
  • Parâmetros
  • Return Values
  • Erros/exceções
  • Exemplo
  • Veja também

Novidade na versão 1,16.

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 seja null. 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ção encryptedFields 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 com createEncryptedCollection().

$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|null

Opçõ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 ser null .

$options : array

Uma array especificando as opções desejadas.

O parâmetro $options suporta as mesmas opções que MongoDB\Database::createCollection(). A opção encryptedFields é obrigatória.

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.

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.

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.

<?php
// 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.

<?php
$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,
],
],
]
);

Voltar

CreateCollection()