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

고객 마스터 키 생성

이 페이지의 내용

  • 개요
  • 시작하기 전
  • 절차
  • 다음 단계

이 가이드에서는 선택한 키 관리 시스템에서 고객 마스터 키를 생성하는 방법을 알아봅니다. Queryable Encryption 지원 애플리케이션을 만들기 전에 고객 마스터 키를 생성하세요.

고객 마스터 키

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

계속하기 전에 이전 작업을 완료합니다.

  1. Queryable Encryption 호환 드라이버 및 종속성 설치

  2. Queryable Encryption 라이브러리 설치 및 구성

아래에서 키 제공자의 탭을 선택합니다.

1
1
2
3

대칭 KMS 키 생성 에 대한 AWS 공식 설명서에 따라 새 대칭 키를 생성합니다. . 생성한 키는 고객 마스터 키입니다. 식별에 도움이 되는 이름과 설명을 선택합니다. 이러한 필드는CMK 의 기능이나 구성에 영향을 주지 않습니다.

키 생성 프로세스의 Usage Permissions 단계에서 ID 및 액세스 관리(IAM) 정책을 허용하여 고객 마스터 키에 대한 액세스 권한을 부여하는 다음 기본 키 정책을 적용합니다.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "<ARN of your AWS account principal>"
},
"Action": "kms:*",
"Resource": "*"
}
]
}

중요

고객 마스터 키의 Amazon 리소스 이름(ARN) 및 지역을 기록합니다. 이 가이드의 뒷부분에서 이를 사용하게 됩니다.

주요 정책

키 정책에 대해 자세히 알아보려면 Amazon Web Services 의 키 정책 KMS 을 참조하세요. 공식 Amazon Web Services 설명서에서 확인 가능합니다.

2
1
2

사용자 추가 에 대한 공식 Amazon Web Services 문서에 따라 Amazon Web Services 관리 콘솔에서 새 프로그래밍 방식 IAM 사용자를생성합니다. . 이 IAM 사용자를 Queryable Encryption 지원 애플리케이션의 서비스 계정으로 사용하게 됩니다. 애플리케이션은 고객 마스터 키(CMK)로 데이터 암호화 키(DEK)를 암호화 및 복호화하기 위해 IAM 사용자를 사용하여 Amazon Web Services 로 인증합니다.KMS

중요

자격 증명 기록

IAM 사용자를 생성하는 마지막 단계에서 다음 IAM 자격 증명을 기록해야 합니다.

  • 액세스 키 ID

  • 시크릿 액세스 키

이러한 자격 증명을 기록할 수 있는 기회가 한 번 있습니다. 이 단계에서 이러한 자격 증명을 기록하지 않으면 다른 IAM 사용자를 만들어야 합니다.

3

IAM 사용자에게 원격 마스터 키에 대한 kms:Encryptkms:Decrypt 권한을 부여합니다.

중요

새 클라이언트 IAM 사용자는 마스터 키에 대한 관리 권한이 없어야 합니다. 데이터를 안전하게 유지하려면 최소 권한 원칙을 따릅니다.

다음 인라인 정책은 IAM 사용자가 가능한 최소 권한으로 고객 마스터 키를 사용하여 암호화하고 해독할 수 있도록 허용합니다.

참고

원격 마스터 키 ARN

다음 정책에는 이 가이드 의 마스터 키 생성 단계에서 생성한 키의 ARN이 필요합니다.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["kms:Decrypt", "kms:Encrypt"],
"Resource": "<the Amazon Resource Name (ARN) of your remote master key>"
}
]
}

이전 정책을 IAM 사용자에게 적용하려면 AWS 설명서의 IAM ID 권한 추가하기 가이드를 따르세요.

중요

프로덕션에서 IAM 역할로 인증하기

Queryable Encryption 지원 애플리케이션을 프로덕션 환경에 배포할 때 IAM 사용자 대신 IAM 역할을 사용하여 애플리케이션을 인증합니다.

IAM 역할에 대해 자세히 알아보려면 공식 AWS 설명서의 다음 페이지를 참조하세요.

1
1
2

Azure Active Directory에 애플리케이션을 등록하려면 Microsoft의 공식 Microsoft ID 플랫폼에 애플리케이션 등록하기 를 따르세요. 빠른 시작.

