명시적(수동) 클라이언트 측 필드 레벨 암호화
개요
MongoDB 4.2+ 호환 드라이버, mongosh
및 MongoDB 4.2 이상 레거시 mongo
shell 은 특정 데이터 암호화 키 및 암호화 알고리즘 을 사용하여 필드를 명시적으로 암호화하거나 해독할 수 있도록 지원 합니다.
애플리케이션은 드라이버 암호화 라이브러리를 통해 암호화/복호화 로직을 포함하도록 읽기 및 쓰기 작업 구성과 관련된 모든 코드를 수정해야 합니다. 애플리케이션은 작업별로 암호화/복호화에 적합한 데이터 암호화 키를 선택할 책임이 있습니다.
mongosh
은(는) 명시적 암호화 및 암호 해독을 수행하기 위해 다음과 같은 메서드를 제공합니다.
MongoDB 4.2+ 호환 드라이버에는 명시적 클라이언트 사이드 필드 수준 암호화 를 수행하기 위한 특정 구문이 있습니다. 클라이언트 사이드 필드 수준 암호화 를 지원 하는 4.2+ 호환 드라이버의 전체 목록은 드라이버 호환성 표 를 참조하세요. 클라이언트 사이드 필드 수준 암호화 수행에 대한 구체적인 지침은 선호하는 운전자 의 설명서를 참조하세요.
mongosh
에서 실행된 다음 작업은 쓰기 작업의 일부로 taxid
필드를 명시적으로 암호화합니다.
clientEncryption = encryptedClient.getClientEncryption() db.getSiblingDB("hr").getCollection("employees").insertOne({ "name" : "J. Doe", "taxid" : clientEncryption.encrypt( UUID("64e2d87d-f168-493c-bbdf-a394535a2cb9"), "123-45-6789", "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic" ) })
mongosh
에서 실행된 다음 작업은 읽기 작업의 일부로 taxid
필드 를 명시적으로 암호화합니다.
encrypt = encryptedClient.getClientEncryption() db.getSiblingDB("hr").getCollection("employees").findOne({ "taxid" : clientEncryption.encrypt( UUID("64e2d87d-f168-493c-bbdf-a394535a2cb9"), "123-45-6789", "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic" ) })
이러한 작업은 데이터베이스 연결 구성 에서 KMS 지정된 데이터 암호화 키 및 관련 고객 마스터 키에 액세스 수 있는 키 볼트 및 를 지정했다고 가정합니다.
암호화된 필드를 반환하는 읽기 작업의 경우shell 드라이버/ 이 암호화된 값을 보호하는 데shell 사용되는 키에 대한 액세스 권한으로 구성된 경우에만 드라이버/ 이 자동으로 암호화된 값을 해독 합니다.
명시적 클라이언트 측 필드 레벨 암호화 활성화
각 공식 MongoDB 4.2+ 호환 드라이버는 클라이언트 사이드 필드 수준 암호화 및 데이터 암호화 키 관리를 지원하기 위한 새로운 기능을 도입합니다. 명시적 클라이언트 사이드 필드 수준 암호화 구현에 대한 언어별 지침은 선호하는 드라이버의 설명서 를 참조하세요.
mongosh
는 Mongo()
메서드에 명시적 클라이언트 사이드 필드 수준 암호화를 사용하여 데이터베이스 연결을 인스턴스화하는 옵션을 추가합니다. 전체 예제 는 클라이언트 사이드 암호화가 활성화된 클러스터에 연결을 참조하세요.
명시적 클라이언트 사이드 필드 수준 암호화를 사용하려면 애플리케이션에서 데이터베이스 연결을 인스턴스화할 때 다음 구성 요소를 지정해야 합니다.
데이터 암호화 키의 Key Vault 입니다. 키 볼트는 원격 MongoDB cluster 또는 클라이언트 사이드 암호화됨 데이터를 저장하는 MongoDB cluster 에 있을 수 있습니다.
고객 마스터 키(CMK)를 관리하는 데 사용되는 지원되는 KMS(KMS) 제공자입니다. MongoDB는 지정된 CMK를 사용하여 모든 데이터 암호화 키를 키 볼트에 저장 하기 전에 암호화하고 메타데이터만 암호화하지 않은 상태로 남깁니다.
4.2+ 호환 드라이버,
mongosh
및 MongoDB 4.2 이상mongo
shell 레거시 KMS 은 보호된 필드를 암호화 및 해독 하거나 새 데이터 암호화 키를 생성하기 위해 에 액세스 해야 합니다.
서버측 필드 레벨 암호화 시행
MongoDB 4.2 서버 는 스키마 유효성 검사 를 사용하여 컬렉션 의 특정 필드에 암호화 를 시행하다 기능을 지원합니다. 컬렉션 유효성 검사 에 필드 에 대한 암호화 가 $jsonSchema
필요한 경우 명시적(수동) 필드 수준 암호화 를 수행하는 클라이언트는 해당 필드 를 해야 encrypt
합니다.
서버 사이드 클라이언트 사이드 필드 레벨 암호화 시행에 대한 전체 문서는 필드 레벨 암호화 스키마 시행을 참조하세요.