버전 1.16에 추가 되었습니다.
정의
MongoDB\Database::createEncryptedCollection()암호화된 collection을 명시적으로 생성합니다.
function createEncryptedCollection( string $collectionName, MongoDB\Driver\ClientEncryption $clientEncryption, string $kmsProvider, ?array $masterKey, array $options ): array 이 메서드는
keyId이null인 암호화됨 필드에 대한 데이터 키를 자동으로 생성합니다. 데이터 키는 MongoDB\ 드라이버\ClientEncryption::createDataKey() 및 제공된$kmsProvider및$masterKey매개 변수를 사용하여 생성됩니다. 컬렉션 생성 결과와 함께 수정된encryptedFields옵션의 복사본이 반환됩니다.이 메서드는 기존
MongoDB\Client객체의 자동 암호화 설정에 영향을 주지 않습니다. 사용자는createEncryptedCollection()로 암호화됨 컬렉션 을 생성한 후 자동 암호화 를 구성해야 합니다.
매개변수
$collectionName: 문자열- 생성할 암호화된 collection의 이름입니다.
$clientEncryption: MongoDB\ 드라이버\ClientEncryption- 데이터 키를 만드는 데 사용되는 ClientEncryption 객체입니다.
$kmsProvider: 문자열- KMS 제공자 (예 'local', ' Amazon Web Services')는 새 데이터 키를 암호화하는 데 사용됩니다. 이는 MongoDB\ 드라이버\ClientEncryption::createDataKey()의
$kmsProvider매개 변수에 해당합니다. $masterKey: 배열|nullKMS-새 데이터 키를 암호화하는 데 사용할 특정 키 옵션입니다. 이는
masterKeyMongoDB\ 드라이버\ClientEncryption::createDataKey()의옵션에 해당합니다.$kmsProvider이 'local'인 경우null이어야 합니다.$options: 배열원하는 옵션을 지정하는 배열입니다.
$options매개변수는MongoDB\Database::createCollection()과 동일한 옵션을 지원합니다.encryptedFields옵션은 필수입니다.
Return Values
튜플(즉, 생성 명령의 결과 문서( typeMap 옵션에 따른 배열 또는 객체)와 수정된 encryptedFields 옵션을 포함하는 요소를 2개 가진 배열).
오류/예외
데이터 키 또는 collection을 생성하는 동안 오류가 발생한 경우 MongoDB\Exception\CreateEncryptedCollectionException 를 반환합니다. 원래의 예외와 수정된 encryptedFields 옵션은 각각 getPrevious() 및 getEncryptedFields() 메서드를 통해 액세스할 수 있습니다.
MongoDB\Exception\InvalidArgumentException 매개변수 또는 옵션의 구문 분석과 관련된 오류의 경우입니다.
예시
다음 예제에서는 test 데이터베이스에 암호화된 users collection을 생성합니다. users 컬렉션 내의 ssn 필드는 암호화된 문자열 필드로 정의됩니다.
// 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, ], ], ] );