중요

자격 증명 기록

다음 자격 증명을 기록해야 합니다.

  • 테넌트 ID

  • 클라이언트 ID

  • 클라이언트 비밀

이 튜토리얼의 뒷부분에서 kmsProviders 객체를 구성하는 데 필요합니다.

중요

자격 증명 기록

다음 자격 증명을 기록해야 합니다.

  • 테넌트 ID

  • 클라이언트 ID

  • 클라이언트 비밀

이 튜토리얼의 뒷부분에서 kmsProviders 객체를 구성하는 데 필요합니다.

중요

자격 증명 기록

다음 자격 증명을 기록해야 합니다.

  • 테넌트 ID

  • 클라이언트 ID

  • 클라이언트 비밀

이 튜토리얼의 뒷부분에서 kmsProviders 객체를 구성하는 데 필요합니다.

중요

자격 증명 기록

다음 자격 증명을 기록해야 합니다.

  • 테넌트 ID

  • 클라이언트 ID

  • 클라이언트 비밀

Azure 가상 머신 내에서 클라이언트를 실행하지 않는 한 이 튜토리얼의 뒷부분에서 kmsProviders 객체를 구성하려면 이러한 자격 증명이 필요합니다.

중요

자격 증명 기록

다음 자격 증명을 기록해야 합니다.

  • 테넌트 ID

  • 클라이언트 ID

  • 클라이언트 비밀

이 튜토리얼의 뒷부분에서 kmsProviders 객체를 구성하는 데 필요합니다.

중요

자격 증명 기록

다음 자격 증명을 기록해야 합니다.

  • 테넌트 ID

  • 클라이언트 ID

  • 클라이언트 비밀

이 튜토리얼의 뒷부분에서 kmsProviders 객체를 구성하는 데 필요합니다.

2
1

새 Azure Key Vault 인스턴스 및 고객 마스터 키를 만들려면 Microsoft의 공식 설정에 따라 Azure Portal을 사용하여 Azure Key Vault에서 키를 검색합니다. 빠른 시작.

중요

자격 증명 기록

다음 자격 증명을 기록해야 합니다.

  • 키 이름

  • 키 식별자 (이 가이드 뒷부분에서 keyVaultEndpoint 이라고 함)

  • keyVersion

이 튜토리얼의 뒷부분에서 dataKeyOpts 객체를 구성하는 데 필요합니다.

2

클라이언트 애플리케이션에 wrapunwrap 키에 대한 권한을 부여합니다.

1
1
2

GCP에서 서비스 계정을 만들려면 서비스 계정 만들기 를 따르세요. 가이드를 참조하세요.

3

GCP에 서비스 계정 키를 추가하려면 서비스 계정 키 관리 하기를 따르세요. 가이드를 참조하세요.

중요

서비스 계정 키를 생성할 때 비공개 키 정보를 일회성 다운로드로 받게 됩니다. 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일을 PKCS12 또는 JSON 형식으로 다운로드해야 합니다.

중요

서비스 계정 키를 생성할 때 비공개 키 정보를 일회성 다운로드로 받게 됩니다. 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일을 PKCS12 또는 JSON 형식으로 다운로드해야 합니다.

중요

서비스 계정 키를 생성할 때 비공개 키 정보를 일회성 다운로드로 받게 됩니다. 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일을 PKCS12 또는 JSON 형식으로 다운로드해야 합니다.

중요

서비스 계정 키를 생성하면 비공개 키 정보가 일회성으로 다운로드됩니다. 연결된 서비스 계정을 사용하지 않는 한 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일을 PKCS12 또는 JSON 형식으로 다운로드해야 합니다.

중요

서비스 계정 키를 생성할 때 비공개 키 정보를 일회성 다운로드로 받게 됩니다. 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일을 PKCS12 또는 JSON 형식으로 다운로드해야 합니다.

중요

서비스 계정 키를 생성할 때 비공개 키 정보를 일회성 다운로드로 받게 됩니다. 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일을 PKCS12 또는 JSON 형식으로 다운로드해야 합니다.

2
1

키 생성 단계에 따라 키링과 대칭 키를 생성합니다. 가이드를 참조하세요.

