이 작업에 대하여
암호화됨 필드를 쿼리 가능하게 만들려면 암호화 스키마 를 만듭니다. 이 스키마 는 쿼리 가능한 필드와 허용되는 쿼리 유형을 정의합니다. 자세한 내용은 암호화된 필드 및 활성화된 쿼리를 참조하세요.
중요
Queryable Encryption 은 동일성 및 범위 쿼리를 지원합니다. 하나의 쿼리 유형에 대해서만 필드 를 구성할 수 있습니다.
시작하기 전에
암호화됨 필드를 쿼리 가능하게 만들 때는 성능과 보안을 고려하세요. 각 구성 옵션이 이에 미치는 영향에 대한 자세한 내용 은 최적의 검색 및 저장을 위한 암호화된 필드 구성을 참조하세요.
단계
암호화할 필드를 지정합니다.
필드 배열 내의 문서 에
path
및bsonType
문자열을 추가합니다.const encryptedFieldsObject = { fields: [ { path: "myDocumentField", bsonType: "int" } ] } 중요
_id
필드를 제외한 모든 필드를 암호화하도록 지정할 수 있습니다.선택 사항으로
keyId
필드 DEK ID 로 설정하다 .중요
키 ID는 고유해야 하며, 그렇지 않으면 서버 오류를 반환합니다.
클라이언트 에서
AutoEncryptionSettings
를 구성하면createEncryptedCollection
헬퍼 메서드를 사용하여 키를 자동으로 만들 수 있습니다.{ path: "myDocumentField", bsonType: "int", keyId: "<unique data encryption key>" }
원하는 필드에서 범위 쿼리를 활성화합니다.
이렇게 하면 $lt
, $lte
, $gt
및 $gte
연산자를 사용하여 쿼리할 수 있습니다.
다음 옵션이 보안 및 성능에 미치는 영향에 대한 자세한 내용 은 최적의 검색 및 저장을 위한 암호화된 필드 구성을 참조하세요.
queries
객체 를 추가하고queryType
을"range"
로 설정하다 합니다.{ path: "myDocumentRangeField", bsonType: "int", queries: { queryType: "range" } } 다음 필드를 설정합니다.
필드유형설명필드 와 동일
bsonType
bsonType
가decimal
또는double
인 경우 필수입니다. 선택 사항이지만int
,long
또는date
인 경우 적극 권장합니다. 기본값은bsonType
의 최소값과 최대값입니다.가능한 경우 쿼리 에 범위를 지정하면 성능이 향상됩니다. 이러한 포괄적 범위를 벗어난 값을 쿼리하면 MongoDB 는 오류를 반환합니다.
{ path: "myDocumentRangeField", bsonType: "int", queries: { queryType: "range", min: 0, max: 1200 } }
원하는 필드에서 접두사, 접미사 또는 하위 문자열 쿼리를 활성화합니다.
이러한 쿼리 유형은 string
필드에만 적용됩니다. 동일한 필드 에서 prefixPreview
및 suffixPreview
를 모두 활성화 할 수 있지만 substringPreview
를 사용하는 경우 둘 다 활성화 할 수 없습니다.
경고
접두사, 접미사 및 하위 문자열 쿼리가 공개 미리 보기로 제공됨
Queryable Encryption 접두사, 접미사 및 하위 문자열 쿼리는 MongoDB 8.2의 공개 미리 보기에서 사용할 수 있습니다. 프로덕션 환경에서는 이러한 쿼리 유형을 활성화 하지 마세요. 공개 미리 보기 기능은 GA 기능 과 호환되지 않으며, 이러한 쿼리를 활성화 모든 컬렉션을 삭제해야 합니다.
prefixPreview
쿼리는$encStrStartsWith
및$encStrNormalizedEq
집계 표현식을 활성화 .suffixPreview
쿼리는$encStrEndsWith
및$encStrNormalizedEq
집계 표현식을 활성화 .substringPreview
쿼리는$encStrContains
및$encStrNormalizedEq
집계 표현식을 활성화 .
queries
객체 추가하고queryType
를"prefixPreview"
,"suffixPreview"
또는"substringPreview"
로 설정하다 .{ path: "myDocumentStringField", bsonType: "string", queries: { queryType: "substringPreview" } } 다음 필드를 설정합니다.
보안 및 성능에 미치는 영향에 대한 자세한 내용은 최적의 검색 및 저장을 위한 암호화된 필드 구성을 참조하세요.
필드유형설명integer
substringPreview
쿼리 전용. 하위 문자열 인덱스 필드 에 허용되는 최대 길이입니다.integer
쿼리 에 허용되는 최소 접두사/접미사/하위 문자열 길이입니다.
integer
쿼리 에 허용되는 최대 접두사/접미사/하위 문자열 길이입니다.
주제: 이 설정은 쿼리 성능에 큰 영향을 미칩니다. 가능하면 제한하세요.
부울
선택 사항. 쿼리에서 대소문자를 구분하는지 여부. 기본값은
true
입니다.부울
선택 사항. 쿼리가 발음 부호를 구분하는지 여부. 기본값은
true
입니다.{ path: "myDocumentStringField", bsonType: "string", queries: { "queryType": "substringPreview", "strMaxLength": 30, "strMinQueryLength": 1, "strMaxQueryLength": 20, "caseSensitive": false } }
예시
이 예시 에서는 병원 데이터에 대한 암호화 스키마 를 생성하는 방법을 보여줍니다.
개인 식별 정보(PII), 신용 카드 정보 및 민감한 의료 정보가 포함된 다음 문서를 고려해 보세요.
{ "firstName": "Jon", "lastName": "Snow", "patientId": 12345187, "address": "123 Cherry Ave", "medications": [ "Adderall", "Lipitor" ], "patientInfo": { "ssn": "921-12-1234", "billing": { "type": "visa", "number": "1234-1234-1234-1234" } } }
PII와 민감한 의료 정보를 안전하게 보호하기 위해 이 암호화 스키마 는 관련 필드를 추가합니다.
const encryptedFieldsObject = { fields: [ { path: "patientId", bsonType: "int" }, { path: "patientInfo.ssn", bsonType: "string" }, { path: "medications", bsonType: "array" }, { path: "patientInfo.billing", bsonType: "object" } ] }
queries
속성 을 추가하면 patientId
및 patientInfo.ssn
필드를 쿼리할 수 있습니다. 이 예시 에서는 동일성 쿼리를 활성화합니다.
const encryptedFieldsObject = { fields: [ { path: "patientId", bsonType: "int", queries: { queryType: "equality" } }, { path: "patientInfo.ssn", bsonType: "string", queries: { queryType: "equality" } }, { path: "medications", bsonType: "array" }, { path: "patientInfo.billing", bsonType: "object" }, ] }