Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / / /

KMS 제공자

이 페이지의 내용

  • 개요
  • 원격 키 관리 시스템을 사용하는 이유
  • 키 관리 시스템 작업
  • 고객 마스터 키 생성 및 저장
  • 데이터 암호화 키 생성 및 암호화
  • 지원되는 키 관리 서비스
  • Amazon Web Services KMS
  • Azure Key Vault
  • Google Cloud Platform KMS
  • KMIP
  • 로컬 키 제공자

사용 중 암호화 가 지원하는 키 관리 시스템(KMS) 제공자에 대해 알아보세요.

원격 키 managed 시스템을 사용하여 고객 마스터 키를 managed하면 로컬 파일 시스템을 사용하여 호스팅하는 것보다 다음과 같은 이점이 있습니다.

  • 액세스 감사를 통한 안전한 키 보관

  • 액세스 권한 문제 발생 위험 감소

  • 원격 클라이언트에 대한 키의 가용성 및 배포

  • 자동화된 키 백업 및 복구

  • 중앙 집중식 암호화 키 수명 주기 관리

또한 다음과 같은 KMS 제공자의 경우 KMS 가 데이터 암호화 키 를 원격으로 암호화 및 복호화하여 고객 마스터 키 가 Queryable Encryption 또는 CSFLE 지원 애플리케이션 에 노출되지 않도록 합니다.

  • Amazon Web Services KMS

  • Azure Key Vault

  • Google Cloud KMS

사용 중 암호화 에서 키 관리 시스템은 다음을 수행합니다.

  • 고객 마스터 키 생성 및 암호화

  • 애플리케이션에서 생성한 데이터 암호화 키를 암호화합니다.

  • 데이터 암호화 키 해독

고객 마스터 키 및 데이터 암호화 키에 학습 보려면 암호화 키 및 키 볼트를 참조하세요.

고객 마스터 키를 생성하려면 다음과 같이 고객 마스터 키를 생성하도록 키 관리 시스템을 구성합니다.

다이어그램

선호하는 에서 KMS CMK 를 생성하고 저장 하는 방법을 보여주는 튜토리얼을 보려면 자동 Queryable Encryption 암호화 튜토리얼 또는 CSFLE 자동 암호화 튜토리얼을 참조하세요.

데이터 암호화 키를 생성하려면 다음을 수행합니다.

  • Queryable Encryption 또는 CSFLE 지원 애플리케이션 에서 ClientEncryption 인스턴스 를 인스턴스화합니다.

    • 애플리케이션이 KMS 제공자로 인증하는 데 사용하는 자격 증명을 지정하는 kmsProviders 객체를 제공합니다.

  • 애플리케이션에서 ClientEncryption 객체의 CreateDataKey 메서드를 사용하여 데이터 암호화 키를 생성합니다.

    • KMS가 새 데이터 암호화 키를 암호화할 키를 지정하는 dataKeyOpts 객체를 입력합니다.

데이터 암호화 키를 생성하고 암호화하는 방법을 보여주는 튜토리얼을 보려면 다음 리소스를 참조하세요.

지원되는 모든 KMS 제공자에 대한 kmsProvidersdataKeyOpts 객체의 구조를 보려면 지원되는 키 관리 서비스를 참조하세요.

이 페이지의 다음 섹션에서는 모든 키 관리 시스템 제공자에 대한 다음 정보를 제공합니다.

  • 사용 중 암호화 활성화 클라이언트 의 아키텍처

  • kmsProviders 객체의 구조

  • dataKeyOpts 객체의 구조

Queryable Encryption 과 CSFLE는 모두 다음과 같은 키 관리 시스템 제공자를 지원 합니다.

이 섹션에서는 사용과 관련된 정보를 Amazon Web Services KMS Queryable Encryption CSFLE 제공합니다. 또는 지원 애플리케이션 에서

애플리케이션에서 Amazon Web Services KMS 를 사용하는 방법을 보여주는 튜토리얼을 보려면 개요: Queryable Encryption활성화 또는 Amazon Web Services에서 자동 클라이언트 측 필드 레벨 암호화 사용을 참조하세요.

다음 다이어그램은 Amazon Web Services KMS를 사용하는 Queryable Encryption 지원 애플리케이션의 아키텍처를 설명합니다.

다이어그램 KMS

참고

클라이언트가 고객 마스터 키에 액세스할 수 없음

이전 키 관리 시스템을 사용하는 경우 Queryable Encryption이 활성화된 애플리케이션은 고객 마스터 키에 액세스할 수 없습니다.

다음 표에는 AWS KMS용 kmsProviders 객체의 구조가 나와 있습니다.

필드
IAM 사용자에게 필수
IAM 역할에 필요
설명
액세스 키 ID
계정 사용자를 식별합니다.
보안 액세스 키
계정 사용자의 인증 자격 증명을 포함합니다.
Session Token
No
AWS Security Token Service(STS)에서 얻은 토큰이 포함되어 있습니다.

다음 표에는 AWS KMS용 dataKeyOpts 객체의 구조가 나와 있습니다.

