MongoDB\Database::createEncryptedCollection()
バージョン 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 」)、新しいデータキーの暗号化に使用されます。 これは、
$kmsProvider
MongoDB\Driver\ClientEncryption::createKey() の パラメーターに対応します。 $masterKey
: array|null新しいデータキーの暗号化に使用される KMS 固有のキー オプション。 これは、
masterKey
MongoDB\Driver\ClientEncryption::createKey() の オプションに相当します。$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], ], ], ] );
暗号化されたコレクションが正常に作成された場合、$result
には コマンドからの応答ドキュメントが含まれ、create
$encryptedFields['fields'][0]['keyId']
には MongoDB\BSON\Binary サブタイプ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, ], ], ] );