사용 중 암호화 접근 방식 선택
이 페이지의 내용
MongoDB 는 사용 중 암호화 Queryable Encryption 과 CSFLE( 클라이언트 측 필드 레벨 암호화 )의 두 가지 접근 방식을 제공합니다. 두 접근 방식 중 하나를 사용할 때는 자동 암호화와 명시적 암호화 중에서 선택할 수도 있습니다.
Queryable Encryption 및 CSFLE 정보
Queryable Encryption과 CSFLE(클라이언트 측 필드 레벨 암호화)를 모두 사용하면 클라이언트 애플리케이션이 네트워크를 통해 데이터를 전송하기 전에 암호화할 수 있습니다. 민감한 데이터는 클라이언트에 의해 투명하게 암호화되고 해독되며 암호화된 형태로만 서버와 주고 받을 수 있습니다.
기능을 자세히 비교하려면 Queryable Encryption 기능 및 CSFLE 기능을 참조하세요.
고려 사항
Queryable Encryption 또는 CSFLE를 사용하는 애플리케이션 을 구현할 때는 이 섹션의 보안 고려 사항을 검토 하세요.
각 접근 방식의 제한 사항은 Queryable Encryption 제한 사항 또는 CSFLE 제한 사항을 참조하세요.
MongoDB 서버 및 운전자 버전 호환성은 호환성을 참조하세요.
보안 고려 사항
CSFLE 및 Queryable Encryption 은 공격자에 대해 고객 마스터 키 및 데이터 암호화 키에 액세스 을 보장 하지 않습니다.
CSFLE 및 Queryable Encryption 은 암호화됨 데이터가 포함된 컬렉션에 대한 임의의 쓰기 (write) 액세스 을 가진 공격자에 대해 어떠한 보장 도 제공하지 않습니다.
MongoDB는 스키마 유효성 검사를 사용하여 컬렉션의 특정 필드에 암호화를 시행하는 기능을 지원합니다. 클라이언트 사이드 스키마가 없으면 클라이언트는 컬렉션에 대한 서버 사이드 스키마를 다운로드하여 암호화할 필드를 결정합니다. 이 문제를 방지하려면 클라이언트 사이드 스키마 유효성 검사를 사용하세요.
CSFLE 및 Queryable Encryption 은 스키마 스키마 스키마 되지 않았음을 신뢰한다는 의미입니다. 공격자가 서버 를 손상시키는 경우 이전에 암호화됨 필드 에 더 이상 암호화 레이블이 지정되지 않도록 스키마 를 수정할 수 있습니다. 이렇게 하면 클라이언트 가 해당 필드 에 대한 일반 텍스트 값을 전송합니다.
클라이언트 및 서버 사이드 스키마에 대한 CSFLE 구성의 예는 CSFLE 서버 사이드 필드 레벨 암호화 시행을 참조하세요.
Queryable Encryption 및 CSFLE 사용
애플리케이션 에서 Queryable Encryption, 클라이언트 측 필드 레벨 암호화 또는 둘 다를 사용할 수 있습니다. 그러나 동일한 컬렉션 에서 두 가지 접근 방식을 모두 사용할 수는 없습니다.
다음 시나리오에서는 Queryable Encryption 을 사용하는 것이 좋습니다.
새 애플리케이션 을 개발 중이며 MongoDB 의 최신 암호화 발전 기능을 사용하려고 합니다.
사용자가 암호화됨 데이터에 대해 범위 지정 , 접두사, 접미사 또는 하위 문자열 쿼리를 실행 것으로 예상합니다.
애플리케이션 은 사용자별 또는 테넌트별로 별도의 키를 요구하지 않고 지정된 필드 에 대해 단일 키를 사용할 수 있습니다.
다음과 같은 상황에서 CSFLE가 선호되는 솔루션이 될 수 있습니다.
애플리케이션 에서 이미 CSFLE를 사용하고 있습니다.
동일한 필드 에 대해 다른 키를 사용해야 합니다. 이는 테넌트를 분리하거나 사용자별 키를 사용할 때 일반적으로 발생합니다.
데이터 스키마 를 유연하게 조정하고 잠재적으로 암호화됨 필드를 더 추가할 수 있어야 합니다. Queryable Encryption 에 암호화됨 필드를 추가하려면 메타데이터 컬렉션과 인덱스를 다시 작성해야 합니다.
암호화된 필드 쿼리
Queryable Encryption 은 암호화됨 필드에 대한 동등성 및 범위 쿼리를 지원합니다. Queryable Encryption 을 사용한 접두사, 접미사 및 하위 문자열 쿼리에 대한 지원은 개발 중입니다.
클라이언트 측 필드 레벨 암호화는 결정론적으로 암호화된 필드에 대한 동일성 쿼리를 지원합니다.
지원되는 쿼리 연산자에 대한 자세한 내용은 Queryable Encryption 에 지원되는 쿼리 연산자 및 CSFLE 에 대해 지원되는 쿼리 연산자를 참조하세요. MongoDB 쿼리 연산자의 전체 목록은 쿼리 및 프로젝션 연산자를 참조하세요.
암호화 알고리즘
Queryable Encryption 의 새로운 암호화 알고리즘 은 동일한 입력에서 서로 다른 암호화됨 출력 값을 생성하는 구조화된 암호화 를 기반으로 하는 무작위 암호화 를 사용합니다.
Queryable Encryption에 대한 MongoDB의 접근 방식에 대한 자세한 내용은 Queryable Encryption 개요 를 참조하세요. 및 상태 비저장 문서 데이터베이스 암호화 체계의 설계 및 분석 생성합니다.
CSFLE 암호화 알고리즘 은 무작위 암호화 와 결정론적 암호화 를 모두 지원합니다. 그러나 결정론적으로 암호화됨 필드 쿼리 만 지원합니다. 결정론적 암호화 를 사용하면 지정된 입력 값이 항상 동일한 출력 값으로 암호화됩니다.
비공개 쿼리
MongoDB는 Queryable Encryption과 클라이언트 사이드 필드 레벨 암호화 모두에 대한 쿼리를 암호화하므로 서버에 일반 텍스트 문서나 쿼리 값에 대한 정보가 없습니다. Queryable Encryption을 사용하면 비공개 쿼리가 한 단계 더 나아가 로그와 메타데이터를 수정하여 쿼리 존재에 관한 정보를 스크러빙할 수 있습니다. 이를 통해 보다 강력한 개인정보보호 및 기밀성을 보장할 수 있습니다.
자동 암호화와 명시적 암호화 중 선택
자동 암호화 사용
자동 암호화 는 클라이언트 애플리케이션 작성 프로세스 를 간소화하므로 대부분의 상황에서 권장됩니다. 자동 암호화 을 사용하면 MongoDB 는 읽기 및 쓰기 (write) 작업에서 필드를 자동으로 암호화하고 해독합니다.
명시적 암호화 사용
명시적 암호화는 MongoDB 드라이버에 대한 컬렉션을 구성하고 코드를 작성할 때 복잡성이 증가하는 대신 보안에 대한 세분화된 제어를 제공합니다. 명시적 암호화를 사용하면 데이터베이스에서 수행하는 각 작업에 대해 문서의 필드를 암호화하는 방법을 지정하고 이 로직을 애플리케이션 전체에 포함할 수 있습니다.
자세한 내용 은 Queryable Encryption 을 사용한 명시적 암호화 또는 CSFLE를 사용한 명시적 암호화를 참조하세요.