CSFLE 서버 측 스키마 적용
클라이언트 측 필드 레벨 암호화 (CSFLE) 지원 클라이언트 애플리케이션에서는 스키마 유효성 검사 를 사용하여 MongoDB 인스턴스 가 특정 필드의 암호화 를 시행하다 수 있습니다. 암호화 가 필요한 필드를 지정하려면 자동 암호화 규칙 키워드 를 $jsonSchema
유효성 검사 객체 와 함께 사용합니다. 서버 는 지정된 필드가 Binary (BinData)
하위 유형 6 객체가 아닌 해당 컬렉션 에 대한 모든 쓰기 (write) 작업을 거부합니다.
자동 암호화를 사용하도록 구성된 CSFLE 지원 클라이언트가 서버 측 스키마를 발견할 때 어떻게 작동하는지 알아보려면 서버 측 필드 레벨 암호화 시행을 참조하세요.
명시적 암호화를 사용하도록 구성된 CSFLE 지원 클라이언트가 서버 측 스키마를 발견할 때 어떻게 작동하는지 알아보려면 서버 측 필드 레벨 암호화 시행을 참조하세요.
예시
employees
컬렉션이 있는 hr
데이터베이스를 가정해 보겠습니다. Documents in the employees
collection have the following form:
{ "name": "Jane Doe", "age": 51 }
collection을 사용하는 클라이언트 애플리케이션에 대해 다음 동작을 적용하려고 합니다.
age
필드를 암호화할 때 클라이언트는 다음 암호화 규칙을 따라야 합니다._id
이(가)UUID("e114f7ad-ad7a-4a68-81a7-ebcb9ea0953a")
인 데이터 암호화 키를 사용합니다.무작위 암호화 알고리즘을 사용합니다.
age
필드는 정수여야 합니다.
name
필드를 암호화할 때 클라이언트는 다음 암호화 규칙을 따라야 합니다._id
이(가)UUID("33408ee9-e499-43f9-89fe-5f8533870617")
인 데이터 암호화 키를 사용합니다.결정론적 암호화 알고리즘을 사용합니다.
name
필드는 문자열이어야 합니다.
다음 mongosh
코드는 collMod
명령을 사용하여 validator
를 포함하도록 hr.employees
컬렉션을 업데이트하여 앞의 동작을 시행합니다.
db.getSiblingDB("hr").runCommand({ collMod: "employees", validator: { $jsonSchema: { bsonType: "object", properties: { age: { encrypt: { keyId: [UUID("e114f7ad-ad7a-4a68-81a7-ebcb9ea0953a")], algorithm: "AEAD_AES_256_CBC_HMAC_SHA_512-Random", bsonType: "int", }, }, name: { encrypt: { keyId: [UUID("33408ee9-e499-43f9-89fe-5f8533870617")], algorithm: "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic", bsonType: "string", }, }, }, }, }, });
자세히 알아보기
CSFLE가 지원하는 암호화 알고리즘에 대해 자세히 알아보려면 필드 및 암호화 유형을 참조하세요.
암호화 스키마 및 암호화 규칙에 대해 자세히 알아보려면 CSFLE 암호화 스키마를 참조하세요.