AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

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::createDataKey() と、提供された $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オプションは必要です。

プル( 作成コマンド( 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 keysdefine('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を構築するために使用できます。

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