이 작업에 대하여
암호화됨 필드를 쿼리 가능하게 만들려면 암호화 스키마 를 만듭니다. 이 스키마 는 쿼리 가능한 필드와 허용되는 쿼리 유형을 정의합니다. 자세한 내용은 암호화된 필드 및 활성화된 쿼리를 참조하세요.
중요
Queryable Encryption 은 동일성 및 범위 쿼리를 지원합니다. 하나의 쿼리 유형에 대해서만 필드 를 구성할 수 있습니다.
시작하기 전에
암호화됨 필드를 쿼리 가능하게 만들 때는 성능과 보안을 고려하세요. 각 구성 옵션이 이에 미치는 영향에 대한 자세한 내용 은 최적의 검색 및 저장을 위한 암호화된 필드 구성을 참조하세요.
To use the Public Preview prefix, suffix, or substring queries with mongosh, you must separately download the Automatic Encryption Shared Library 8.2 or higher, then specify the library path to mongosh using the --cryptSharedLibPath option.
단계
암호화할 필드를 지정합니다.
필드 배열 내의 문서 에
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" }, ] }