Cloud KMS로 키 버전 가져오기

이 가이드에서는 암호화 키를 Cloud HSM 또는 Cloud Key Management Service로 새 키 버전으로 가져오는 방법을 보여줍니다.

한도 및 제한사항을 비롯한 키 가져오기에 대한 자세한 내용은 키 가져오기를 참고하세요.

시작하기 전에 단계를 제외한 5~10분 후에 이 가이드의 단계를 완료할 수 있습니다. 키를 수동으로 래핑하면 작업이 복잡해집니다.

시작하기 전에

새 프로젝트를 만들어 테스트 후 정리를 쉽게 하고 키를 가져올 적절한 Identity and Access Management(IAM) 권한이 있는지 확인하기 위해 이 기능을 테스트하는 것이 좋습니다.

키를 가져오기 전에 프로젝트, 로컬 시스템, 키 자체를 준비해야 합니다.

프로젝트 준비

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the required API.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  5. Google Cloud CLI를 설치합니다.

  6. 외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  7. gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the required API.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  11. Google Cloud CLI를 설치합니다.

  12. 외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  13. gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.

    gcloud init
  14. 가져오기를 수행하는 사용자는 키링, 키, 가져오기 작업을 만들 수 있는 다음 IAM 권한이 필요합니다. 사용자가 프로젝트 소유자가 아닌 경우 두 가지 사전 정의된 역할 중 모두를 사용자에게 할당할 수 있습니다.

    • roles/editor
    • roles/cloudkms.importer

    Cloud KMS에서 사용할 수 있는 IAM 역할 및 권한에 대한 자세한 내용은 권한 및 역할을 참조하세요.

로컬 시스템 준비

다음 옵션 중 하나를 선택하여 로컬 시스템을 준비합니다. 자동 키 래핑은 대부분의 사용자에게 권장됩니다.

키 준비

키의 알고리즘 및 길이가 지원되는지 확인합니다. 키에 허용되는 알고리즘은 키가 대칭적 암호화, 비대칭 암호화, 비대칭 서명에 사용되는지 여부와 키가 소프트웨어 또는 HSM에 저장되는지 여부에 따라 다릅니다. 가져오기 요청의 일부로 키의 알고리즘을 지정합니다.

별개로 키가 인코딩되는 방식을 확인하고, 필요한 경우 조정해야 합니다.

만들거나 가져온 키 버전에서 다음을 변경할 수 없습니다.

  • 보호 수준은 키가 소프트웨어, 멀티 테넌트 HSM, 싱글 테넌트 HSM 또는 외부 키 관리 시스템에 유지되는지 여부를 나타냅니다. 이러한 스토리지 환경 중 하나에서 다른 스토리지 환경으로 키 자료를 이동할 수 없습니다. 키의 모든 버전은 동일한 보호 수준을 갖습니다.

  • 용도는 키 버전이 대칭 암호화, 비대칭 암호화 또는 비대칭 서명에 사용되는지 여부를 나타냅니다. 키의 용도는 해당 키의 버전을 만드는 데 사용할 수 있는 가능한 알고리즘을 제한합니다. 키의 모든 버전은 용도가 동일합니다.

가져올 키가 없지만 키 가져오기 절차를 확인하려면 다음 명령어를 사용하여 로컬 시스템에서 대칭 키를 만들 수 있습니다.

openssl rand 32 > ${HOME}/test.bin

이 키는 테스트에만 사용하세요. 이 방법으로 만든 키는 프로덕션 용도에 적합하지 않을 수 있습니다.

수동으로 키를 래핑해야 하는 경우, 이 가이드의 절차를 계속 진행하기 전에 래핑합니다.

대상 키 및 키링 만들기

Cloud KMS 키는 키 버전이 0개 이상 포함된 컨테이너 객체입니다. 각 키 버전에는 암호화 키가 포함되어 있습니다.

Cloud KMS 또는 Cloud HSM으로 키를 가져올 때 가져온 키는 기존 Cloud KMS 또는 Cloud HSM 키의 새 키 버전이 됩니다. 이 가이드의 나머지 부분에서는 이 키를 대상 키라고 합니다. 키 자료를 가져오려면 먼저 대상 키가 있어야 합니다.

