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

Queryable Encryption에 지원되는 작업

이 페이지의 내용

  • 다음을 사용하는 작업 BinData
  • 지원되는 BSON types 및 지원되지 않는 BSON types
  • CRUD
  • 지원되는 읽기 및 쓰기 명령
  • 지원되는 쿼리 연산자
  • 지원되지 않는 쿼리
  • 지원되는 업데이트 연산자
  • 교체 스타일 업데이트
  • 지원되지 않는 삽입 작업
  • 지원되지 않는 집계 단계
  • 지원되는 집계 단계
  • $lookup$graphLookup 동작
  • 지원되는 집계 표현식
  • 지원되지 않는 필드 유형

이 페이지에서는 Queryable Encryption 호환 드라이버에 지원되는 특정 데이터 유형, 명령, 쿼리 연산자, 업데이트 연산자, 집계 단계 및 집계 표현식을 설명합니다. 자동 암호화 를 사용하는 작업과 명시적 암호화 를 사용하는 작업의 동작을 간략하게 설명합니다.

참고

엔터프라이즈 기능

MongoDB Enterprise 및 MongoDB Atlas에서 자동 암호화 사용 가능

MongoDB 는 Queryable Encryption 으로 암호화됨 필드를 BinData 블롭으로 저장합니다. 암호화됨 BinData 값에 대해 실행된 읽기 및 쓰기 (write) 작업은 해독된 값에 대해 동일한 작업을 실행하는 것에 비해 예기치 않거나 잘못된 동작을 가질 수 있습니다. 특정 작업은 BinData 값에 대해 실행하면 오류가 반환되는 엄격한 BSON 유형 지원 이 있습니다.

Queryable Encryption 과 호환되는 공식 드라이버는 BinData 값을 지원 하지 않는 연산자 또는 표현식에 대한 읽기 및 쓰기 (write) 작업을 구문 분석합니다.

Queryable Encryption 은 다음을 제외한 모든 BSON types 에 대해 동일성 쿼리를 지원합니다.

  • double

  • decimal128

  • object

  • array

Queryable Encryption 은 BSON types 다음 에 대한 범위 쿼리를 지원합니다.

  • int: 32-비트 정수

  • long: 64-비트 정수

  • double: double (IEEE 754 바이너리64)

  • decimal: 10진수(IEEE 754 10진수128)

  • date: UTC DateTime (Int64)

  • Queryable Encryption 은 다중 문서 업데이트 또는 삭제 작업을 지원 하지 않습니다. 둘 이상의 업데이트 또는 삭제 작업이 있는 db.collection.updateMany()db.collection.bulkWrite() 는 지원되지 않습니다.

  • Queryable Encryption 은 db.collection.findAndModify() 인수를 제한합니다.

    • fields 허용되지 않습니다.

    • new false여야 합니다.

  • 업서트 작업을 수행할 때 필터의 암호화된 필드는 삽입에서 제외됩니다.

Queryable Encryption 호환 드라이버는 다음 명령을 사용하여 자동 암호화를 지원합니다.

지원되는 명령에 대해, 해당 명령이 지원되지 않는 연산자, 애그리게이션 단계 또는 애그리게이션 표현식을 사용하면 드라이버에서 오류를 반환합니다. 지원되는 연산자, 단계 및 표현식의 전체 목록은 다음 섹션을 참조하세요.

  • 지원되는 쿼리 연산자

  • 지원되는 업데이트 연산자

  • 지원되는 집계 단계

  • 지원되는 집계 표현식

다음 명령은 자동 암호화 가 필요하지 않습니다. 자동 암호화 를 위해 구성된 공식 드라이버는 이러한 명령을 mongod 에 직접 전달합니다.

자동 암호화를 위해 구성된 호환 드라이버를 통해 다른 명령을 실행하면 오류가 반환됩니다.

