Nuevo en la versión 1.16.
Definición
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 cualquier campo cifrado donde
keyIdseanull. Las claves de datos se crearán utilizando MongoDB\Driver\ClientEncryption::createDataKey()y los$kmsProvider$masterKeyparámetros y proporcionados. Se devolverá una copia de laencryptedFieldsopción modificada, además del resultado de la creación de la colección.Este método no afecta ninguna configuración de cifrado automático existente.
MongoDB\Clientobjetos. Los usuarios deben configurar el cifrado automático después de crear la colección cifradacreateEncryptedCollection()con.
Parámetros
$collectionName: cadena- El nombre de la colección cifrada que se creará.
$clientEncryption: MongoDB\Controlador\Cifrado de cliente- El objeto ClientEncryption utilizado para crear claves de datos.
$kmsProvider: cadena- Proveedor KMS (por ejemplo, "local", "aws") que se utilizará para cifrar nuevas claves de datos. Esto corresponde al parámetro
$kmsProviderpara MongoDB\Driver\ClientEncryption::createDataKey(). $masterKey: arreglo|nullOpciones de clave específicas de KMS que se usarán para cifrar nuevas claves de datos. Esto corresponde a la
masterKeyopción de MongoDB\Driver\ClientEncryption::createDataKey().Si
$kmsProvideres "local", debería sernull.$options: matrizUna matriz que especifica las opciones deseadas.
El
$optionsparámetro admite las mismas opciones que.MongoDB\Database::createCollection()LaencryptedFieldsopción es obligatoria.
Return Values
Una matriz que contiene la opción encryptedFields modificada.
Errores/Excepciones
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 para errores relacionados con el análisis de parámetros u opciones.
Ejemplo
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.
// 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).
Luego, la opción modificada se puede utilizar para construir un nuevo con cifrado automático encryptedFields MongoDB\Client habilitado.
$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, ], ], ] );
Ver también
crear referencia de comando en el manual de MongoDB