키 버전을 가져오는 것은 해당 키의 기존 버전에 영향을 미치지 않습니다. 그러나 키 가져오기를 테스트할 때는 비어 있는 키를 만드는 것이 좋습니다. 비어 있는 키는 버전이 없고 활성화되지 않았으며 사용할 수 없습니다.

새로 만든 키에 가져온 버전만 포함되도록 지정하여 Cloud KMS에서 실수로 새 버전을 생성하는 것을 방지할 수 있습니다.

키링에 키가 있습니다. 이 가이드에서는 이 키링을 대상 키링이라고 합니다. 대상 키링의 위치는 가져오기 후 키 자료를 사용할 수 있는 위치를 결정합니다. 일부 위치에서는 Cloud HSM 키를 만들거나 가져올 수 없습니다. 키를 만든 후에는 다른 키링 또는 위치로 이동할 수 없습니다.

Google Cloud CLI 또는 Google Cloud 콘솔을 사용하여 새 키 링에 빈 키를 만들려면 다음 단계를 따르세요.

콘솔

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

    Key Management Service로 이동

  2. 키링 만들기를 클릭합니다.

  3. 키링 이름 필드에 키링의 이름을 입력합니다.

  4. 위치 유형에서 위치 유형과 위치를 선택합니다.

  5. 만들기를 클릭합니다. 키 만들기 페이지가 열립니다.

  6. 키 이름 필드에 키의 이름을 입력합니다.

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

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

  9. 키 자료에서 가져온 키를 선택한 다음 계속을 클릭합니다. 이렇게 하면 초기 키 버전이 생성되지 않습니다.

  10. 키의 용도알고리즘을 설정한 다음 계속을 클릭합니다.

  11. 선택사항: 이 키에 가져온 키 버전만 포함하려면 키 버전을 가져오기만 하도록 제한을 선택합니다. 이렇게 하면 Cloud KMS에서 실수로 새 키 버전을 만드는 것을 방지할 수 있습니다.

  12. 선택사항: 가져온 키의 경우 기본적으로 자동 순환이 중지됩니다. 자동 순환을 사용 설정하려면 키 순환 기간 필드에서 값을 선택합니다.

    자동 순환을 사용 설정하면 Cloud KMS에 새로운 키 버전이 생성되고 순환 후 가져온 키 버전은 더 이상 기본 키 버전이 되지 않습니다.

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

gcloud

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

  1. 대상 키링을 만듭니다. 사용하려는 보호 수준과 호환되는 위치를 선택합니다. 지원되는 위치에 대한 자세한 내용은 Cloud KMS 위치를 참고하세요.

    gcloud kms keyrings create KEY_RING \
      --location LOCATION
    

    키링을 만드는 방법에 대해 자세히 알아보세요.

  2. --skip-initial-version-creation 플래그와 함께 kms keys create 명령어를 사용하여 타겟 키를 만듭니다. 이렇게 하면 가져온 키 자료가 버전 1인 초기 키 버전이 없는 키가 생성됩니다. --import-only 플래그를 사용하여 Cloud KMS가 새 키 버전의 키 자료를 생성하지 못하도록 합니다. 이 플래그가 설정되면 이 키의 새 키 버전을 가져와야 합니다. --import-only로 생성된 키는 수동으로 순환해야 합니다.

    gcloud kms keys create KEY_NAME \
      --location LOCATION \
      --keyring KEY_RING \
      --purpose PURPOSE \
      --protection-level PROTECTION_LEVEL \
      --skip-initial-version-creation \
      --import-only
    

    다음을 바꿉니다.

    • KEY_NAME: 키에 사용할 이름입니다.
    • LOCATION: 키링의 위치입니다.
    • KEY_RING: 키를 만들 키링입니다.
    • PURPOSE: 키에 사용할 용도입니다.
    • PROTECTION_LEVEL: 키에 사용할 보호 수준입니다(예: HSM).

    단독 테넌트 Cloud HSM 키를 만들려면 이 명령어에 --cryptoKeyBackend 플래그를 추가하고 키를 가져올 단독 테넌트 Cloud HSM 인스턴스의 리소스 식별자를 추가합니다.

    --crypto-key-backend="projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"

Go

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