Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / / / /

암호화 스키마 만들기

이 페이지의 내용

  • 이 작업에 대하여
  • 시작하기 전에
  • 단계
  • JSON 암호화 스키마 문서를 생성합니다.
  • 암호화할 필드를 지정합니다.
  • 원하는 필드에서 동등성 쿼리를 활성화합니다.
  • 원하는 필드에서 범위 쿼리를 활성화합니다.
  • 예제

암호화됨 필드를 쿼리 가능하게 만들려면 암호화 스키마 를 만듭니다. 이 스키마 는 쿼리 가능한 필드와 허용되는 쿼리 유형을 정의합니다. 자세한 내용은 암호화된 필드 및 활성화된 쿼리를 참조하세요.

중요

Queryable Encryption 은 동일성 및 범위 쿼리를 지원합니다. 하나의 쿼리 유형에 대해서만 필드 를 구성할 수 있습니다.

암호화됨 필드를 쿼리 가능하게 만들 때는 성능과 보안을 고려하세요. 각 구성 옵션이 이에 미치는 영향에 대한 자세한 내용 은 최적의 검색 및 저장을 위한 암호화된 필드 구성을 참조하세요.

1

중첩된 fields 배열과 함께 encryptedFieldsObject 를 포함합니다:

const encryptedFieldsObject = {
fields: []
}
2
  1. 필드 배열 내의 문서 에 pathbsonType 문자열을 추가합니다.

    const encryptedFieldsObject = {
    fields: [
    {
    path: "myDocumentField",
    bsonType: "int"
    }
    ]
    }

    중요

    _id 필드를 제외한 모든 필드를 암호화하도록 지정할 수 있습니다.

  2. 명시적 암호화 를 사용하는 경우 DEK ID 가 있는 keyId 필드 를 추가합니다.

    {
    path: "myDocumentField",
    bsonType: "int",
    keyId: "<unique data encryption key>"
    }

    자동 암호화를 사용하면 MongoDB는 각 필드에 대한 암호화 키를 생성합니다. 클라이언트에서 AutoEncryptionSettings 를 구성한 다음 createEncryptedCollection 헬퍼 메서드를 사용하여 컬렉션을 만듭니다.

3

이렇게 하면 $eq, $ne, $in$nin 연산자를 사용하여 쿼리할 수 있습니다.

queries 객체 를 추가하고 queryType"equality" 로 설정하다 합니다.

{
path: "myDocumentField",
bsonType: "int",
queries: { queryType: "equality" }
}
4

이렇게 하면 $lt, $lte, $gt$gte 연산자를 사용하여 쿼리할 수 있습니다.

다음 옵션이 보안 및 성능에 미치는 영향에 대한 자세한 내용 은 최적의 검색 및 저장을 위한 암호화된 필드 구성을 참조하세요.

  1. queries 객체 를 추가하고 queryType"range" 로 설정하다 합니다.

    {
    path: "myDocumentRangeField",
    bsonType: "int",
    queries: { queryType: "range" }
    }
  2. 다음 필드를 설정합니다.

    필드
    유형
    설명
    필드 와 동일 bsonType

    bsonTypedecimal 또는 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 속성을 추가하면 patientIdpatientInfo.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"
},
]
}

돌아가기

필드 & 쿼리