Docs Menu
Docs Home
/
데이터베이스 매뉴얼
/ / / / /

암호화 스키마 만들기

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

중요

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.

1

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

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

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

    중요

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

  2. 선택 사항으로 keyId 필드 DEK ID 로 설정하다 .

    중요

    키 ID는 고유해야 하며, 그렇지 않으면 서버 오류를 반환합니다.

    클라이언트 에서 AutoEncryptionSettings 를 구성하면 createEncryptedCollection 헬퍼 메서드를 사용하여 키를 자동으로 만들 수 있습니다.

    {
    path: "myDocumentField",
    bsonType: "int",
    keyId: "<unique data encryption key>"
    }
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
    }
    }
5

이러한 쿼리 유형은 string 필드에만 적용됩니다. 동일한 필드 에서 prefixPreviewsuffixPreview 를 모두 활성화 할 수 있지만 substringPreview를 사용하는 경우 둘 다 활성화 할 수 없습니다.

경고

접두사, 접미사 및 하위 문자열 쿼리가 공개 미리 보기로 제공됨

Queryable Encryption 접두사, 접미사 및 하위 문자열 쿼리는 MongoDB 8.2의 공개 미리 보기에서 사용할 수 있습니다. 프로덕션 환경에서는 이러한 쿼리 유형을 활성화 하지 마세요. 공개 미리 보기 기능은 GA 기능 과 호환되지 않으며, 이러한 쿼리를 활성화 모든 컬렉션을 삭제해야 합니다.

  1. queries 객체 추가하고 queryType"prefixPreview", "suffixPreview" 또는 "substringPreview"로 설정하다 .

    {
    path: "myDocumentStringField",
    bsonType: "string",
    queries: { queryType: "substringPreview" }
    }
  2. 다음 필드를 설정합니다.

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

    필드
    유형
    설명

    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 속성 을 추가하면 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"
},
]
}

돌아가기

필드 & 쿼리

이 페이지의 내용