Docs 菜单
Docs 主页
/ / /
PHP 库手册
/ /

MongoDB\Database::createEncryptedCollection()

在此页面上

  • 定义
  • 参数
  • Return Values
  • 错误/异常
  • 例子
  • 另请参阅

1.16 版本新增

MongoDB\Database::createEncryptedCollection()

显式创建加密collection。

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

此方法将自动为keyIdnull的任何加密字段创建数据密钥。 数据密钥将使用 MongoDB\Driver\ClientEncryption::createDataKey() 创建 以及提供的$kmsProvider$masterKey 参数。除了创建集合的结果之外,还会返回修改后的encryptedFields选项的副本。

此方法不会影响现有 MongoDB\Client对象上的任何自动加密设置。 使用createEncryptedCollection()创建加密集合后,用户必须配置自动加密。

$collectionName : 细绳
要创建的加密collection的名称。
$clientEncryption : MongoDB\Driver\ClientEncryption
用于创建数据密钥的 ClientEncryption 对象。
$kmsProvider : 细绳
KMS 提供商(例如 “local”、“ Amazon Web Services ”),用于加密新数据密钥。 这对应于$kmsProvider MongoDB\Driver\ClientEncryption::createDataKey() 的 参数。
$masterKey : array|null

将用于加密新数据密钥的 KMS 特定密钥选项。 这对应于masterKey MongoDB\Driver\ClientEncryption::createDataKey() 的 选项。

如果$kmsProvider为“local”,则应为null

$options : array

指定所需选项的数组。

$options参数支持与MongoDB\Database::createCollection()相同的选项。 encryptedFields选项是必需的。

一个元组(即 双元素数组),包含创建命令的结果文档(根据typeMap选项的数组或对象)和修改后的encryptedFields选项。

MongoDB\Exception\CreateEncryptedCollectionException如果在创建数据键或collection时遇到任何错误)。原始异常和修改后的encryptedFields选项可以分别通过getPrevious()getEncryptedFields()方法访问。

MongoDB\Exception\InvalidArgumentException 用于与参数或选项解析相关的错误。

userstest以下示例在数据库中创建了一个加密的collection集合。users集合中的ssn字段将被定义为加密字符串字段。

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

如果加密集合已成功创建,$result 将包含 命令的响应文档, 将包含create $encryptedFields['fields'][0]['keyId']MongoDB\BSON\Binary 子类型为4 的对象(即UUID)。

然后,修改后的encryptedFields选项可用于构造启用自动加密的新MongoDB\Client

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

后退

CreateCollection()