키 만들기

이 페이지에서는 Cloud KMS에서 키를 만드는 방법을 보여줍니다. 키는 대칭 또는 비대칭 암호화 키, 비대칭 서명 키이거나 MAC 서명 키일 수 있습니다.

키를 만들 때 특정 Cloud KMS 위치의 키링에 키를 추가합니다. 새 키링을 만들거나 기존 키링을 사용할 수 있습니다. 이 페이지에서는 새 Cloud KMS 또는 Cloud HSM 키를 생성하여 기존 키링에 추가합니다. Cloud EKM 키를 만들려면 외부 키 만들기를 참조하세요. Cloud KMS 또는 Cloud HSM 키를 가져오려면 키 가져오기를 참조하세요.

시작하기 전에

이 페이지의 작업을 완료하려면 먼저 다음 항목이 있어야 합니다.

  1. Cloud KMS 리소스를 포함할 Google Cloud 프로젝트 리소스. 다른 Google Cloud 리소스가 포함되지 않은 Cloud KMS 리소스에 대해 개별 프로젝트를 사용하는 것이 좋습니다.
  2. 키를 만들 키링의 이름과 위치. 다른 리소스 가까이에 있고 원하는 보호 수준을 지원하는 위치에서 키링을 선택합니다. 사용 가능한 위치 및 지원되는 보호 수준을 보려면 Cloud KMS 위치를 참조하세요. 키링을 만들려면 키링 만들기를 참조하세요.
  3. 선택사항: gcloud CLI를 사용하려면 환경을 준비합니다.

    Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

필요한 역할

키를 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트 또는 상위 리소스에 대해 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이러한 사전 정의된 역할에는 키를 만드는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

키를 만들려면 다음 권한이 필요합니다.

  • cloudkms.cryptoKeys.create
  • cloudkms.cryptoKeys.get
  • cloudkms.cryptoKeys.list
  • cloudkms.cryptoKeyVersions.create
  • cloudkms.cryptoKeyVersions.get
  • cloudkms.cryptoKeyVersions.list
  • cloudkms.keyRings.get
  • cloudkms.keyRings.list
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
  • 공개 키를 가져오려면 다음 안내를 따르세요. cloudkms.cryptoKeyVersions.viewPublicKey
  • 단일 테넌트 HSM 키를 만들려면 다음 단계를 따르세요.
    • cloudkms.singleTenantHsmInstances.get
    • cloudkms.singleTenantHsmInstances.use

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

대칭 암호화 키 만들기

콘솔

  1. Google Cloud 콘솔에서 키 관리 페이지로 이동합니다.

    Key Management Service로 이동

  2. 키를 만들 키링의 이름을 클릭합니다.

  3. 키 만들기를 클릭합니다.

  4. 키 이름에 키의 이름을 입력합니다.

  5. 보호 수준에서 소프트웨어, HSM 또는 단독 테넌트 HSM을 선택합니다.

  6. 단일 테넌트 HSM을 선택한 경우 키를 만들 단일 테넌트 HSM 인스턴스를 선택합니다.

  7. 키 자료에서 생성된 키를 선택합니다.

  8. 용도에서 Symmetric encrypt/decrypt를 선택합니다.

  9. 순환 주기시작일의 기본값을 그대로 사용합니다.

  10. 만들기를 클릭합니다.

gcloud

명령줄에서 Cloud KMS를 사용하려면 먼저 최신 버전의 Google Cloud CLI로 설치 또는 업그레이드하세요.

소프트웨어 또는 멀티 테넌트 Cloud HSM 키를 만들려면 kms keys create 명령어를 사용합니다.

gcloud kms keys create KEY_NAME \
    --keyring KEY_RING \
    --location LOCATION \
    --purpose "encryption" \
    --protection-level "PROTECTION_LEVEL"

