Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

MongoDB\Database::createEncryptedCollection()

Nueva en la versión 1.16.

MongoDB\Database::createEncryptedCollection()

Crea explícitamente una colección cifrada.

function createEncryptedCollection(
string $collectionName,
MongoDB\Driver\ClientEncryption $clientEncryption,
string $kmsProvider,
?array $masterKey,
array $options
): array

Este método creará automáticamente claves de datos para todos los campos cifrados donde keyId sea null. Las claves de datos se crearán utilizando MongoDB\Driver\ClientEncryption::createDataKey() y los parámetros proporcionados $kmsProvider y $masterKey. Se devolverá una copia de la opción modificada encryptedFields además del resultado de crear la colección.

Este método no afecta ninguna configuración de cifrado automático existente. MongoDB\Client objetos. Los usuarios deben configurar el cifrado automático después de crear la colección cifrada con createEncryptedCollection().

$collectionName : string
El nombre de la colección cifrada que se va a crear.
$clientEncryption : MongoDB\Controlador\Cifrado de cliente
El objeto ClientEncryption utilizado para crear claves de datos.
$kmsProvider : string
Proveedor KMS (por ejemplo, "local", "aws") que se utilizará para cifrar nuevas claves de datos. Esto corresponde al parámetro $kmsProvider para MongoDB\Driver\ClientEncryption::createDataKey().
$masterKey : arreglo|null

Opciones de clave específicas de KMS que se usarán para cifrar nuevas claves de datos. Esto corresponde con la opción masterKey para MongoDB\Driver\ClientEncryption::createDataKey().

Si $kmsProvider es "local", esto debería ser null.

$options : arreglo

Una matriz que especifica las opciones deseadas.

El parámetro $options permite las mismas opciones que MongoDB\Database::createCollection(). La opción encryptedFields es obligatoria.

Un arreglo que contiene la opción modificada encryptedFields.

MongoDB\Exception\CreateEncryptedCollectionException si se produce algún error al crear las claves de datos o la colección.encryptedFields Se puede acceder a la excepción original y a la opción modificada mediante los getPrevious() getEncryptedFields() métodos y, respectivamente.

MongoDB\Exception\InvalidArgumentException por errores relacionados con el análisis de parámetros u opciones.

El siguiente ejemplo crea una colección cifrada users en la base de datos test. El campo ssn de la colección users se definirá como un campo de cadena cifrada.

<?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)],
],
);
$encryptedFields = $client->test->createEncryptedCollection(
'users',
$clientEncryption,
'local',
null,
[
'encryptedFields' => [
'fields' => [
['path' => 'ssn', 'bsonType' => 'string', 'keyId' => null],
],
],
]
);

Si la colección cifrada se crea correctamente, $encryptedFields['fields'][0]['keyId'] contiene un objeto MongoDB\BSON\Binary con el subtipo 4 (UUID).

La opción encryptedFields modificada puede utilizarse para construir un nuevo MongoDB\Client con cifrado automático habilitado.

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

Volver

createCollection()

En esta página