이 키는 고객 마스터 키(CMK)입니다.

이 튜토리얼의 이후 단계에서 사용할 수 있도록 고객 마스터 키 에 대한 다음 세부 정보를 기록합니다.

필드
필수 사항
설명
key_name
고객 마스터 키 의 식별자입니다.
key_ring
키가 속한 키 그룹의 식별자입니다.
key_version
No
명명된 키의 버전입니다.
위치
키에 대해 지정된 지역입니다.
엔드포인트
No
Google Cloud KMS의 호스트 및 선택적 포트입니다. 기본값은 cloudkms.googleapis.com 입니다.
1

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

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

2

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

const tlsOptions = {
kmip: {
tlsCAFile: process.env["KMIP_TLS_CA_FILE"], // Path to your TLS CA file
tlsCertificateKeyFile: process.env["KMIP_TLS_CERT_FILE"], // Path to your TLS certificate key file
},
};
var tlsOptions = new Dictionary<string, SslSettings>();
var sslSettings = new SslSettings();
var clientCertificate = new X509Certificate2(_appSettings["Kmip:TlsCertP12"]!); // Full path to your client certificate p12 file
sslSettings.ClientCertificates = new[] { clientCertificate };
tlsOptions.Add("kmip", sslSettings);

중요

클라이언트 인증서는 pcks12 형식이어야 합니다.OpenSSL 을 사용하여 인증서를 변환할 수 있습니다. 다음 명령을 사용하여

openssl pcks12 -export -out "<new pcks12 certificate>" -in "<certificate to convert>" \
-name "<new certificate name>" -password "<new certificate password>"
tlsOpts := map[string]interface{}{
"tlsCertificateKeyFile": os.Getenv("KMIP_TLS_CERT_ECDSA_FILE"), // Path to your client certificate file
"tlsCAFile": os.Getenv("KMIP_TLS_CA_ECDSA_FILE"), // Path to your KMIP certificate authority file
}
kmipConfig, err := options.BuildTLSConfig(tlsOpts)
if err != nil {
panic(fmt.Sprintf("Unable to retrieve certificates from your environment: %s\n", err))
}
tlsConfig := map[string]*tls.Config{
"kmip": kmipConfig,
}

중요

ECDSA 키 가 있는 인증서를 사용해야 합니다. PyKMIP와함께 Go 드라이버를 사용하는 경우.

다음 가상 머신 옵션을 구성하여 KMIP TLS 인증서가 포함된 키 저장소 및 신뢰 저장소를 지정하고 Java 애플리케이션을 시작하는 데 사용하는 명령에 추가합니다.

-Djavax.net.ssl.enabled=true
-Djavax.net.ssl.keyStoreType=pkcs12
-Djavax.net.ssl.keyStore=REPLACE-WITH-PATH-TO-PKC-KEYSTORE
-Djavax.net.ssl.keyStorePassword=REPLACE-WITH-KEYSTORE-PASSWORD
-Djavax.net.ssl.trustStoreType=jks
-Djavax.net.ssl.trustStore=REPLACE-WITH-PATH-TO-TRUSTSTORE
-Djavax.net.ssl.trustStorePassword=REPLACE-WITH-TRUSTSTORE-PASSWORD

참고

SSLContext로 클라이언트 구성

SSL 컨텍스트를 사용하여 클라이언트 애플리케이션을 구성하려면 kmsProviderSslContextMap 메서드.

const tlsOptions = {
kmip: {
tlsCAFile: process.env.KMIP_TLS_CA_FILE, // Path to your TLS CA file
tlsCertificateKeyFile: process.env.KMIP_TLS_CERT_FILE, // Path to your TLS certificate key file
},
};
tls_options = {
"kmip": {
"tlsCAFile": os.environ['KMIP_TLS_CA_FILE'], # Path to your TLS CA file
"tlsCertificateKeyFile": os.environ['KMIP_TLS_CERT_FILE'] # Path to your TLS certificate key file
}
}

드라이버 및 종속성을 설치하고 고객 마스터 키를 생성한 후 Queryable Encryption 지원 애플리케이션을 생성할 수 있습니다.

돌아가기

라이브러리 설치