암호화 스키마 만들기
이 페이지의 내용
이 작업에 대하여
암호화됨 필드를 쿼리 가능하게 만들려면 암호화 스키마 를 만듭니다. 이 스키마 는 쿼리 가능한 필드와 허용되는 쿼리 유형을 정의합니다. 자세한 내용은 암호화된 필드 및 활성화된 쿼리를 참조하세요.
중요
Queryable Encryption 은 동일성 및 범위 쿼리를 지원합니다. 하나의 쿼리 유형에 대해서만 필드 를 구성할 수 있습니다.
시작하기 전에
암호화됨 필드를 쿼리 가능하게 만들 때는 성능과 보안을 고려하세요. 각 구성 옵션이 이에 미치는 영향에 대한 자세한 내용 은 최적의 검색 및 저장을 위한 암호화된 필드 구성을 참조하세요.
단계
암호화할 필드를 지정합니다.
필드 배열 내의 문서 에
path
및bsonType
문자열을 추가합니다.const encryptedFieldsObject = { fields: [ { path: "myDocumentField", bsonType: "int" } ] } 중요
_id
필드를 제외한 모든 필드를 암호화하도록 지정할 수 있습니다.명시적 암호화 를 사용하는 경우 DEK ID 가 있는
keyId
필드 를 추가합니다.{ path: "myDocumentField", bsonType: "int", keyId: "<unique data encryption key>" } 팁
자동 암호화를 사용하면 MongoDB는 각 필드에 대한 암호화 키를 생성합니다. 클라이언트에서
AutoEncryptionSettings
를 구성한 다음createEncryptedCollection
헬퍼 메서드를 사용하여 컬렉션을 만듭니다.
원하는 필드에서 범위 쿼리를 활성화합니다.
이렇게 하면 $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 } }
예시
이 예시 에서는 병원 데이터에 대한 암호화 스키마 를 생성하는 방법을 보여줍니다.
개인 식별 정보(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" }, ] }