필드
필수 사항
설명
Amazon 리소스 번호(ARN) 마스터 키의.
리전
No
마스터 키의 AWS 리전입니다. 예를 들면 다음과 같습니다. 'US-WEST-2': ARN에 지정되지 않은 경우에만 필요합니다.
엔드포인트
No
계정에 구성된 경우 AWS 엔드포인트의 사용자 지정 호스트 이름입니다.

이 섹션에서는 Azure Key Vault 사용과 관련된 정보를 제공합니다. Queryable Encryption 또는 CSFLE 지원 애플리케이션에서

애플리케이션에서 Azure Key Vault를 사용하는 방법을 보여주는 튜토리얼을 보려면 개요: Queryable Encryption 활성화 또는 Azure에서 자동 클라이언트 사이드 필드 레벨 암호화 사용을 참조하세요.

다음 다이어그램은 Azure Key Vault를 사용하는 Queryable Encryption 지원 애플리케이션의 아키텍처를 설명합니다.

다이어그램 KMS

참고

클라이언트가 고객 마스터 키에 액세스할 수 없음

이전 키 관리 시스템을 사용하는 경우 Queryable Encryption이 활성화된 애플리케이션은 고객 마스터 키에 액세스할 수 없습니다.

다음 표는 Azure Key Vault에 대한 kmsProviders 객체의 구조를 나타냅니다.

필드
필수 사항
설명
azure.tenantId
계정의 조직을 식별합니다.
azure.clientId
등록된 애플리케이션을 인증하기 위해 clientId를 식별합니다.
azure.clientSecret
등록된 애플리케이션을 인증하는 데 사용됩니다.
azure.identityPlatformEndpoint
No
인증 서버의 호스트 이름 및 포트 번호를 지정합니다. 기본값은 login.microsoftonline.com 이며 정부 또는 중국 계정과 같은 비상업적 Azure 인스턴스에만 필요합니다.

다음 표는 Azure Key Vault에 대한 dataKeyOpts 객체의 구조를 나타냅니다.

필드
필수 사항
설명
keyName
마스터 키의 이름
keyVersion
아니요, 하지만 적극 권장합니다.
마스터 키의 버전
keyVaultEndpoint
키 저장소의 URL입니다. 예: myVaultName.vault.azure.net

경고

keyVersion 필드를 포함하지 않으면 Azure Key Vault는 최신 고객 마스터 키를 사용하여 데이터 암호화 키를 해독하려고 시도합니다. 고객 마스터 키를 교체하되 데이터 암호화 키를 새 마스터 키로 다시 래핑하지 않으면 DEK가 이전 버전의 고객 마스터 키로 암호화되므로 기존 DEK의 암호 해독 시도가 실패합니다.

Google Cloud Platform 섹션에서는 키 관리 사용과 관련된 정보를 Queryable Encryption CSFLE 제공합니다. 또는 지원 애플리케이션 에서

애플리케이션 에서 GCP KMS 를 사용하는 방법을 보여주는 튜토리얼을 보려면 개요: Queryable Encryption 활성화 또는 GCP 로 자동 클라이언트 측 필드 레벨 암호화 사용을 참조하세요.

다음 다이어그램은 GCP KMS를 사용하는 Queryable Encryption 지원 애플리케이션의 아키텍처를 설명합니다.

다이어그램 KMS

참고

클라이언트가 고객 마스터 키에 액세스할 수 없음

이전 키 관리 시스템을 사용하는 경우 Queryable Encryption이 활성화된 애플리케이션은 고객 마스터 키에 액세스할 수 없습니다.

다음 표에는 GCP KMS용 kmsProviders 객체의 구조가 나와 있습니다.

필드
필수 사항
설명
이메일
서비스 계정 이메일 주소를 식별합니다.
privateKey
Identifies your service account private key in either base64 string or Binary subtype 0 format without the prefix and suffix markers.

Suppose your service account private key value is as follows:
-----BEGIN PRIVATE KEY-----\nyour-private-key\n-----END PRIVATE KEY-----\n
The value you would specify for this field is:
your-private-key
If you have a user-key.json credential file, you can extract the string by executing the following command in a bash or similar shell. The following command requires that you install OpenSSL :
cat user-key.json | jq -r .private_key | openssl pkcs8 -topk8 -nocrypt -inform PEM -outform DER | base64 -w 0
엔드포인트
No
인증 서버의 호스트 이름 및 포트 번호를 지정합니다. 기본값은 oauth2.googleapis.com입니다.

다음 표에는 GCP KMS용 dataKeyOpts 객체의 구조가 나와 있습니다.

필드
필수 사항
설명
projectId
키를 생성한 프로젝트의 식별자입니다.
위치
키에 대해 지정된 리전입니다.
keyRing
키가 속한 키 그룹의 식별자입니다.
keyName
대칭 마스터 키의 식별자입니다.
keyVersion
No
명명된 키의 버전을 지정합니다. 지정하지 않으면 기본 버전의 키가 사용됩니다.
엔드포인트
No
클라우드 KMS의 호스트 및 선택적 포트를 지정합니다. 기본값은 cloudkms.googleapis.com입니다.

