バージョン 1.16 の新機能。
定義
MongoDB\Database::createEncryptedCollection()暗号化されたコレクションを明示的に作成します。
function createEncryptedCollection( string $collectionName, MongoDB\Driver\ClientEncryption $clientEncryption, string $kmsProvider, ?array $masterKey, array $options ): array このメソッドでは、
keyIdがnullである暗号化されたフィールドのデータキーが自動的に作成されます。データキーは、MongoDB$Driver\ClientEncryption::createKey() と提供された$kmsProviderパラメーターと$masterKeyパラメーターを使用して作成されます。コレクションの作成結果に加えて、変更されたencryptedFieldsオプションのコピーが返されます。この方法は、既存の
MongoDB\Clientオブジェクトの自動暗号化設定には影響しません。 ユーザーは、createEncryptedCollection()を使用して暗号化されたコレクションを作成した後、自動暗号化を設定する必要があります。
パラメーター
$collectionName: string- 作成する暗号化されたコレクションの名前。
$clientEncryption: MongoDB$Driver$ClientEncryption- データキーの作成に使用される ClientEncryption オブジェクト。
$kmsProvider: string- KMS プロバイダー(例:「local」、「Amazon Web Services」)、新しいデータキーの暗号化に使用されます。 これは、MongoDB$Driver\ClientEncryption::createKey() の
$kmsProviderパラメータに対応します。 $masterKey: array|null新しいデータキーの暗号化に使用される KMS 固有のキー オプション。これは、MongoDB\Driver\ClientEncryption::createDataKey() の
masterKeyオプションに相当します。$kmsProviderが「local」の場合、これはnullになります。$options: 配列必要なオプションを指定する配列。
$optionsパラメータはMongoDB\Database::createCollection()と同じオプションをサポートしています。encryptedFieldsオプションは必要です。
Return Values
プル( 作成コマンド( typeMapオプションに準拠した配列またはオブジェクト)と変更されたencryptedFieldsオプションからの結果ドキュメントを含む 2 要素配列)。
エラーと例外
データキーまたはコレクションの作成でエラーが発生した場合は、 MongoDB\Exception\CreateEncryptedCollectionException 。 元の例外と変更されたencryptedFields getPrevious()getEncryptedFields()オプションには、それぞれ メソッドと メソッドを介してアクセスできます。
MongoDB\Exception\InvalidArgumentException は、パラメータまたはオプションの解析に関連するエラーの場合は です。
例
次の例では、 testデータベースに暗号化されたusersコレクションを作成しています。 usersコレクション内のssnフィールドは、暗号化された string フィールドとして定義されます。
// 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], ], ], ] );
暗号化されたコレクションが正常に作成されBSON場合、 には$result コマンドからの応答ドキュメントが含まれ、create $encryptedFields['fields'][0]['keyId']にはサブオブジェクト4 (つまりUUID)。
変更されたencryptedFieldsオプションは、自動暗号化を有効にする新しいMongoDB\Clientを構築するために使用できます。
$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, ], ], ] );