제한 사항
읽기 및 쓰기 작업 지원
mongod
는 암호화됨 BinData
}만 저장하고 BinData
값에 대해 암호화됨 필드 를 지정하는 집계 표현식 또는 쿼리 연산자 를 적용합니다. 표현식 또는 연산자 가 BinData
필드를 지원 수 있지만, 해독된 값에 대해 동일한 표현식 또는 연산자 를 실행하는 것과 비교할 때 결과 값이 부정확하거나 예기치 않을 수 있습니다. 표현식 또는 연산자 가 BinData
값을 지원 하지 않으면 mongod
에서 오류가 발생합니다.
예를 들어, 결정론적으로 암호화된 정수 Salary
을 생각해 보세요. 쿼리는 Salary
가 100000
보다 큰 문서를 필터링합니다. 애플리케이션이 쿼리를 실행하기 전에 결정론적 암호화를 사용하여 쿼리 값을 명시적으로(수동으로) 암호화합니다. mongod
는 100000
의 암호화된 BinData
값을 각 문서에 저장된 암호화된 BinData
값과 비교합니다. 작업이 성공적으로 반환되는 동안 BinData
값을 비교하면 해독된 정수 값을 비교한 결과와 다른 결과가 반환될 수 있습니다.
자동 클라이언트 사이드 필드 수준 암호화는 암호화된 필드에 대해 실행될 때 부정확하거나 예기치 않은 결과를 반환하는 읽기 또는 쓰기 작업을 거부합니다. 전체 문서 는 자동 필드 레벨 암호화를 통한 읽기/쓰기 지원을 참조하세요. 명시적(수동) 암호화를 수행하는 애플리케이션은 암호화된 필드에 대해 읽기/쓰기 작업을 실행하기 위한 지침으로 링크된 페이지를 참조할 수 있습니다.
조회수
클라이언트 사이드 필드 수준 암호화 값이 포함된 컬렉션의 뷰 에 대한 쿼리는 기본 뷰 집계 파이프라인 또는 쿼리가 암호화된 필드를 참조하는 경우 예기치 않거나 잘못된 결과를 반환할 수 있습니다. 클라이언트 사이드 필드 수준에서 암호화된 값이 포함된 컬렉션에 뷰를 만드는 경우 예기치 않거나 잘못된 결과가 발생할 위험을 줄이기 위해 암호화된 필드에서 작업하지 않도록 합니다.
자동 클라이언트 사이드 필드 수준 암호화 를 위해 구성된 4.2+ 호환 드라이버에는 지원되지 않는 읽기 및 쓰기 (write) 작업에 대한 유효성 검사 가 있지만, 기본 지원 라이브러리는 뷰 카탈로그를 인트로스펙션하여 지정된 컬렉션 을 뷰로 식별할 수 없습니다. 따라서 애플리케이션은 자동 필드 수준 암호화 유효성 검사 에 의존하여 암호화됨 필드가 있는 컬렉션의 뷰에 대해 지원되지 않는 쿼리를 방지할 수 없습니다.
암호화된 값이 포함된 collection에 대한 뷰를 쿼리하기 위해 명시적(수동) 암호화를 사용하는 애플리케이션의 경우, 암호화된 필드에 대해 실행될 때 정상적인 동작 이 알려진 쿼리 연산자 만을 사용하여 쿼리를 구성하는 것이 좋습니다.
데이터 정렬
클라이언트 사이드 필드 수준 암호화 는 사용자 지정 데이터 정렬 또는 컬렉션 기본값 데이터 정렬 을 준수하지 않습니다. 필드 수준 암호화 는 필드 값을 숨기고 정상적인 데이터 정렬 동작을 방지합니다. 암호화됨 필드에 대한 데이터 정렬에 민감한 쿼리는 예기치 않거나 잘못된 결과를 반환할 수 있습니다.
자동 클라이언트 사이드 필드 수준 암호화 를 위해 구성된 4.2+ 호환 드라이버에는 지원되지 않는 읽기 및 쓰기 (write) 작업에 대한 유효성 검사 가 있지만 기본 지원 라이브러리는 컬렉션 카탈로그를 자체 검사하여 기본값 데이터 정렬을 식별할 수 없습니다. 따라서 애플리케이션은 자동 필드 수준 암호화 유효성 검사 에 의존하여 데이터 정렬 기본값으로 암호화됨 필드에 대한 쿼리를 방지할 수 없습니다.
Unique Indexes
Unique indexes 인덱스 키가 무작위로 암호화된 필드를 지정하는 경우 고유성을 보장 할 수 없습니다 .
무작위 알고리즘을 사용하여 암호화된 필드는 특정 입력이 주어지면 항상 다른 암호화된 값을 생성합니다. 서버는 해독된 값 자체가 고유하지 않더라도 암호화된 각 값을 고유한 것으로 간주합니다. 따라서 컬렉션에는 인덱스 적용 고유 제약 조건이 있는 필드에 대해 해독된 값이 중복된 여러 문서가 포함될 수 있습니다.
자동 클라이언트 사이드 필드 수준 암호화를 위해 구성된 4.2+ 호환 드라이버에는 지원되지 않는 읽기 및 쓰기 작업에 대한 유효성 검사 가 있지만, 기본 지원 라이브러리는 인덱스 카탈로그를 검사하여 지정된 필드를 고유한 것으로 식별할 수 없습니다. 따라서 애플리케이션은 무작위로 암호화된 필드에 대한 고유 제약 조건 위반을 방지하기 위해 자동 필드 수준 암호화 유효성 검사에 의존할 수 없습니다.
샤드 키
암호화된 필드에 샤드 키 를 지정 하거나 기존 샤드 키의 필드를 암호화하면 예기치 않거나 잘못된 샤딩 동작이 발생할 수 있습니다.
자동 클라이언트 사이드 필드 수준 암호화 를 위해 구성된 4.2+ 호환 드라이버에는 지원되지 않는 읽기 및 쓰기 (write) 작업에 대한 유효성 검사 가 있지만, 기본 지원 라이브러리는 샤딩 카탈로그 메타데이터 를 인트로스펙션하여 샤드 키 필드를 식별할 수 없습니다. 따라서 애플리케이션은 샤드 키 필드의 암호화 를 방지하기 위해 자동 필드 수준 암호화 유효성 검사 에 의존할 수 없습니다.
읽기/쓰기 쿼리 지원
자동 클라이언트 사이드 필드 수준 암호화 는 명령, 쿼리 연산자, 업데이트 연산자, 집계 단계 및 집계 표현식의 하위 집합을 지원합니다. 전체 문서 는 자동 필드 레벨 암호화 를 통한 읽기/쓰기 지원을 참조하세요.