Docs Menu
Docs Home
/ / /
PHP 라이브러리 매뉴얼
/ /

MongoDB\Database::createEncryptedCollection()

이 페이지의 내용

  • 정의
  • 매개변수
  • Return Values
  • 오류/예외
  • 예시
  • 다음도 참조하세요.

버전 1.16에 추가 되었습니다.

MongoDB\Database::createEncryptedCollection()

암호화된 collection을 명시적으로 생성합니다.

function createEncryptedCollection(
string $collectionName,
MongoDB\Driver\ClientEncryption $clientEncryption,
string $kmsProvider,
?array $masterKey,
array $options
): array

이 메서드는 keyIdnull 인 암호화된 모든 필드에 대한 데이터 키를 자동으로 생성합니다. 데이터 키는 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 옵션은 필수입니다.

튜플(즉, 생성 명령의 결과 문서( typeMap 옵션에 따른 배열 또는 객체)와 수정된 encryptedFields 옵션을 포함하는 요소를 2개 가진 배열).

데이터 키 또는 collection을 생성하는 동안 오류가 발생한 경우 MongoDB\Exception\CreateEncryptedCollectionException 를 반환합니다. 원래의 예외와 수정된 encryptedFields 옵션은 각각 getPrevious()getEncryptedFields() 메서드를 통해 액세스할 수 있습니다.

MongoDB\Exception\InvalidArgumentException 매개변수 또는 옵션의 구문 분석과 관련된 오류의 경우입니다.

다음 예제에서는 test 데이터베이스에 암호화된 users collection을 생성합니다. users 컬렉션 내의 ssn 필드는 암호화된 문자열 필드로 정의됩니다.

<?php
// 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 를 구성할 수 있습니다.

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

돌아가기

CreateCollection()