Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ /

명시적(수동) 클라이언트 측 필드 레벨 암호화

이 페이지의 내용

  • 개요
  • 명시적 클라이언트 측 필드 레벨 암호화 활성화
  • 서버측 필드 레벨 암호화 시행

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+ 호환 드라이버는 클라이언트 사이드 필드 수준 암호화 및 데이터 암호화 키 관리를 지원하기 위한 새로운 기능을 도입합니다. 명시적 클라이언트 사이드 필드 수준 암호화 구현에 대한 언어별 지침은 선호하는 드라이버의 설명서 를 참조하세요.

mongoshMongo() 메서드에 명시적 클라이언트 사이드 필드 수준 암호화를 사용하여 데이터베이스 연결을 인스턴스화하는 옵션을 추가합니다. 전체 예제 는 클라이언트 사이드 암호화가 활성화된 클러스터에 연결을 참조하세요.

명시적 클라이언트 사이드 필드 수준 암호화를 사용하려면 애플리케이션에서 데이터베이스 연결을 인스턴스화할 때 다음 구성 요소를 지정해야 합니다.

  • 데이터 암호화 키의 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 합니다.

서버 사이드 클라이언트 사이드 필드 레벨 암호화 시행에 대한 전체 문서는 필드 레벨 암호화 스키마 시행을 참조하세요.

돌아가기

mongocryptd