이 작업에 대하여
암호화됨 필드를 쿼리 가능하게 만들려면 암호화 스키마 를 만듭니다. 이 스키마 는 쿼리 가능한 필드와 허용되는 쿼리 유형을 정의합니다. 자세한 내용은 암호화된 필드 및 활성화된 쿼리를 참조하세요.
중요
Queryable Encryption 은 동일성 및 범위 쿼리를 지원합니다. 하나의 쿼리 유형에 대해서만 필드 를 구성할 수 있습니다.
시작하기 전에
암호화됨 필드를 쿼리 가능하게 만들 때는 성능과 보안을 고려하세요. 각 구성 옵션이 이에 미치는 영향에 대한 자세한 내용 은 최적의 검색 및 저장을 위한 암호화된 필드 구성을 참조하세요.
와 함께 공개 미리 보기 접두사, 접미사 또는 하위 mongosh 문자열 쿼리를 사용하려면 자동 암호화 8 2 mongosh 공유 라이브러리. 이상을 별도로 다운로드 다음 라이브러리 경로를 로 지정해야 합니다. } --cryptSharedLibPath 옵션을 사용하여 .
단계
암호화할 필드를 지정합니다.
필드 배열 내의 문서 에
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" } } 다음 필드를 설정합니다.
필드유형설명필드 와 동일
bsonTypebsonType가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" }, ] }