[1] 자동 암호화는 getMore 명령을 암호화하지 않지만 명령에 대한 응답에는 암호화된 필드 값이 포함될 수 있습니다.
  • 올바른 Queryable Encryption 옵션으로 구성된 애플리케이션은 해당 값을 자동으로 해독합니다.
  • 올바른 암호화 옵션이 없는 애플리케이션에는 암호화된 값이 표시됩니다.

자동 암호화 로 구성된 드라이버는 암호화됨 쿼리 가능 필드 에 대해 실행될 때 제한된 쿼리 연산자 설정하다 를 지원 합니다.

암호화되지 않은 필드 또는 지원되는 쿼리 유형으로 암호화된 필드를 쿼리하면 암호화된 데이터가 반환되고 클라이언트에서 해독됩니다.

Queryable Encryption 은 현재 none, equalityrange 쿼리 유형을 지원합니다. 쿼리 유형이 지정되지 않은 경우 기본값은 none 입니다. 쿼리 유형이 none 인 경우 필드 가 암호화됨 되어 클라이언트가 쿼리 할 수 없습니다.

중요

비교 지원

암호화된 필드와 일반 텍스트 값의 비교가 지원됩니다.

{$expr: {$eq: ["$encrypted1", "plaintext_value"]}}

한 암호화된 필드와 다른 암호화된 필드의 비교는 실패합니다.

{$expr: {$eq: ["$encrypted1", "$encrypted2"]}}

queryType: "equality" 에 대해 구성된 필드는 다음 표현식을 지원 합니다.

queryType: "range" 에 대해 구성된 필드는 다음 표현식을 지원 합니다.

암호화된 필드에 대해 다른 쿼리 연산자를 지정하는 쿼리는 오류를 반환합니다.

암호화됨 필드 를 null 또는 정규 표현식 과 비교하는 쿼리는 지원되는 쿼리 연산자 를 사용하더라도 항상 오류를 발생시킵니다.

Queryable Encryption 으로 구성된 MongoClient를 사용하는 경우, 다음 쿼리 연산자는 암호화되지 않은 필드 에 대해 실행되더라도 오류를 발생시킵니다.

자동 암호화하도록 구성된 드라이버는 암호화된 필드에 대해 실행될 때 다음 업데이트 연산자를 지원합니다.

암호화된 필드에 대해 다른 업데이트 연산자를 지정하는 업데이트는 오류를 반환합니다.

다음 동작을 가진 업데이트 작업은 지원되는 연산자 를 사용하더라도 오류가 발생합니다.

  • 업데이트 작업은 암호화된 경로 내부에 배열을 생성합니다.

  • 업데이트 작업은 집계 식 구문을 사용합니다.

암호화된 필드에 쿼리 필터 를 지정하는 업데이트 작업의 경우 쿼리 필터는 해당 필드에 지원되는 연산자 만 사용해야 합니다.

대체 스타일의 업데이트가 지원되지만, 대체 문서의 최상위 암호화된 필드 내에 Timestamp(0,0) 가 포함되어 있으면 Queryable Encryption 오류가 발생합니다. (0,0) 값은 mongod 에서 타임스탬프를 생성해야 함을 나타냅니다. mongod 은(는) 암호화된 필드를 생성할 수 없습니다.

자동 암호화를 위해 구성된 호환 드라이버는 다음 동작이 포함된 삽입 명령을 지원하지 않습니다.

  • 암호화된 필드에 연결된 Timestamp(0,0) 가 있는 문서를 삽입하는 중입니다. (0,0) 값은 mongod 에서 타임스탬프를 생성해야 함을 나타냅니다. mongod 는 암호화된 필드를 생성할 수 없으므로 결과 타임스탬프는 암호화되지 않습니다.

자동 암호화는 추가 컬렉션에서 읽거나 쓰는 애그리게이션 단계를 지원하지 않습니다. 이러한 단계는 다음과 같습니다.

