Docs Menu
Docs Home
/ / /
PHP ライブラリ マニュアル
/ /

MongoDB\Database::createEncryptedCollection()

項目一覧

  • 定義
  • パラメーター
  • Return Values
  • エラーと例外
  • その他の参照

バージョン 1.16 の新機能

MongoDB\Database::createEncryptedCollection()

暗号化されたコレクションを明示的に作成します。

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

このメソッドでは、 keyIdnullである暗号化されたフィールドのデータキーが自動的に作成されます。 データキーは、 MongoDB\Driver\ClientEncryption::createKey() を使用して作成されます 、および指定された$kmsProvider パラメーターと$masterKey パラメーター。コレクションの作成結果に加えて、変更されたencryptedFieldsオプションのコピーが返されます。

この方法は、既存の MongoDB\Clientオブジェクトの自動暗号化設定には影響しません。 ユーザーは、 createEncryptedCollection()を使用して暗号化されたコレクションを作成した後、自動暗号化を設定する必要があります。

$collectionName : string
作成する暗号化されたコレクションの名前。
$clientEncryption : MongoDB\Driver\ClientEncryption
データキーの作成に使用される ClientEncryption オブジェクト。
$kmsProvider : string
KMS プロバイダー(例: 「local」、「 Amazon Web Services 」)、新しいデータキーの暗号化に使用されます。 これは、$kmsProvider MongoDB\Driver\ClientEncryption::createKey() の パラメーターに対応します。
$masterKey : array|null

新しいデータキーの暗号化に使用される KMS 固有のキー オプション。 これは、masterKey MongoDB\Driver\ClientEncryption::createKey() の オプションに相当します。

$kmsProviderが「local」の場合、これはnullになります。

$options : 配列

必要なオプションを指定する配列。

$optionsパラメータはMongoDB\Database::createCollection()と同じオプションをサポートしています。 encryptedFieldsオプションは必要です。

プル( 作成コマンド( typeMapオプションに準拠した配列またはオブジェクト)と変更されたencryptedFieldsオプションからの結果ドキュメントを含む 2 要素配列)。

データキーまたはコレクションの作成でエラーが発生した場合は、 MongoDB\Exception\CreateEncryptedCollectionException 。 元の例外と変更されたencryptedFields getPrevious()getEncryptedFields()オプションには、それぞれ メソッドと メソッドを介してアクセスできます。

MongoDB\Exception\InvalidArgumentException は、パラメータまたはオプションの解析に関連するエラーの場合は です。

次の例では、 testデータベースに暗号化されたusersコレクションを作成しています。 usersコレクション内のssnフィールドは、暗号化された string フィールドとして定義されます。

<?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()