MongoDB\Database::createEncryptedCollection()
이 페이지의 내용
버전 1.16에 추가 되었습니다.
정의
MongoDB\Database::createEncryptedCollection()
암호화된 collection을 명시적으로 생성합니다.
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
: 문자열- 생성할 암호화된 collection의 이름입니다.
$clientEncryption
: MongoDB\Driver\ClientEncryption- 데이터 키를 만드는 데 사용되는 ClientEncryption 객체입니다.
$kmsProvider
: 문자열- KMS 제공자(예 "local", "Amazon Web Services")를 사용하여 새 데이터 키를 암호화합니다. 이는
$kmsProvider
MongoDB\Driver\ClientEncryption::createDataKey() 의매개 변수에 해당합니다. $masterKey
: 배열|null새 데이터 키를 암호화하는 데 사용할 KMS별 키 옵션입니다. 이는
masterKey
MongoDB\Driver\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, ], ], ] );