이 섹션에서는 KMIP 사용과 관련된 정보를 제공합니다. Queryable Encryption 또는 CSFLE 지원 애플리케이션에서 호환되는 키 관리 시스템.

HashiCorp Vault를 사용하여 KMIP를 설정하다 하는 방법을 학습 보려면 MongoDB CSFLE를 사용하여 HashiCorp Vault KMIP 시크릿 엔진을 설정하는 방법 또는 Queryable Encryption 블로그 포스트 을 참조하세요.

다음 다이어그램은 KMIP호환 키 제공자를 사용하는 Queryable Encryption 지원 애플리케이션의 아키텍처를 설명합니다.

다이어그램

중요

클라이언트 고객 마스터 키 액세스

Queryable Encryption 이 활성화된 애플리케이션 이 delegated 옵션을 지정하지 않고 KMIP호환 키 제공자 를 사용하는 경우, 애플리케이션 은 고객 마스터 키 에 직접 액세스합니다. CMK 에 직접 액세스하지 않으려면 dataKeyOpts 객체에서 delegated 옵션을 true 로 설정하다 수 있습니다.

다음 표는 KMIP 호환 키 관리 시스템에 대한 kmsProviders 객체의 구조를 나타냅니다.

참고

TLS/SSL을 통한 인증

Queryable Encryption이 활성화된 애플리케이션은 KMIP를 사용할 때 TLS/SSL 을 통해 인증합니다.

필드
필수 사항
설명
엔드포인트
인증 서버의 호스트 이름 및 포트 번호를 지정합니다.

다음 표는 KMIP 호환 키 관리 시스템에 대한 dataKeyOpts 객체의 구조를 나타냅니다.

필드
필수 사항
설명
keyId
No

keyId 96 바이트 시크릿 데이터 관리 객체 의 필드 KMIP 호환 키 제공자에 저장됩니다.

KMIP 호환 키 제공자에게 보내는 masterKey 문서에 keyId 필드를 지정하지 않으면 드라이버는 KMIP호환 키 제공자에 마스터 키 역할을 할 96바이트 비밀 데이터 관리 객체를 새로 만듭니다.

엔드포인트
KMIP호환 키 제공자의 URI입니다.
위임됨
No

DEK 의 암호화 및 암호 해독을 KMIP호환 키 제공자 에게 위임하려면 이 옵션을 true 로 설정합니다. 이러한 키를 KMIP호환 키 제공자 에게 위임하면 CMK 에 직접 액세스 할 수 없습니다.

delegated 옵션을 true 로 설정하다 하지 않으면 애플리케이션 이 KMIP 제공자 로부터 고객 마스터 키 에 직접 액세스하여 전송합니다.

중요: delegated 옵션은 Ruby, 고 (Go) 또는 C++ 드라이버에서 사용할 수 없습니다.

이 섹션에서는 Queryable Encryption 또는 CSFLE 지원 애플리케이션 에서 로컬 키 제공자를 사용하는 것과 관련된 정보를 제공합니다.

경고

프로덕션에서 로컬 키 파일 보호

고객 마스터 키를 원격 키 관리 시스템 에 저장하는 것이 좋습니다. (KMS ). Queryable Encryption 구현 에서 원격 KMS 를 사용하는 방법을 학습 보려면 튜토리얼 가이드 를 참조하세요.

프로덕션 환경에서 로컬 키 제공자 를 사용하기로 선택한 경우에는 각별한 주의를 기울이고 파일 시스템에 저장 하지 않도록 합니다. 사이드카 프로세스 를 사용하여 클라이언트 애플리케이션 에 키를 삽입하거나 키를 안전하게 보호하는 다른 접근 방식을 사용하는 것이 좋습니다.

Queryable Encryption 테스트를 위해 로컬 키 제공자를 사용하는 방법을 보여주는 튜토리얼을 보려면 Queryable Encryption 빠른 시작 또는 CSFLE 빠른 시작을 참조하세요.

테스트에 로컬 키 제공자를 사용하는 경우 애플리케이션 은 실행되는 컴퓨터에서 고객 마스터 키 를 검색합니다. 프로덕션 환경에서 로컬 키 제공자를 사용하려면 파일 시스템에 키를 저장 하지 않는 접근 방식을 사용하세요. 예를 예시 사이드카를 통해 클라이언트 프로세스 에 키를 삽입할 수 있습니다.

다음 다이어그램은 로컬 키 제공자를 사용하는 Queryable Encryption 지원 애플리케이션 의 아키텍처를 설명합니다.

로컬 키 제공자 아키텍처 다이어그램

다음 표는 로컬 키 제공자의 kmsProviders 객체 구조를 보여줍니다.

필드
필수 사항
설명
데이터 키를 암호화/복호화하는 데 사용되는 마스터 키입니다. 마스터 키는 base64로 인코딩된 문자열로 전달됩니다.

로컬 키 제공자를 사용하는 경우 kmsProviders 객체를 통해 고객 마스터 키를 지정합니다.

돌아가기

키 및 키 자격 증명 모음Keys and Key Vaults