문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

KMIP로 자동 Queryable Encryption 사용

이 페이지의 내용

  • 개요
  • 시작하기 전에
  • KMS 설정
  • KMIP 호환 키 제공자 구성
  • 인증서 지정
  • 애플리케이션 생성
  • 애플리케이션 변수 할당
  • 암호화된 컬렉션 만들기
  • 암호화된 필드가 있는 문서 삽입하기
  • 암호화된 필드에 대한 쿼리
  • 자세히 알아보기

이 가이드에서는 MongoDB Queryable Encryption 기능을 구현하여 문서 필드를 자동으로 암호화 및 복호화하고 키 관리를 위해 Key Management Interoperability Protocol (KMIP) 호환 키 제공자를 사용하는 애플리케이션을 빌드하는 방법을 보여줍니다.

이 가이드의 단계를 완료하면 다음과 같은 내용이 표시됩니다:

  • KMIP호환 키 제공자가 managed 고객 마스터 키

  • 고객 마스터 키를 사용하여 암호화된 필드가 있는 문서를 삽입하는 작동하는 클라이언트 애플리케이션

고객 마스터 키

고객 마스터 키에 대해 자세히 알아보려면 키 및 키 볼트 설명서를 참조하세요.

이 가이드의 코드를 완료하고 실행하려면 설치 요구 사항 페이지에 표시된 대로 개발 환경을 설정해야 합니다.

참조: 전체 적용

이 샘플 애플리케이션의 전체 코드를 보려면 프로그래밍 언어에 해당하는 탭을 선택하고 제공된 링크를 따라가세요. 각 샘플 애플리케이션 리포지토리에는 환경을 설정하고 애플리케이션을 실행하는 방법을 배우는 데 사용할 수 있는 README.md 파일이 포함되어 있습니다.

1

MongoDB 드라이버 클라이언트를 KMIP호환 키 제공자에 연결하려면 클라이언트의 TLS 인증서를 허용하도록 KMIP호환 키 제공자를 구성해야 합니다.

클라이언트 인증서를 수락하는 방법에 대한 자세한 내용은 KMIP호환 키 제공자의 설명서를 참조하세요.

2

클라이언트는 TLS를 통해 KMIP호환 키 제공자에 연결하고 KMIP호환 키 제공자가 수락하는 클라이언트 인증서를 제시해야 합니다.

1

이 튜토리얼의 코드 샘플에서는 다음 변수를 사용하여 Queryable Encryption 워크플로를 수행합니다.

중요

키 볼트 컬렉션 네임스페이스 권한

키 볼트 컬렉션은 encryption.__keyVault 네임스페이스에 있습니다. 애플리케이션이 MongoDB에 연결하는 데 사용하는 데이터베이스 사용자에게 이 네임스페이스에 대한 읽기/쓰기 권한이 있는지 확인합니다.

2
1

다음 구조로 KMIP 호환 키 제공자의 엔드포인트를 포함하는 변수를 생성합니다.

2

다음 코드 예제에 표시된 대로 빈 객체를 만듭니다. 이렇게 하면 KMIP호환 키 제공자가 새 고객 마스터 키를 생성하라는 메시지가 표시됩니다.

3

참고

자동 암호화 옵션

자동 암호화 옵션은 자동 암호화 공유 라이브러리에 구성 정보를 제공하여 암호화된 필드에 액세스할 때 애플리케이션의 동작을 수정합니다.

자동 암호화 공유 라이브러리에 대해 자세히 알아보려면 Queryable Encryption을 위한 자동 암호화 공유 라이브러리 페이지를 참조하세요.

4

컬렉션의 데이터를 암호화하고 해독하는 데 사용되는 클라이언트를 만들려면 연결 URI와 자동 암호화 옵션을 사용하여 새 MongoClient 를 인스턴스화합니다.

5

필드를 암호화하려면 암호화 스키마에 추가합니다. 필드에서 쿼리를 활성화하려면 "queries" 속성을 추가합니다. 다음과 같이 암호화 스키마를 생성합니다.

참고

이전 코드 샘플에서는 "ssn" 및 "billing" 필드가 모두 암호화되지만 "ssn" 필드만 쿼리할 수 있습니다.

6

ClientEncryption 을(를) 인스턴스화하여 암호화 헬퍼 메서드에 대한 API에 액세스합니다.

3
4

다음 코드 샘플은 암호화된 필드에서 찾기 쿼리를 실행하고 해독된 데이터를 출력합니다.

이전 코드 샘플의 출력은 다음과 유사해야 합니다.

{
"_id": {
"$oid": "648b384a722cb9b8392df76a"
},
"name": "Jon Doe",
"record": {
"ssn": "987-65-4320",
"billing": {
"type": "Visa",
"number": "4111111111111111"
}
},
"__safeContent__": [
{
"$binary": {
"base64": "L1NsYItk0Sg+oL66DBj6IYHbX7tveANQyrU2cvMzD9Y=",
"subType": "00"
}
}
]
}

경고

__safeContent__ 필드 수정 금지

__safeContent__ 필드는 Queryable Encryption에 필수적입니다. 이 필드의 내용은 수정하지 마세요.

Queryable Encryption의 작동 방식을 알아보려면 기본 사항을 참조하세요.

이 가이드에 언급된 주제에 대해 자세히 알아보려면 다음 링크를 참조하세요:

  • Queryable Encryption 구성 요소에 대한 자세한 내용은 참조 페이지에서 확인하세요.

  • 키 및 키 볼트 페이지에서 고객 마스터 키와 데이터 암호화 키가 어떻게 작동하는지 알아보세요.

  • KMS 제공자가 Queryable Encryption 키를 관리하는 방법은 KMS 제공자 페이지에서 확인하세요.

← GCP에서 자동 Queryable Encryption 사용