개요
명시적 암호화는 MongoDB 드라이버에 대한 컬렉션을 구성하고 코드를 작성할 때 복잡성이 증가하는 대신 보안에 대한 세분화된 제어를 제공합니다. 명시적 암호화를 사용하면 데이터베이스에서 수행하는 각 작업에 대해 문서의 필드를 암호화하는 방법을 지정하고 이 로직을 애플리케이션 전체에 포함할 수 있습니다.
명시적 암호화는 다음 MongoDB 제품에서 사용할 수 있습니다.
MongoDB Community 서버
MongoDB Enterprise Advanced
MongoDB Atlas
명시적 암호화 사용
ClientEncryption 인스턴스 만들기
ClientEncryption 드라이버와 mongosh 에서 사용되는 추상화로, 명시적 암호화 와 관련된 키 볼트 컬렉션 및 KMS 작업을 캡슐화합니다.
ClientEncryption 인스턴스를 만들려면 다음을 지정합니다.
고객 마스터 키를 호스팅하는 KMS 제공자에 대한 액세스 권한으로 구성된
kmsProviders객체키 볼트 컬렉션의 네임스페이스
MongoDB Community 서버를 사용하는 경우
bypassQueryAnalysis옵션을True로 설정합니다.키 볼트 컬렉션에 액세스할 수 있는
MongoClient인스턴스
더 많은 ClientEncryption 옵션은 Queryable Encryption 을 위한 MongoClient 옵션을 참조하세요.
읽기 및 쓰기 작업에서 필드 암호화
읽기 및 쓰기 작업을 수행하기 전에 애플리케이션이 필드를 암호화하도록 애플리케이션 전체에서 읽기 및 쓰기 작업을 업데이트해야 합니다.
필드를 암호화하려면 ClientEncryption 인스턴스의 encrypt 메서드를 사용합니다. 다음을 지정합니다:
암호화할 값
사용된 알고리즘 :
Indexed,Unindexed또는Range데이터 암호화 키의 ID
경합 요인 (
Indexed또는Range알고리즘 을 사용하는 경우)Indexed또는Range알고리즘 을 사용하여 읽기 작업을 수행하는 경우 필드 에 정의된 쿼리 유형을 설정하다 합니다.range옵션 최소, 최대 (Range알고리즘 을 사용하는 경우)
알고리즘 선택
필드 에 queryType 를 지정하는 경우 Indexed 또는 Range 알고리즘 을 사용합니다.
Indexed 동등성 쿼리를 지원합니다. Range 은 범위 쿼리를 지원합니다. Indexed 및 Range 필드에는 서버 의 인덱스 가 필요합니다. 인덱스 는db.createCollection()에 encryptedFields 옵션을 지정하여 생성됩니다
참고
MongoDB 8.0부터 rangePreview Queryable Encryption 알고리즘 은 더 이상 사용되지 않으며 제거되었습니다. 대신 range 알고리즘 을 사용합니다.
자동 암호 해독
필드를 자동으로 해독하려면 MongoClient 인스턴스를 다음과 같이 구성합니다.
kmsProviders객체 지정키 볼트 컬렉션 지정
MongoDB Community 서버를 사용하는 경우
bypassQueryAnalysis옵션을True로 설정합니다.
참고
MongoDB Community 서버의 자동 암호 해독
자동 암호 해독은 MongoDB Community 서버에서 사용할 수 있습니다. 자동 암호화에는 MongoDB Enterprise 또는 MongoDB Atlas가 필요합니다.
서버측 필드 레벨 암호화 시행
컬렉션 의 특정 필드에 대한 암호화 를 시행하다 단계 입니다.
Indexed 및 Range 필드에는 서버 의 인덱스 가 필요합니다. 인덱스 는db.createCollection()에 encryptedFields 옵션을 지정하여 생성됩니다
MongoDB 인스턴스 가 특정 필드의 암호화 를 시행하는 경우, 명시적 암호화 를 사용하여 Queryable Encryption 을 수행하는 모든 클라이언트 는 지정된 대로 해당 필드를 암호화해야 합니다. 서버 측 Queryable Encryption 적용을 설정하다 하는 방법을 학습 보려면 암호화된 필드 및 활성화된 쿼리를 참조하세요.
자세히 알아보기
키 볼트 컬렉션, 데이터 암호화 키 및 고객 마스터 키에 대해 자세히 알아보려면 암호화 키 및 키 볼트를 참조하세요.
KMS 제공자 및 kmsProviders 객체에 대해 자세히 알아보려면 KMS 제공자를 참조하세요.