고객 마스터 키 생성
이 페이지의 내용
개요
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.
Before You Start
Complete the preceding tasks before continuing:
절차
Select the tab for your key provider below.
고객 마스터 키 생성
Log in to your AWS Management Console.
Navigate to the AWS KMS Console.
고객 마스터 키 생성
대칭 키 생성 에 대한 공식 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 설명서에서 확인 가능합니다.
AWS IAM 사용자 생성
Navigate to the AWS IAM Console.
IAM 사용자 생성
사용자 추가 에 대한 공식 Amazon Web Services 문서에 따라 Amazon Web Services 관리 콘솔에서 새 프로그래밍 방식 IAM 사용자를생성합니다. . 이 IAM 사용자를 Queryable Encryption 지원 애플리케이션의 서비스 계정으로 사용하게 됩니다. 애플리케이션은 고객 마스터 키(CMK)로 데이터 암호화 키(DEK)를 암호화 및 복호화하기 위해 IAM 사용자를 사용하여 Amazon Web Services 로 인증합니다.KMS
중요
자격 증명 기록
IAM 사용자를 생성하는 마지막 단계에서 다음 IAM 자격 증명을 기록해야 합니다.
액세스 키 ID
시크릿 액세스 키
이러한 자격 증명을 기록할 수 있는 기회는 한 번뿐입니다. 이 단계에서 이러한 자격 증명을 기록하지 않으면 다른 IAM 사용자를 생성해야 합니다.
권한 부여
IAM 사용자에게 원격 마스터 키에 대한
kms:Encrypt
및kms:Decrypt
권한을 부여합니다.중요
새 클라이언트 IAM 사용자는 마스터 키에 대한 관리 권한이 없어야 합니다. 데이터를 안전하게 유지하려면 최소 권한 원칙을 따릅니다.
다음 인라인 정책을 사용하면 IAM 사용자가 가능한 최소한의 권한으로 고객 마스터 키로 암호화 및 해독할 수 있습니다.
{ "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 문서의 다음 페이지를 참조하세요.
Azure에 애플리케이션 등록
Log in to Azure.
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
객체를 구성하는 데 필요합니다.
고객 마스터 키 생성
Azure Key Vault 및 고객 마스터 키 만들기
새 Azure Key Vault 인스턴스 및 고객 마스터 키를 만들려면 Microsoft의 공식 설정에 따라 Azure Portal을 사용하여 Azure Key Vault에서 키를 검색합니다. 빠른 시작.
중요
자격 증명 기록
다음 자격 증명을 기록해야 합니다.
키 이름
키 식별자 (이 가이드 뒷부분에서
keyVaultEndpoint
이라고 함)keyVersion
이 튜토리얼의 뒷부분에서
dataKeyOpts
객체를 구성하는 데 필요합니다.권한 부여
클라이언트 애플리케이션에
wrap
및unwrap
키에 대한 권한을 부여합니다.
GCP 서비스 계정 등록
Register or log in to your existing account on Google Cloud.
프로젝트에 대한 서비스 계정 만들기
GCP에서 서비스 계정을 만들려면 서비스 계정 만들기 를 따르세요. 가이드를 참조하세요.
서비스 계정 키 추가
GCP에 서비스 계정 키를 추가하려면 서비스 계정 키 관리 하기를 따르세요. 가이드를 참조하세요.
중요
서비스 계정 키를 생성할 때 비공개 키 정보를 일회성 다운로드로 받게 됩니다. 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일을 PKCS12 또는 JSON 형식으로 다운로드해야 합니다.
중요
서비스 계정 키를 생성할 때 비공개 키 정보를 일회성 다운로드로 받게 됩니다. 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일을 PKCS12 또는 JSON 형식으로 다운로드해야 합니다.
중요
서비스 계정 키를 생성할 때 비공개 키 정보를 일회성 다운로드로 받게 됩니다. 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일을 PKCS12 또는 JSON 형식으로 다운로드해야 합니다.
중요
서비스 계정 키를 생성하면 비공개 키 정보가 일회성으로 다운로드 됩니다. 연결된 서비스 계정을 사용하지 않는 한 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일 을 PKCS12 또는 JSON 형식으로 다운로드 해야 합니다.
중요
서비스 계정 키를 생성할 때 비공개 키 정보를 일회성 다운로드로 받게 됩니다. 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일을 PKCS12 또는 JSON 형식으로 다운로드해야 합니다.
중요
서비스 계정 키를 생성할 때 비공개 키 정보를 일회성 다운로드로 받게 됩니다. 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일을 PKCS12 또는 JSON 형식으로 다운로드해야 합니다.
GCP 고객 마스터 키 만들기
새 고객 마스터 키 생성
키 생성 단계에 따라 키링과 대칭 키를 생성합니다. 가이드를 참조하세요.
이 키는 고객 마스터 키(CMK)입니다.
이 튜토리얼의 이후 단계에서 사용할 수 있도록 고객 마스터 키 에 대한 다음 세부 정보를 기록합니다.
필드필수 사항설명key_name
예
고객 마스터 키 의 식별자입니다.
key_ring
예
키가 속한 키 그룹의 식별자입니다.
key_version
No
명명된 키의 버전입니다.
위치
예
키에 대해 지정된 리전입니다.
엔드포인트
No
Google Cloud KMS의 호스트 및 선택적 포트입니다. 기본값은
cloudkms.googleapis.com
입니다.
Configure your KMIP-Compliant Key Provider
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.
Specify your Certificates
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.