KMS 제공자
이 페이지의 내용
개요
사용 중 암호화 가 지원하는 키 관리 시스템(KMS) 제공자에 대해 알아보세요.
원격 키 관리 시스템을 사용하는 이유
원격 키 managed 시스템을 사용하여 고객 마스터 키를 managed하면 로컬 파일 시스템을 사용하여 호스팅하는 것보다 다음과 같은 이점이 있습니다.
액세스 감사를 통한 안전한 키 보관
액세스 권한 문제 발생 위험 감소
원격 클라이언트에 대한 키의 가용성 및 배포
자동화된 키 백업 및 복구
중앙 집중식 암호화 키 수명 주기 관리
또한 다음과 같은 KMS 제공자의 경우 KMS 가 데이터 암호화 키 를 원격으로 암호화 및 복호화하여 고객 마스터 키 가 Queryable Encryption 또는 CSFLE 지원 애플리케이션 에 노출되지 않도록 합니다.
Amazon Web Services KMS
Azure Key Vault
Google Cloud KMS
키 관리 시스템 작업
사용 중 암호화 에서 키 관리 시스템은 다음을 수행합니다.
고객 마스터 키 생성 및 암호화
애플리케이션에서 생성한 데이터 암호화 키를 암호화합니다.
데이터 암호화 키 해독
고객 마스터 키 및 데이터 암호화 키에 학습 보려면 암호화 키 및 키 볼트를 참조하세요.
고객 마스터 키 생성 및 저장
고객 마스터 키를 생성하려면 다음과 같이 고객 마스터 키를 생성하도록 키 관리 시스템을 구성합니다.
![다이어그램](/ko-kr/docs/manual/static/cd8b8aa4e4a3cd63639fd56ef014025b/2ce52/CSFLE_Master_Key_KMS.webp)
선호하는 에서 KMS CMK 를 생성하고 저장 하는 방법을 보여주는 튜토리얼을 보려면 자동 Queryable Encryption 암호화 튜토리얼 또는 CSFLE 자동 암호화 튜토리얼을 참조하세요.
데이터 암호화 키 생성 및 암호화
데이터 암호화 키를 생성하려면 다음을 수행합니다.
Queryable Encryption 또는 CSFLE 지원 애플리케이션 에서
ClientEncryption
인스턴스 를 인스턴스화합니다.애플리케이션이 KMS 제공자로 인증하는 데 사용하는 자격 증명을 지정하는
kmsProviders
객체를 제공합니다.
애플리케이션에서
ClientEncryption
객체의CreateDataKey
메서드를 사용하여 데이터 암호화 키를 생성합니다.KMS가 새 데이터 암호화 키를 암호화할 키를 지정하는
dataKeyOpts
객체를 입력합니다.
데이터 암호화 키를 생성하고 암호화하는 방법을 보여주는 튜토리얼을 보려면 다음 리소스를 참조하세요.
지원되는 모든 KMS 제공자에 대한 kmsProviders
및 dataKeyOpts
객체의 구조를 보려면 지원되는 키 관리 서비스를 참조하세요.
지원되는 키 관리 서비스
이 페이지의 다음 섹션에서는 모든 키 관리 시스템 제공자에 대한 다음 정보를 제공합니다.
사용 중 암호화 활성화 클라이언트 의 아키텍처
kmsProviders
객체의 구조dataKeyOpts
객체의 구조
Queryable Encryption 과 CSFLE는 모두 다음과 같은 키 관리 시스템 제공자를 지원 합니다.
Amazon Web Services KMS
이 섹션에서는 사용과 관련된 정보를 Amazon Web Services KMS Queryable Encryption CSFLE 제공합니다. 또는 지원 애플리케이션 에서
애플리케이션에서 Amazon Web Services KMS 를 사용하는 방법을 보여주는 튜토리얼을 보려면 개요: Queryable Encryption활성화 또는 Amazon Web Services에서 자동 클라이언트 측 필드 레벨 암호화 사용을 참조하세요.
아키텍처
다음 다이어그램은 Amazon Web Services KMS를 사용하는 Queryable Encryption 지원 애플리케이션의 아키텍처를 설명합니다.
![다이어그램 KMS](/ko-kr/docs/manual/static/5fb661a80bb16168a1f5c996ff1bbe02/15bb5/CSFLE_Data_Key_KMS.webp)
참고
클라이언트가 고객 마스터 키에 액세스할 수 없음
이전 키 관리 시스템을 사용하는 경우 Queryable Encryption이 활성화된 애플리케이션은 고객 마스터 키에 액세스할 수 없습니다.
kmsProviders 객체
다음 표에는 AWS KMS용 kmsProviders
객체의 구조가 나와 있습니다.
필드 | IAM 사용자에게 필수 | IAM 역할에 필요 | 설명 |
---|---|---|---|
액세스 키 ID | 예 | 예 | 계정 사용자를 식별합니다. |
보안 액세스 키 | 예 | 예 | 계정 사용자의 인증 자격 증명을 포함합니다. |
Session Token | No | 예 | AWS Security Token Service(STS)에서 얻은 토큰이 포함되어 있습니다. |
dataKeyOpts 객체
다음 표에는 AWS KMS용 dataKeyOpts
객체의 구조가 나와 있습니다.
필드 | 필수 사항 | 설명 |
---|---|---|
키 | 예 | Amazon 리소스 번호(ARN) 마스터 키의. |
리전 | No | 마스터 키의 AWS 리전입니다. 예를 들면 다음과 같습니다. 'US-WEST-2': ARN에 지정되지 않은 경우에만 필요합니다. |
엔드포인트 | No | 계정에 구성된 경우 AWS 엔드포인트의 사용자 지정 호스트 이름입니다. |
Azure Key Vault
이 섹션에서는 Azure Key Vault 사용과 관련된 정보를 제공합니다. Queryable Encryption 또는 CSFLE 지원 애플리케이션에서
애플리케이션에서 Azure Key Vault를 사용하는 방법을 보여주는 튜토리얼을 보려면 개요: Queryable Encryption 활성화 또는 Azure에서 자동 클라이언트 사이드 필드 레벨 암호화 사용을 참조하세요.
아키텍처
다음 다이어그램은 Azure Key Vault를 사용하는 Queryable Encryption 지원 애플리케이션의 아키텍처를 설명합니다.
![다이어그램 KMS](/ko-kr/docs/manual/static/5fb661a80bb16168a1f5c996ff1bbe02/15bb5/CSFLE_Data_Key_KMS.webp)
참고
클라이언트가 고객 마스터 키에 액세스할 수 없음
이전 키 관리 시스템을 사용하는 경우 Queryable Encryption이 활성화된 애플리케이션은 고객 마스터 키에 액세스할 수 없습니다.
kmsProviders 객체
다음 표는 Azure Key Vault에 대한 kmsProviders
객체의 구조를 나타냅니다.
필드 | 필수 사항 | 설명 |
---|---|---|
azure.tenantId | 예 | 계정의 조직을 식별합니다. |
azure.clientId | 예 | 등록된 애플리케이션을 인증하기 위해 clientId를 식별합니다. |
azure.clientSecret | 예 | 등록된 애플리케이션을 인증하는 데 사용됩니다. |
azure.identityPlatformEndpoint | No | 인증 서버의 호스트 이름 및 포트 번호를 지정합니다. 기본값은 login.microsoftonline.com 이며 정부 또는 중국 계정과 같은 비상업적 Azure 인스턴스에만 필요합니다. |
dataKeyOpts 객체
다음 표는 Azure Key Vault에 대한 dataKeyOpts
객체의 구조를 나타냅니다.
필드 | 필수 사항 | 설명 |
---|---|---|
keyName | 예 | 마스터 키의 이름 |
keyVersion | 아니요, 하지만 적극 권장합니다. | 마스터 키의 버전 |
keyVaultEndpoint | 예 | 키 저장소의 URL입니다. 예: myVaultName.vault.azure.net |
경고
keyVersion
필드를 포함하지 않으면 Azure Key Vault는 최신 고객 마스터 키를 사용하여 데이터 암호화 키를 해독하려고 시도합니다. 고객 마스터 키를 교체하되 데이터 암호화 키를 새 마스터 키로 다시 래핑하지 않으면 DEK가 이전 버전의 고객 마스터 키로 암호화되므로 기존 DEK의 암호 해독 시도가 실패합니다.
Google Cloud Platform KMS
이 Google Cloud Platform 섹션에서는 키 관리 사용과 관련된 정보를 Queryable Encryption CSFLE 제공합니다. 또는 지원 애플리케이션 에서
애플리케이션 에서 GCP KMS 를 사용하는 방법을 보여주는 튜토리얼을 보려면 개요: Queryable Encryption 활성화 또는 GCP 로 자동 클라이언트 측 필드 레벨 암호화 사용을 참조하세요.
아키텍처
다음 다이어그램은 GCP KMS를 사용하는 Queryable Encryption 지원 애플리케이션의 아키텍처를 설명합니다.
![다이어그램 KMS](/ko-kr/docs/manual/static/5fb661a80bb16168a1f5c996ff1bbe02/15bb5/CSFLE_Data_Key_KMS.webp)
참고
클라이언트가 고객 마스터 키에 액세스할 수 없음
이전 키 관리 시스템을 사용하는 경우 Queryable Encryption이 활성화된 애플리케이션은 고객 마스터 키에 액세스할 수 없습니다.
kmsProviders 객체
다음 표에는 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:
The value you would specify for this field is:
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
:
| |||
엔드포인트 | No | 인증 서버의 호스트 이름 및 포트 번호를 지정합니다. 기본값은 oauth2.googleapis.com입니다. |
dataKeyOpts 객체
다음 표에는 GCP KMS용 dataKeyOpts
객체의 구조가 나와 있습니다.
필드 | 필수 사항 | 설명 |
---|---|---|
projectId | 예 | 키를 생성한 프로젝트의 식별자입니다. |
위치 | 예 | 키에 대해 지정된 리전입니다. |
keyRing | 예 | 키가 속한 키 그룹의 식별자입니다. |
keyName | 예 | 대칭 마스터 키의 식별자입니다. |
keyVersion | No | 명명된 키의 버전을 지정합니다. 지정하지 않으면 기본 버전의 키가 사용됩니다. |
엔드포인트 | No | 클라우드 KMS의 호스트 및 선택적 포트를 지정합니다. 기본값은 |
KMIP
이 섹션에서는 KMIP 사용과 관련된 정보를 제공합니다. Queryable Encryption 또는 CSFLE 지원 애플리케이션에서 호환되는 키 관리 시스템.
HashiCorp Vault를 사용하여 KMIP를 설정하다 하는 방법을 학습 보려면 MongoDB CSFLE를 사용하여 HashiCorp Vault KMIP 시크릿 엔진을 설정하는 방법 또는 Queryable Encryption 블로그 포스트 을 참조하세요.
아키텍처
다음 다이어그램은 KMIP호환 키 제공자를 사용하는 Queryable Encryption 지원 애플리케이션의 아키텍처를 설명합니다.
![다이어그램](/ko-kr/docs/manual/static/28791746684427e1cd1e8e1519085025/23cb4/CSFLE_Data_Key_KMIP.webp)
중요
클라이언트 고객 마스터 키 액세스
Queryable Encryption 이 활성화된 애플리케이션 이 옵션을 지정하지 않고 KMIP 호환 키 제공자 를 사용하는 delegated
경우, 애플리케이션 은 고객 마스터 키 에 직접 액세스합니다. CMK 에 직접 액세스하지 않으려면 delegated
true
dataKeyOpts 객체 에서옵션을 로 설정하다 수 있습니다.
kmsProviders 객체
다음 표는 KMIP 호환 키 관리 시스템에 대한 kmsProviders
객체의 구조를 나타냅니다.
참고
TLS/SSL을 통한 인증
Queryable Encryption이 활성화된 애플리케이션은 KMIP를 사용할 때 TLS/SSL 을 통해 인증합니다.
필드 | 필수 사항 | 설명 |
---|---|---|
엔드포인트 | 예 | 인증 서버의 호스트 이름 및 포트 번호를 지정합니다. |
dataKeyOpts 객체
다음 표는 KMIP 호환 키 관리 시스템에 대한 dataKeyOpts
객체의 구조를 나타냅니다.
필드 | 필수 사항 | 설명 |
---|---|---|
keyId | No |
KMIP 호환 키 제공자에게 보내는 |
엔드포인트 | 예 | KMIP호환 키 제공자의 URI입니다. |
위임됨 | No | DEK의 암호화 및 암호해독을 KMIP 호환 키 제공자 에게 위임하려면 이 옵션을 로 설정합니다.
체크: |
로컬 키 제공자
이 섹션에서는 Queryable Encryption 또는 CSFLE 지원 애플리케이션 에서 로컬 키 제공자를 사용하는 것과 관련된 정보를 제공합니다.
경고
프로덕션에서 로컬 키 파일 보호
고객 마스터 키를 원격 키 관리 시스템 에 저장하는 것이 좋습니다. (KMS ). Queryable Encryption 구현 에서 원격 KMS 를 사용하는 방법을 학습 보려면 튜토리얼 가이드 를 참조하세요.
프로덕션 환경에서 로컬 키 제공자 를 사용하기로 선택한 경우에는 각별한 주의를 기울이고 파일 시스템에 저장 하지 않도록 합니다. 사이드카 프로세스 를 사용하여 클라이언트 애플리케이션 에 키를 삽입하거나 키를 안전하게 보호하는 다른 접근 방식을 사용하는 것이 좋습니다.
Queryable Encryption 테스트를 위해 로컬 키 제공자를 사용하는 방법을 보여주는 튜토리얼을 보려면 Queryable Encryption 빠른 시작 또는 CSFLE 빠른 시작을 참조하세요.
아키텍처
테스트에 로컬 키 제공자를 사용하는 경우 애플리케이션 은 실행되는 컴퓨터에서 고객 마스터 키 를 검색합니다. 프로덕션 환경에서 로컬 키 제공자를 사용하려면 파일 시스템에 키를 저장 하지 않는 접근 방식을 사용하세요. 예를 예시 사이드카를 통해 클라이언트 프로세스 에 키를 삽입할 수 있습니다.
다음 다이어그램은 로컬 키 제공자를 사용하는 Queryable Encryption 지원 애플리케이션 의 아키텍처를 설명합니다.
![로컬 키 제공자 아키텍처 다이어그램](/ko-kr/docs/manual/static/33fb1c01bdcd0a1fe27d298fdfc0a817/df5a9/CSFLE_Data_Key_Local.webp)
kmsProviders 객체
다음 표는 로컬 키 제공자의 kmsProviders
객체 구조를 보여줍니다.
필드 | 필수 사항 | 설명 |
---|---|---|
키 | 예 | 데이터 키를 암호화/복호화하는 데 사용되는 마스터 키입니다. 마스터 키는 base64로 인코딩된 문자열로 전달됩니다. |
dataKeyOpts 객체
로컬 키 제공자를 사용하는 경우 kmsProviders
객체를 통해 고객 마스터 키를 지정합니다.