자동 암호화를 위해 구성된 호환 드라이버는 다음 집계 파이프라인 단계를 지원합니다.

다른 단계를 지정하는 자동 암호화로 구성된 collection에서 작동하는 집계 파이프라인이 오류를 반환합니다.

지원되는 각 파이프라인 단계에서 MongoDB는 지원되는 파이프라인을 통과할 때 암호화해야 하는 필드를 추적하여 암호화 대상으로 표시합니다.

지원되는 각 단계에서는 지원되는 쿼리 연산자집계 표현식만 지정해야 합니다.

자동 암호화는 $lookup $graphLookup from collection이 집계가 실행되는 collection과 일치하는 경우에만 및 를 지원합니다. 다른 from 컬렉션을 참조하는 $lookup$graphLookup 단계는 오류를 반환합니다.

자동 암호화 는 다음과 같이 특정 컬렉션 과 관련이 없는 메타데이터 를 읽는 '연결 없는' 집계 메타데이터 소스를 지원 하지 않습니다.

결과에 민감한 정보가 포함될 수 있으므로 자동 암호화 는 $planCacheStats 단계를 지원 하지 않습니다.

암호화되지 않은 collection에 대해 Queryable Encryption이 활성화된 MongoClient 에서 $lookup 를 수행할 수 없습니다.

자동 암호화를 위해 구성된 호환 드라이버는 모든 동일성 쿼리 유형으로 암호화된 필드에 대해 다음 표현식을 지원합니다.

다른 모든 집계 표현식은 암호화된 필드에 대해 실행된 경우 오류를 반환합니다.

다음 동작을 가진 애그리게이션 단계는 지원되는 집계 표현식 을 사용하더라도 오류를 반환합니다.

표현식
거부된 동작
예시

이 표현식은 런타임까지 암호화 속성을 알 수 없는 필드를 지정하 후속 집계 단계에 해당 필드를 참조하는 표현식을 포함합니다.

$addFields : {
"valueWithUnknownEncryption" : {
$cond : {
if : { "$encryptedField" : "value" },
then : "$encryptedField",
else: "unencryptedValue"
}
}
},
{
$match : {
"valueWithUnknownEncryption" : "someNewValue"
}
}

표현식은 암호화된 필드를 참조하는 새 필드 생성 동일한 표현식의 해당 새 필드에서 작동합니다.

{
$eq : [
{"newField" : "$encryptedField"},
{"newField" : "value"
]
}

표현식은 비교 표현식 내에서 암호화된 필드의 접두사를 참조합니다.

{ $eq : [ "$prefixOfEncryptedField" , "value"] }

표현식의 결과는 암호화된 필드와 비교됩니다.

{
$eq : [
"$encryptedField" ,
{ $ne : [ "field", "value" ] }
]
}

표현식은 변수를 암호화된 필드에 바인딩하거나$$CURRENT 재바인딩을 시도합니다.

{
$let: {
"vars" : {
"newVariable" : "$encryptedField"
}
}
}

표현식의 첫 번째 인수 암호화된 필드이며

  • 표현식의 두 번째 인수가 배열 리터럴이 아닙니다 .

    -또는-

  • 표현식의 두 번째 인수는 암호화된 필드입니다.

{
$in : [
"$encryptedField" ,
"$otherEncryptedField"
]
}

자동 암호화하도록 구성된 드라이버는 다음 값 유형을 암호화해야 하는 읽기 또는 쓰기 작업을 지원하지 않습니다 .

Queryable Encryption은 이러한 값에 대한 유형 정보를 적절히 숨기지 않습니다.

Queryable Encryption 은 문서 배열 내의 필드에 대한 자동 암호화 를 지원 하지 않습니다.

Queryable Encryption은 암호화된 필드를 다음 값 유형과 비교하는 암호화된 필드에 대한 읽기 또는 쓰기 작업을 지원하지 않습니다.

  • array

  • decimal128

  • double

  • object

돌아가기

참조