고객 마스터 키 생성
개요
이 가이드에서는 선택한 키 관리 시스템에서 고객 마스터 키를 생성하는 방법을 알아봅니다. Queryable Encryption 지원 애플리케이션을 만들기 전에 고객 마스터 키를 생성하세요.
시작하기 전
계속하기 전에 이전 작업을 완료합니다.
절차
아래에서 키 제공자의 탭을 선택합니다.
고객 마스터 키 생성
고객 마스터 키 생성
대칭 키 생성 에 대한 공식 Amazon Web Services 설명서에 따라 KMS 새 대칭 키를 생성합니다. . 생성한 키는 고객 마스터 키 입니다. 식별에 도움이 되는 이름과 설명을 선택합니다. 이러한 필드는 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 설명서에서 확인 가능합니다.
AWS IAM 사용자 생성
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에 애플리케이션 등록
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 서비스 계정 등록
Google Cloud 에기존 계정을 등록하거나 로그인 합니다.
프로젝트에 대한 서비스 계정 만들기
GCP에서 서비스 계정을 만들려면 서비스 계정 만들기 를 따르세요. 가이드를 참조하세요.
서비스 계정 키 추가
GCP에 서비스 계정 키를 추가하려면 서비스 계정 키 관리 하기를 따르세요. 가이드를 참조하세요.
중요
서비스 계정 키를 생성할 때 비공개 키 정보를 일회성 다운로드로 받게 됩니다. 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일을 PKCS12 또는 JSON 형식으로 다운로드해야 합니다.
중요
서비스 계정 키를 생성할 때 비공개 키 정보를 일회성 다운로드로 받게 됩니다. 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일을 PKCS12 또는 JSON 형식으로 다운로드해야 합니다.
중요
서비스 계정 키를 생성할 때 비공개 키 정보를 일회성 다운로드로 받게 됩니다. 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일을 PKCS12 또는 JSON 형식으로 다운로드해야 합니다.
중요
서비스 계정 키를 생성하면 비공개 키 정보가 일회성으로 다운로드 됩니다. 연결된 서비스 계정을 사용하지 않는 한 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일 을 PKCS12 또는 JSON 형식으로 다운로드 해야 합니다.
중요
서비스 계정 키를 생성할 때 비공개 키 정보를 일회성 다운로드로 받게 됩니다. 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일을 PKCS12 또는 JSON 형식으로 다운로드해야 합니다.
중요
서비스 계정 키를 생성할 때 비공개 키 정보를 일회성 다운로드로 받게 됩니다. 이 튜토리얼의 뒷부분에서 사용할 수 있도록 이 파일을 PKCS12 또는 JSON 형식으로 다운로드해야 합니다.
GCP 고객 마스터 키 만들기
새 고객 마스터 키 생성
키 생성 단계에 따라 키링과 대칭 키를 생성합니다. 가이드를 참조하세요.
이 키는 고객 마스터 키(CMK)입니다.
이 튜토리얼의 이후 단계에서 사용할 수 있도록 고객 마스터 키 에 대한 다음 세부 정보를 기록합니다.
필드필수 사항설명key_name예고객 마스터 키 의 식별자입니다.key_ring예키가 속한 키 그룹의 식별자입니다.key_versionNo명명된 키의 버전입니다.위치예키에 대해 지정된 리전입니다.엔드포인트NoGoogle Cloud KMS의 호스트 및 선택적 포트입니다. 기본값은cloudkms.googleapis.com
입니다.
인증서 지정
클라이언트는 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
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 지원 애플리케이션을 생성할 수 있습니다.