개요
명시적 암호화는 MongoDB 드라이버에 대한 컬렉션을 구성하고 코드를 작성할 때 복잡성이 증가하는 대신 보안에 대한 세분화된 제어를 제공합니다. 명시적 암호화를 사용하면 데이터베이스에서 수행하는 각 작업에 대해 문서의 필드를 암호화하는 방법을 지정하고 이 로직을 애플리케이션 전체에 포함할 수 있습니다.
명시적 암호화는 다음 MongoDB 제품에서 사용할 수 있습니다.
MongoDB Community 서버
MongoDB Enterprise Advanced
MongoDB Atlas
명시적 암호화 사용
ClientEncryption 인스턴스 만들기
ClientEncryption is an abstraction used across drivers and mongosh that encapsulates the Key Vault collection and KMS operations involved in explicit encryption.
ClientEncryption 인스턴스를 만들려면 다음을 지정합니다.
고객 마스터 키를 호스팅하는 KMS 제공자에 대한 액세스 권한으로 구성된
kmsProviders객체키 볼트 컬렉션의 네임스페이스
MongoDB Community 서버를 사용하는 경우
bypassQueryAnalysis옵션을True로 설정합니다.키 볼트 컬렉션에 액세스할 수 있는
MongoClient인스턴스
더 많은 ClientEncryption 옵션 은 Queryable Encryption을 위한 MongoClient 옵션을 참조하세요.
읽기 및 쓰기 작업에서 필드 암호화
읽기 및 쓰기 작업을 수행하기 전에 애플리케이션이 필드를 암호화하도록 애플리케이션 전체에서 읽기 및 쓰기 작업을 업데이트해야 합니다.
필드를 암호화하려면 ClientEncryption 인스턴스의 encrypt 메서드를 사용합니다. 다음을 지정합니다:
암호화할 값
데이터 암호화 키의 ID
알고리즘
unindexed: 쿼리할 수 없는 암호화된 필드의 경우.indexed: 등가 쿼리를 지원합니다.range: 범위 쿼리 지원.string: 접두사, 접미사 및 하위 문자열 쿼리를 지원합니다.
선택한 알고리즘에 대한 매개변수입니다. 명시적 암호화는 암호화 스키마를 사용하지 않으므로 읽기 및 쓰기 (write) 작업 모두에 대해
encrypt을 호출하다 할 때마다 이러한 매개변수를 전달해야 합니다.읽기 작업은 지정된 알고리즘과 일치하는 queryType을 지정해야 합니다.
참고
indexed, range, string 알고리즘에는 서버의 인덱스가 필요합니다. 인덱스는 db.createCollection(). 동안 encryptedFields 옵션을 지정할 때 생성됩니다.
알고리즘 및 쿼리 유형
알고리즘 | queryType (읽기 작업) | 추가 매개변수 |
|---|---|---|
|
|
|
|
| |
|
| |
|
|
|
쓰기 (write) 작업의 경우, 동일한 호출에서 prefix 및 suffix 옵션을 지정하여 두 쿼리 유형 모두에 대해 필드를 인덱싱할 수 있습니다. substring를 prefix 또는 suffix와 함께 설정할 수 없습니다.
참고
MongoDB 9.0부터 text 알고리즘을 사용하는 prefixPreview, suffixPreview, substringPreview 쿼리 유형은 더 이상 사용되지 않고 제거됩니다. 대신 string 알고리즘과 함께 prefix, suffix, 또는 substring 쿼리 유형을 사용하세요.
자동 암호 해독
필드를 자동으로 해독하려면 MongoClient 인스턴스를 다음과 같이 구성합니다.
kmsProviders객체 지정키 볼트 컬렉션 지정
MongoDB Community 서버를 사용하는 경우
bypassQueryAnalysis옵션을True로 설정합니다.
참고
MongoDB Community 서버의 자동 암호 해독
자동 암호 해독은 MongoDB Community 서버에서 사용할 수 있습니다. 자동 암호화에는 MongoDB Enterprise 또는 MongoDB Atlas가 필요합니다.
서버측 필드 레벨 암호화 시행
컬렉션 의 특정 필드에 대한 암호화 를 시행하다 단계 입니다.
MongoDB 인스턴스 가 특정 필드의 암호화 를 시행하는 경우, 명시적 암호화 를 사용하여 Queryable Encryption 을 수행하는 모든 클라이언트 는 지정된 대로 해당 필드를 암호화해야 합니다. 서버 측 Queryable Encryption 적용을 설정하다 하는 방법을 학습 보려면 암호화된 필드 및 활성화된 쿼리를 참조하세요.
자세히 알아보기
키 볼트 컬렉션, 데이터 암호화 키 및 고객 마스터 키에 대해 자세히 알아보려면 암호화 키 및 키 볼트를 참조하세요.
KMS 제공자 및 kmsProviders 객체에 대해 자세히 알아보려면 KMS 제공자를 참조하세요.