Queryable Encryption 제한
이 페이지의 내용
개요
Queryable Encryption 을 활성화하기 전에 이러한 제한 사항을 고려하세요. 일부 작업은 지원되지 않으며, 다른 작업은 다르게 동작합니다.
호환성 제한 사항은 호환성을 참조하세요.
보안 보장
경고
Queryable Encryption 은 환경에 지속적으로 액세스 하는 공격자나 데이터베이스 스냅샷과 함께 제공되는 쿼리 기록/로그를 모두 조회 할 수 있는 공격자가 아닌 데이터 유출로부터 보호합니다.
Queryable Encryption 을 사용할 때 동일성 및 범위 쿼리는 데이터베이스 스냅샷을 통해 공격자에 대해 유사한 보안을 제공합니다. 그러나 데이터베이스 스냅샷과 쿼리 정보 모두에 액세스 있는 공격자는 Queryable Encryption의 보안 보장 하는 범위를 벗어납니다. 이는 범위 쿼리의 경우 특히 조회되는 쿼리 기록이나 로그 수가 적은 경우에도 마찬가지입니다. 자세한 내용은 개요 백서에서6.1: 영구 모델 의 쿼리 범위를 참조하세요.
MongoDB 지원 제한 사항
컬렉션에서 Queryable Encryption를 사용하도록 설정하면 일부 진단 명령에서 필드가 삭제되고 쿼리 로그에서 일부 작업이 생략됩니다. 이로 인해 MongoDB 지원 엔지니어가 특히 쿼리 성능을 분석할 때 사용할 수 있는 데이터가 제한됩니다. 암호화된 컬렉션에 대한 작업의 영향을 측정하려면 타사 애플리케이션 성능 모니터링 도구를 사용하여 지표를 수집하십시오.
자세한 내용은 이 페이지의 편집 섹션을 참조하세요.
지원되는 작업
Queryable Encryption 은 명령, 쿼리 연산자, 업데이트 연산자, 집계 단계 및 집계 표현식의 하위 집합을 지원합니다. 지원되는 작업 목록은 Queryable Encryption 에 대해 지원되는 작업을 참조하세요.
수동 메타데이터 컬렉션 압축
메타데이터 컬렉션이 1GB를 초과하는 경우 메타데이터 컬렉션 압축을 수동으로 실행합니다. 압축은 암호화된 필드와 관련된 메타데이터 컬렉션의 크기를 줄이고 성능을 개선합니다.
수정하기 encryptedFieldsMap
MongoClient
에 전달된 encryptedFieldsMap
를 수정하지 마세요. 이로 인해 쿼리할 때 잘못된 동작이 예기치 않게 발생할 수 있습니다.
Queryable Encryption 은 MongoClient
생성자에 전달하는 EncryptionFieldsMap 구성의 필드 설정하다 를 암호화 합니다. 컬렉션 문서에 있는 encryptedFieldsMap
구성에서 이전 일반 텍스트 필드 를 지정하는 경우 encryptedFieldsMap
구성을 업데이트한 후에 삽입된 문서에 대해서만 해당 필드 에서 쿼리 할 수 있습니다.
For example, consider a database in which you have inserted documents with a plaintext streetAddress
field. Adding this field to encryptedFieldsMap
and performing subsequent inserts will insert the encrypted value of streetAddress
into the database. 운전자 는 특정 streetAddress
에 대한 향후 쿼리를 BinData
로 전송합니다. 결과적으로 원본 문서의 일반 텍스트 값은 향후 쿼리와 일치하지 않습니다.
_id 필드
Queryable Encryption는 MongoDB에서 자동 생성된 값에 의존하기 때문에 _id
필드를 암호화하도록 구성할 수 없습니다.
암호화된 필드 이름
암호화됨 필드 의 이름은 변경할 수 없습니다. 예를 예시 ssn
을(를) 암호화할 필드 로 지정하는 경우 필드 이름을 taxPayerID
로 $rename
할 수 없습니다.
쿼리 가능 필드 수정
encryptedFieldsMap
에서 컬렉션 을 만들 때 필드 에 지정한 쿼리 유형은 변경할 수 없습니다. 기존 필드 에 새 쿼리 유형을 활성화 할 수 없으며 기존 쿼리 유형을 변경할 수 없습니다.
편집
Queryable Encryption은 보안을 강화하기 위해 암호화된 컬렉션의 일부 진단 명령에서 필드를 삭제하고 쿼리 로그에서 특정 작업을 생략합니다. 암호화된 컬렉션은 encryptedFields
옵션이 있는 모든 컬렉션입니다.
쿼리 로그 및 데이터베이스 프로파일러 편집
아래의 CRUD 작업은 암호화된 컬렉션에서 실행할 때 느린 작업 쿼리 로그와 Database 프로파일러 system.profile
컬렉션에서 생략됩니다.
compactStructuredEncryptionData
명령cleanupStructuredEncryptionData
명령
명령 및 집계 단계 출력 편집
collStats
명령 및 $collStats
집계 단계.
Omit
"queryExecStats"
Omit
"latencyStats"
url
필드 만 포함하도록"WiredTiger"
(있는 경우)를 수정합니다.
currentOp
명령 및 $currentOp
집계 단계.
"command"
이후의 모든 필드를 생략합니다.첫 번째 요소인
$comment
및$db
만 포함하도록"command"
(을)를 수정합니다.
top
명령은 암호화됨 컬렉션의 컬렉션 이름만 반환합니다.
$planCacheStats
집계 단계에서는 작업이 정상적으로 캐시되더라도 암호화됨 컬렉션에 대한 작업을 생략합니다.
토폴로지 지원
복제본 세트 및 샤딩된 클러스터가 지원됩니다.
독립형 배포는 지원되지 않습니다.
세컨더리 읽기는 지원되지 않음
샤딩
메타데이터 컬렉션은 샤딩되어서는 안 됩니다.
샤드 키는 암호화된 필드일 수 없음
컬렉션
클라이언트 사이드 필드 레벨 암호화는 동일한 컬렉션에서 Queryable Encryption와 함께 사용할 수 없습니다.
Queryable Encryption은 클라이언트 사이드 필드 레벨 암호화로 암호화된 컬렉션으로부터 마이그레이션을 지원하지 않습니다. 문서를 해독하고 하나씩 삽입해야 합니다.
Queryable Encryption 은 암호화되지 않은 컬렉션 에서의 자동 마이그레이션 을 지원 하지 않습니다. 문서를 하나씩 삽입해야 합니다.
Queryable Encryption는 새 컬렉션만 지원합니다. 기존 컬렉션에 Queryable Encryption을 추가하거나 제거할 수 없습니다.
암호화된 필드가 있는 컬렉션의 이름은 변경할 수 없습니다.
Queryable Encryption 컬렉션을 생성할 때
jsonSchema
에encrypt
키워드가 포함된 경우jsonSchema
를db.createCollection()
으로 지정할 수 없습니다.jsonSchema에 암호화된 필드에 대한 유효성 검사가 포함되어 있지 않은 한
encryptedFields
(과)와jsonSchema
(을)를 모두db.createCollection()
(으)로 지정할 수 있습니다.
Queryable Encryption는 뷰, time series 컬렉션 또는 고정 사이즈 컬렉션을 지원하지 않습니다.
jsonSchema
유효성 검사는 비활성화할 수 없습니다.컬렉션이
encryptedFields
옵션을 사용하는 경우:validationLevel
을none
으로 설정할 수 없습니다.validationAction
을warn
으로 설정할 수 없습니다.
제거 collection
Queryable Encryption으로 구성되지 않은
MongoClient
컬렉션에서 컬렉션을 삭제해도 관련 메타데이터 컬렉션은 삭제되지 않습니다. 메타데이터 컬렉션을 삭제하기 전에 암호화된 필드가 있는 컬렉션을 삭제하면mongod
(이)가 경고를 로그합니다.
팁
Queryable Encryption 에 대해 구성된 MongoClient
가 있는 컬렉션 을 삭제하면 호환되는 드라이버는 관련 메타데이터 컬렉션도 삭제합니다.
컬렉션 생성
Queryable Encryption 을 사용하는 모든 컬렉션은 항상 명시적으로 생성하세요. 암시적 컬렉션 생성은 필요한 인덱스와 메타데이터 컬렉션을 생성하지 않으므로 쿼리 성능이 저하됩니다.
배열
Queryable Encryption 은 문서 배열 내의 필드에 대한 자동 암호화 를 지원 하지 않습니다.
조회수
애플리케이션은 자동 암호화 유효성 검사에 의존하여 암호화된 필드가 있는 컬렉션의 뷰에 대해 지원되지 않는 쿼리를 방지할 수 없습니다.
Queryable Encryption으로 암호화된 값을 포함하는 컬렉션의 뷰에 대한 쿼리는 기본 뷰 집계 파이프라인 또는 쿼리가 암호화된 필드를 참조하는 경우 예기치 않거나 잘못된 결과를 반환할 수 있습니다. Queryable Encryption으로 암호화된 값이 포함된 컬렉션에서 뷰를 만드는 경우 예기치 않거나 잘못된 결과가 발생할 위험을 줄이려면 암호화된 필드에 대한 작업을 피하세요.
뷰에 대한 자세한 내용은 뷰를 참조하세요.
데이터 정렬
Queryable Encryption은 사용자가 지정한 데이터 정렬 또는 컬렉션 기본 데이터 정렬을 무시합니다. 암호화는 필드 값을 가리고 정상적인 데이터 정렬 동작을 방지합니다. 암호화된 필드에 대한 데이터 정렬에 민감한 쿼리는 예기치 않거나 잘못된 결과를 반환할 수 있습니다.
데이터 정렬에 대한 자세한 내용은 데이터 정렬 문서에서 확인하세요.
쿼리 가능한 암호화 호환 드라이버에는 자동 암호화에 지원되는 작업 목록이 있습니다. 지원되지 않는 읽기 및 쓰기 작업의 경우 기본 지원 라이브러리는 컬렉션 카탈로그를 검사하여 기본 데이터 정렬을 식별할 수 없습니다. 따라서 애플리케이션은 데이터 정렬 기본값이 있는 암호화된 필드에 대한 쿼리를 방지하기 위해 Queryable Encryption 유효성 검사에 의존할 수 없습니다.
Unique Indexes
인덱스 키가 암호화된 필드를 지정하는 경우 고유 인덱스는 고유성을 보장할 수 없습니다.
Queryable Encryption은 같은 입력이라도 항상 다른 암호화된 값을 출력합니다. 서버는 해독된 값이 고유하지 않더라도 각 암호화된 값을 고유하게 간주합니다. 즉, 컬렉션이 필드에 인덱스 적용 고유 제약 조건을 사용하더라도 컬렉션에는 해당 필드에 대해 중복된 일반 텍스트 값이 있는 여러 문서가 포함될 수 있습니다.
Queryable Encryption 호환 드라이버는 자동 암호화를 위해 구성되며, 자동 암호화를 위한 일부 작업을 지원합니다. 지원되지 않는 읽기 및 쓰기 작업의 경우, 기본 라이브러리는 인덱스 카탈로그를 검사하여 주어진 필드를 고유한 것으로 식별할 수 없습니다. 애플리케이션은 무작위로 암호화된 필드에서 고유한 제약 조건 위반을 방지하기 위해 자동 암호화 유효성 검사에 의존할 수 없습니다.