Docs Menu

고객 마스터 키 생성

In this guide, you will learn how to generate a Customer Master Key in your Key Management System of choice. Generate a Customer Master Key before creating your Queryable Encryption-enabled application.

고객 마스터 키

To learn more about the Customer Master Key, see Encryption Keys and Key Vaults

Complete the preceding tasks before continuing:

  1. Install a Queryable Encryption compatible driver and dependencies

  2. Install and configure a Queryable Encryption library

Select the tab for your key provider below.

1
  1. Log in to your AWS Management Console.

  2. Navigate to the AWS KMS Console.

  3. 고객 마스터 키 생성

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

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

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

    중요

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

    주요 정책

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

2
  1. Navigate to the AWS IAM Console.

  2. IAM 사용자 생성

    사용자 추가 에 대한 공식 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. Log in to Azure.

  2. Azure Active Directory에 애플리케이션 등록

    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 및 고객 마스터 키 만들기

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

    중요

    자격 증명 기록

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

    • 키 이름

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

    • keyVersion

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

  2. 권한 부여

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

1
  1. Register or log in to your existing account on Google Cloud.

  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

To connect a MongoDB driver client to your KMIP-compliant key provider, you must configure your KMIP-compliant key provider such that it accepts your client's TLS certificate.

Consult the documentation for your KMIP-compliant key provider for information on how to accept your client certificate.

2

Your client must connect to your KMIP-compliant key provider through TLS and present a client certificate that your KMIP-compliant key provider accepts:

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);

중요

Your client certificate must be in pcks12 format. You can convert your certificate using OpenSSL with the following command:

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,
}

중요

You must use certificates with ECDSA keys when using the Go driver with PyKMIP.

Configure the following virtual machine options to specify the keystore and truststore that contain your KMIP TLS certificates and add them to the command that you use to start your Java application:

-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

참고

Configure Client With SSLContext

If you would rather configure your client application using an SSL context, use the kmsProviderSslContextMap method.

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
}
}

After installing drivers and dependencies and creating a Customer Master Key, you can create your Queryable Encryption enabled application.