다음을 바꿉니다.

  • KEY_NAME: 키의 이름입니다.
  • KEY_RING: 키가 포함된 키링의 이름입니다.
  • LOCATION: 키링의 Cloud KMS 위치입니다.
  • PROTECTION_LEVEL: 키에 사용할 보호 수준입니다(예: software 또는 hsm). software 키의 --protection-level 플래그는 생략해도 됩니다.

모든 플래그 및 가능한 값에 대한 정보를 보려면 --help 플래그와 함께 명령어를 실행하세요.

단독 테넌트 Cloud HSM 키를 만들려면 kms keys create 명령어에 --crypto-key-backend 플래그를 추가합니다.

gcloud kms keys create KEY_NAME \
    --keyring KEY_RING \
    --location LOCATION \
    --purpose "encryption" \
    --protection-level "hsm-single-tenant" \
    --crypto-key-backend="projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"

다음을 바꿉니다.

  • INSTANCE_PROJECT: 단독 테넌트 Cloud HSM 인스턴스가 있는 프로젝트의 식별자입니다.
  • INSTANCE_NAME: 키를 만들려는 싱글 테넌트 Cloud HSM 인스턴스의 이름입니다. 단독 테넌트 Cloud HSM 인스턴스에 대한 자세한 내용은 단독 테넌트 Cloud HSM 인스턴스 만들기 및 관리를 참고하세요.

모든 플래그 및 가능한 값에 대한 정보를 보려면 --help 플래그와 함께 명령어를 실행하세요.

C#

이 코드를 실행하려면 먼저 C# 개발 환경을 설정하고 Cloud KMS C# SDK를 설치합니다.


using Google.Cloud.Kms.V1;

public class CreateKeySymmetricEncryptDecryptSample
{
    public CryptoKey CreateKeySymmetricEncryptDecrypt(
      string projectId = "my-project", string locationId = "us-east1", string keyRingId = "my-key-ring",
      string id = "my-symmetric-encryption-key")
    {
        // Create the client.
        KeyManagementServiceClient client = KeyManagementServiceClient.Create();

        // Build the parent key ring name.
        KeyRingName keyRingName = new KeyRingName(projectId, locationId, keyRingId);

        // Build the key.
        CryptoKey key = new CryptoKey
        {
            Purpose = CryptoKey.Types.CryptoKeyPurpose.EncryptDecrypt,
            VersionTemplate = new CryptoKeyVersionTemplate
            {
                Algorithm = CryptoKeyVersion.Types.CryptoKeyVersionAlgorithm.GoogleSymmetricEncryption,
            }
        };

        // Call the API.
        CryptoKey result = client.CreateCryptoKey(keyRingName, id, key);

        // Return the result.
        return result;
    }
}

Go

이 코드를 실행하려면 먼저 Go 개발 환경을 설정하고 Cloud KMS Go SDK를 설치합니다.

import (
	"context"
	"fmt"
	"io"

	kms "cloud.google.com/go/kms/apiv1"
	"cloud.google.com/go/kms/apiv1/kmspb"
)

// createKeySymmetricEncryptDecrypt creates a new symmetric encrypt/decrypt key
// on Cloud KMS.
func createKeySymmetricEncryptDecrypt(w io.Writer, parent, id string) error {
	// parent := "projects/my-project/locations/us-east1/keyRings/my-key-ring"
	// id := "my-symmetric-encryption-key"

	// Create the client.
	ctx := context.Background()
	client, err := kms.NewKeyManagementClient(ctx)
	if err != nil {
		return fmt.Errorf("failed to create kms client: %w", err)
	}
	defer client.Close()

	// Build the request.
	req := &kmspb.CreateCryptoKeyRequest{
		Parent:      parent,
		CryptoKeyId: id,
		CryptoKey: &kmspb.CryptoKey{
			Purpose: kmspb.CryptoKey_ENCRYPT_DECRYPT,
			VersionTemplate: &kmspb.CryptoKeyVersionTemplate{
				Algorithm: kmspb