이 문서에서는 수동으로 만든 Cloud Key Management Service Cloud KMS 키를 사용하여 디스크 및 기타 스토리지 관련 리소스를 암호화하는 방법을 설명합니다. Cloud KMS에서 관리하는 키를 고객 관리 암호화 키(CMEK)라고 합니다.
CMEK를 사용하여 디스크, 머신 이미지, 인스턴트 스냅샷, 표준 스냅샷과 같은 Compute Engine 리소스를 암호화할 수 있습니다.
고객 제공 암호화 키(CSEK)를 사용하여 디스크와 기타 스토리지 리소스를 암호화하는 방법에 대한 자세한 내용은 고객 제공 암호화 키로 디스크 암호화를 참조하세요.
디스크 암호화에 대해 자세히 알아보세요.
시작하기 전에
- 디스크, 이미지, 영구 디스크 스냅샷, 가상 머신(VM) 인스턴스를 이해합니다.
- Compute Engine과 Cloud KMS를 동일한 Google Cloud 프로젝트에서 실행할지 아니면 다른 프로젝트에서 실행할지 결정합니다. Google Cloud 프로젝트 ID와 프로젝트 번호에 대한 자세한 내용은 프로젝트 식별을 참조하세요.
- Cloud KMS를 실행하는 Google Cloud 프로젝트의 경우 다음을 수행합니다.
-
Enable the Cloud KMS API.
-
-
아직 인증을 설정하지 않았다면 설정합니다.
인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다.
로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
KMS_PROJECT_ID
: Cloud KMS를 실행하는 Google Cloud 프로젝트의 ID(Compute Engine을 실행하는 프로젝트와 같은 경우도 해당)PROJECT_NUMBER
: Compute Engine 리소스를 실행하는 Google Cloud 프로젝트의 프로젝트 번호(Google Cloud 프로젝트 ID가 아님)CMEK로 기존 리소스를 암호화할 수 없습니다. 디스크, 이미지, 스냅샷을 CMEK로 만들 때만 암호화할 수 있습니다.
CMEK로 암호화된 인스턴트 스냅샷에서 디스크를 만들 때는 소스 디스크를 암호화하는 데 사용되는 키를 지정해야 합니다. 디스크 클론 및 표준 스냅샷과 같이 다른 CMEK로 암호화된 리소스를 사용할 때는 키를 지정할 필요가 없습니다.
Google Cloud 인프라에서 키를 관리하며 VM이 종료될 때 키가 삭제되므로 로컬 SSD 디스크에는 자체 키를 사용할 수 없습니다.
리전별 리소스(디스크)는 다음 Cloud KMS 위치 중 하나에 있는 키로만 암호화할 수 있습니다.
- 디스크와 동일한 리전의 키
- 디스크와 동일한 지리적 위치에 있는 멀티 리전 키
- 전역 위치의 키
예를 들어
us-west1-a
영역의 디스크는 전역 위치,us-west1
리전 또는us
멀티 리전의 키로 암호화할 수 있습니다.이미지 및 스냅샷과 같은 전역 리소스는 모든 위치의 키로 암호화할 수 있습니다. 자세한 내용은 Cloud KMS의 위치 유형을 참조하세요.
키를 사용한 디스크, 스냅샷, 이미지 암호화는 영구적입니다. 리소스에서 암호화를 삭제하거나 사용된 키를 변경할 수 없습니다. 암호화를 삭제하거나 키를 변경하는 유일한 방법은 새 암호화 옵션을 지정하면서 리소스 복사본을 만드는 것입니다.
하이퍼디스크 균형의 비밀 모드는 기존 하이퍼디스크 제한사항을 상속하며 다음과 같은 추가 제한사항이 있습니다.
- 다음 리전에서는 컨피덴셜 VM 또는 Confidential Google Kubernetes Engine 노드가 있는 N2D VM에만 비밀 모드의 하이퍼디스크 균형 디스크를 연결할 수 있습니다.
europe-west4
us-central1
us-east4
us-east5
us-south1
us-west4
- 하이퍼디스크 균형 디스크의 비밀 모드가 연결된 가상 머신(VM) 인스턴스는 일시중지하거나 재개할 수 없습니다.
- 하이퍼디스크 균형의 비밀 모드에서는 하이퍼디스크 스토리지 풀을 사용할 수 없습니다.
- 하이퍼디스크 균형 디스크의 비밀 모드에서는 커스텀 이미지를 만들 수 없습니다.
- 다음 리전에서는 컨피덴셜 VM 또는 Confidential Google Kubernetes Engine 노드가 있는 N2D VM에만 비밀 모드의 하이퍼디스크 균형 디스크를 연결할 수 있습니다.
- Google Cloud Console에서 디스크 페이지로 이동합니다.
- 새 디스크를 클릭하고 새 디스크의 속성을 입력합니다.
- 암호화에서 고객 관리 키를 선택합니다.
- 드롭다운 메뉴에서 이 디스크를 암호화하는 데 사용할 Cloud KMS 키를 선택합니다.
- 디스크를 만들려면 만들기를 클릭합니다.
DISK_NAME
: 새 디스크의 이름KMS_PROJECT_ID
: Cloud KMS 키를 소유하는 프로젝트REGION
: 키가 있는 리전KEY_RING
: 키가 포함된 키링의 이름KEY
: 디스크를 암호화하는 데 사용된 키의 이름PROJECT_ID
: Compute Engine을 실행하는 Google Cloud 프로젝트의 IDZONE
: VM을 만들 영역MACHINE_TYPE
: 머신 유형(예:c3-standard-4
)KMS_PROJECT_ID
: Cloud KMS 키를 소유하는 프로젝트REGION
: 디스크가 있는 리전KEY_RING
: 키가 포함된 키링의 이름KEY
: 디스크를 암호화하는 데 사용된 키의 이름SOURCE_IMAGE
: VM을 만들 때 사용할 이미지(예:projects/debian-cloud/global/images/debian-11-bullseye-v20231115
)PROJECT_ID
: Compute Engine을 실행하는 Google Cloud 프로젝트의 IDZONE
: 디스크를 만들 영역입니다.SOURCE_IMAGE
: 디스크를 만들 때 사용할 이미지(예:projects/debian-cloud/global/images/debian-11-bullseye-v20231115
)DISK_NAME
: 새 디스크의 이름KMS_PROJECT_ID
: Cloud KMS 키를 소유하는 프로젝트REGION
: 디스크가 있는 리전KEY_RING
: 키가 포함된 키링의 이름KEY
: 디스크를 암호화하는 데 사용된 키의 이름DISK_TYPE
: 만들 디스크의 유형- Google Cloud Console에서 디스크 페이지로 이동합니다.
- 새 디스크를 클릭하고 새 디스크의 속성을 입력합니다.
- 디스크 설정 섹션에서 디스크 유형으로 하이퍼디스크 균형을 선택합니다.
- 선택사항. 디스크의 기본 디스크 크기, 프로비저닝된 IOPS, 프로비저닝된 처리량 설정을 변경합니다.
- 암호화 섹션에서 Cloud KMS 키를 선택합니다.
- 키 목록에서 이 디스크를 암호화하는 데 사용할 Cloud HSM 키를 선택합니다.
- 컨피덴셜 컴퓨팅 섹션에서 컨피덴셜 컴퓨팅 서비스 사용 설정을 선택합니다.
- 디스크를 만들려면 만들기를 클릭합니다.
DISK_NAME
: 새 디스크의 이름KMS_PROJECT_ID
: Cloud HSM 키를 소유하는 프로젝트REGION
: 키가 있는 리전KEY_RING
: 키가 포함된 키링의 이름KEY
: 디스크를 암호화하는 데 사용된 키의 이름DISK_TYPE
: 만들 디스크 유형(예:hyperdisk-balanced
)PROJECT_ID
: Compute Engine을 실행하는 Google Cloud 프로젝트의 IDZONE
: VM을 만들 영역MACHINE_TYPE
: 머신 유형(예:n2d-standard-4
)KMS_PROJECT_ID
: Cloud HSM 키를 소유하는 프로젝트REGION
: 디스크가 있는 리전KEY_RING
: 키가 포함된 키링의 이름KEY
: 디스크를 암호화하는 데 사용된 키의 이름SOURCE_IMAGE
: VM을 만들 때 사용할 컨피덴셜 VM을 지원하는 이미지(예:projects/debian-cloud/global/images/debian-11-bullseye-v20231115
)PROJECT_ID
: Compute Engine을 실행하는 Google Cloud 프로젝트의 IDZONE
: 디스크를 만들 영역입니다.SOURCE_IMAGE
: 디스크를 만들 때 컨피덴셜 VM을 지원하는 이미지(예:projects/debian-cloud/global/images/debian-11-bullseye-v20231115
)DISK_NAME
: 새 디스크의 이름KMS_PROJECT_ID
: Cloud HSM 키를 소유하는 프로젝트REGION
: 디스크가 있는 리전KEY_RING
: 키가 포함된 키링의 이름KEY
: 디스크를 암호화하는 데 사용된 키의 이름DISK_TYPE
: 만들 디스크 유형(예:hyperdisk-balanced
)- Google Cloud 콘솔에서 스냅샷 페이지로 이동합니다.
- 스냅샷 만들기를 클릭합니다.
- 소스 디스크에서 스냅샷의 소스 디스크를 선택합니다. 스냅샷은 소스 디스크에 사용된 키와 동일한 키를 통해 자동으로 암호화됩니다.
스냅샷 설정에 구성된 사전 정의되었거나 맞춤설정된 기본 위치에 스냅샷을 만들려면
gcloud compute snapshots create
명령어를 사용합니다.gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE
-
또는 스냅샷 설정을 재정의하고 커스텀 스토리지 위치에 스냅샷을 만들려면 스냅샷 저장 위치를 나타내는
--storage-location
플래그를 포함하세요.gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE \ --storage-location=STORAGE_LOCATION
다음을 바꿉니다.
- SNAPSHOT_NAME: 스냅샷의 이름입니다.
- SOURCE_ZONE: 소스 디스크의 영역
- SOURCE_DISK_NAME: 스냅샷을 만들려는 디스크 볼륨의 이름
- SNAPSHOT_TYPE: 스냅샷 유형(STANDARD 또는 ARCHIVE).
스냅샷 유형을 지정하지 않으면
STANDARD
스냅샷이 생성됩니다. -
STORAGE_LOCATION: (선택사항) 스냅샷을 저장할 Cloud Storage 멀티 리전 또는 Cloud Storage 리전. 스토리지 위치는 하나만 지정할 수 있습니다.
스냅샷 설정에 구성된 사전 정의되었거나 맞춤 설정된 기본 스토리지 위치를 재정의하려는 경우에만
--storage-location
매개변수를 사용합니다.
-
스냅샷 설정에 구성된 사전 정의되었거나 맞춤설정된 기본 위치에 스냅샷을 만들려면
snapshots.insert
메서드에POST
요청을 수행하세요.POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY" }, "snapshotType": "SNAPSHOT_TYPE" }
-
또는 스냅샷 설정을 재정의하고 커스텀 스토리지 위치에 스냅샷을 만들려면
snapshots.insert
메서드에 대해POST
요청을 수행하고 요청에storageLocations
속성을 포함합니다.POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY" }, "snapshotType": "SNAPSHOT_TYPE", "storageLocations": [ "STORAGE_LOCATION" ], }
- DESTINATION_PROJECT_ID: 스냅샷을 만들려는 프로젝트의 ID
- SNAPSHOT_NAME: 스냅샷의 이름입니다.
- SOURCE_PROJECT_ID: 소스 디스크 프로젝트의 ID
- SOURCE_ZONE: 소스 디스크의 영역
- SOURCE_DISK_NAME: 스냅샷을 만들려는 디스크의 이름
- KMS_PROJECT_ID: Cloud Key Management Service에 저장된 암호화 키가 포함된 프로젝트
- KEY_REGION: Cloud KMS 키가 있는 리전
- KEY_RING: Cloud KMS 키가 포함된 키링의 이름
- SNAPSHOT_KEY: 소스 디스크를 암호화하는 데 사용한 Cloud KMS 키의 이름
- SNAPSHOT_TYPE: 스냅샷 유형(STANDARD 또는 ARCHIVE).
스냅샷 유형을 지정하지 않으면
STANDARD
스냅샷이 생성됩니다. -
STORAGE_LOCATION: (선택사항) 스냅샷을 저장할 Cloud Storage 멀티 리전 또는 Cloud Storage 리전. 스토리지 위치는 하나만 지정할 수 있습니다.
스냅샷 설정에 구성된 사전 정의되었거나 맞춤 설정된 기본 스토리지 위치를 재정의하려는 경우에만
storageLocations
매개변수를 사용합니다. - Google Cloud 콘솔에서 이미지 페이지로 이동합니다.
- 이미지 만들기를 클릭합니다.
- 소스 디스크에서 이미지를 만들려는 디스크를 선택합니다.
- 암호화에 고객 관리 키를 선택합니다.
- 드롭다운 메뉴에서 이 이미지를 암호화하는 데 사용할 Cloud KMS 키를 선택합니다.
- 이미지 생성 프로세스를 계속 진행합니다.
IMAGE_NAME
: 만들려는 이미지의 이름SOURCE_DISK
: 스냅샷을 만들 디스크의 이름KMS_PROJECT_ID
: Cloud KMS 키가 포함된 프로젝트REGION
: Cloud KMS 키가 있는 리전KEY_RING
: Cloud KMS 키가 포함된 키링KEY
: 새 디스크를 암호화하는 데 사용할 키의 이름PROJECT_ID
: 암호화된 이미지를 만들 프로젝트IMAGE_NAME
: 만들려는 이미지의 이름KMS_PROJECT_ID
: Cloud KMS 키가 포함된 프로젝트REGION
: Cloud KMS 키가 있는 리전KEY_RING
: Cloud KMS 키가 포함된 키링KEY
: 소스 디스크를 암호화하는 데 사용한 키의 이름- Google Cloud Console에서 디스크 페이지로 이동합니다.
- 새 디스크를 클릭하고 새 디스크의 속성을 입력합니다.
- 소스 유형에서 사용할 스냅샷 또는 이미지를 선택합니다.
선택사항: 새 암호화 키를 지정하려면 암호화에서 사용할 암호화 키 유형을 지정한 후 암호화 키 정보를 제공합니다.
고객 관리 또는 고객 제공 암호화 키를 삭제하려면 암호화에서 기본값인 Google 관리 암호화 키를 사용합니다.
Persistent Disk 생성 프로세스를 계속 진행합니다.
DISK_NAME
: 새 디스크의 이름SNAPSHOT_NAME
: 암호화된 스냅샷의 이름스냅샷 대신 이미지를 사용하려면
--source-snapshot SNAPSHOT_NAME
을--image IMAGE_NAME
으로 바꿉니다.KMS_PROJECT_ID
: 선택사항: Cloud KMS 키가 포함된 프로젝트REGION
: 선택사항: Cloud KMS 키가 있는 리전KEY_RING
: 선택사항: Cloud KMS 키가 포함된 키링KEY
: 선택사항: 새 디스크를 암호화하는 데 사용할 Cloud KMS 키의 이름새 디스크를 암호화하려면 다음 중 하나를 실행합니다.
- 새 고객 관리 암호화 키를 지정하려면
--kms-key
플래그를 사용합니다. - 기본적인 Google이 소유하고 Google이 관리하는 키를 사용하려면
--kms-key
플래그를 포함하지 마세요.
- 새 고객 관리 암호화 키를 지정하려면
PROJECT_ID
: 새 디스크를 만들 프로젝트ZONE
: 새 디스크를 만들 영역DISK_NAME
: 새 디스크의 이름SNAPSHOT_PROJECT_ID
: 스냅샷이 포함된 프로젝트SNAPSHOT_NAME
: 암호화된 스냅샷의 이름스냅샷 대신 이미지를 사용하려면
sourceSnapshot
을sourceImage
로 바꿉니다.KMS_PROJECT_ID
: 선택사항: Cloud KMS 키가 포함된 프로젝트REGION
: 선택사항: Cloud KMS 키가 있는 리전KEY_RING
: 선택사항: Cloud KMS 키가 포함된 키링KEY
: 선택사항: 새 디스크를 암호화하는 데 사용할 Cloud KMS 키의 이름diskEncryptionKey
를 포함하는 경우 디스크가 지정된 Cloud KMS 키로 암호화됩니다.diskEncryptionKey
를 포함하지 않으면 Google이 소유하고 Google이 관리하는 키를 사용해서 디스크가 암호화됩니다.Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.
VM 세부정보를 지정하고 부팅 디스크 섹션에서 변경을 클릭합니다. 그런 후 다음 작업을 수행합니다.
- 기존 디스크를 클릭합니다.
- 디스크 목록에서 VM에 연결할 기존 디스크를 선택합니다.
- 선택을 클릭합니다.
VM 만들기 프로세스를 계속 진행합니다.
VM_NAME
: 만들려는 VM의 이름DISK_NAME
: 암호화된 디스크의 이름PROJECT_ID
: 새 VM을 만들 프로젝트ZONE
: 새 VM을 만들 영역DISK_ALIAS
: Linux 운영체제를 실행하는 VM의/dev/disk/by-id/google-*
디렉터리에서 디스크 별칭으로 사용할 고유한 기기 이름. 이 이름은 인스턴스 내에서 마운트나 크기 조절과 같은 작업을 위해 디스크를 참조하는 데 사용할 수 있습니다. 기기 이름을 지정하지 않으면 VM은 이 디스크에 적용할 기본 기기 이름을persistent-disk-x
형식으로 선택합니다. 여기서x
는 Compute Engine에서 할당한 번호입니다. 이 필드는 Persistent Disk 볼륨에만 적용됩니다.DISK_NAME
: 암호화된 디스크의 이름- 암호화된 디스크의 스냅샷을 만듭니다.
- 새 암호화된 스냅샷을 사용하여 새 영구 디스크를 생성합니다.
- Cloud KMS 키를 순환합니다.
- 암호화된 디스크의 스냅샷을 만듭니다.
- 새 스냅샷을 사용하여 이전 단계에서 순환된 키로 새 디스크를 만듭니다.
- 이전 암호화 키를 사용하는 VM에 연결된 디스크를 바꿉니다.
- 디스크가 연결된 VM을 부팅할 수 없습니다. 키 해지 시 VM 종료를 사용 설정한 경우 연결된 디스크가 있는 VM에서는 키가 종료를 보호하는 데 도움이 됩니다.
- 디스크를 VM에 연결하거나 이에 대해 스냅샷을 만들 수 없습니다.
- 스냅샷을 사용하여 디스크를 만들 수 없습니다.
- 이미지를 사용하여 디스크를 만들 수 없습니다.
- Cloud KMS 키로 보호되는 디스크가 포함된 VM 만들기를 시작합니다.
- 네트워킹, 디스크, 보안, 관리, 단독 테넌시 메뉴를 엽니다.
- 관리 섹션을 펼칩니다.
- 고객 관리 암호화 키(CMEK) 취소 정책에서 종료를 선택합니다.
- Cloud KMS 키로 보호되는 디스크가 포함된 새 인스턴스 템플릿 만들기를 시작합니다.
- 네트워킹, 디스크, 보안, 관리, 단독 테넌시 메뉴를 엽니다.
- 관리 섹션을 펼칩니다.
- 고객 관리 암호화 키(CMEK) 취소 정책에서 종료를 선택합니다.
REST
로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.
필요한 역할
Compute Engine 서비스 에이전트에 Cloud KMS 키를 사용하여 리소스를 보호하는 데 필요한 권한이 있는지 확인하려면 관리자에게 Compute Engine 서비스 에이전트에 프로젝트에 대한 Cloud KMS CryptoKey 암호화/복호화(
roles/cloudkms.cryptoKeyEncrypterDecrypter
) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.관리자는 커스텀 역할이나 다른 사전 정의된 역할을 통해 Compute Engine 서비스 에이전트에 필요한 권한을 부여할 수도 있습니다.
Compute Engine 서비스 에이전트의 형식은 다음과 같습니다.
service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
Google Cloud CLI를 사용하여 역할을 할당할 수 있습니다.
gcloud projects add-iam-policy-binding KMS_PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
다음을 바꿉니다.
암호화 사양
Compute Engine에서 데이터를 보호하는 데 사용되는 Cloud KMS 키는 AES-256 키입니다. 이러한 키는 키 암호화 키이며, 데이터 자체가 아니라 데이터를 암호화하는 데이터 암호화 키를 암호화합니다.
디스크의 데이터는 Google이 소유하고 Google이 관리하는 키를 사용하여 암호화됩니다. Google Cloud의 기본 암호화와 관련된 사양은 보안 문서의 기본 저장 데이터 암호화를 참조하세요.
하이퍼디스크 균형의 비밀 모드 및 Cloud HSM을 사용하면 데이터 암호화 키(DEK)에 하드웨어 지원 엔클레이브가 있는 추가 보안 속성이 있습니다.
제한사항
수동 또는 자동 키 생성
Cloud KMS 키를 수동으로 만들거나 Cloud KMS 자동 키(미리보기)를 사용할 수 있습니다. Autokey는 프로비저닝 및 할당을 자동화하여 Cloud KMS 키 만들기 및 관리를 간소화합니다. Autokey를 사용하면 키링, 키, 서비스 계정을 미리 프로비저닝할 필요가 없습니다. 대신 Compute Engine 리소스를 만들 때 필요에 따라 생성됩니다. 자세한 내용은 Autokey 개요를 참조하세요.
수동으로 키링 및 키 만들기
Cloud KMS를 실행하는 Google Cloud 프로젝트의 경우 키링 및 키 만들기에 설명된 대로 키링과 키를 만듭니다.
CMEK로 새 Persistent Disk 암호화
VM 또는 디스크 생성 중 키를 입력하여 새 Persistent Disk를 암호화할 수 있습니다.
콘솔
gcloud
gcloud compute disks create
명령어를 사용하여 암호화된 디스크를 만들고--kms-key
플래그를 사용하여 키를 지정합니다.gcloud compute disks create DISK_NAME \ --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
다음을 바꿉니다.
REST
instances.insert
메서드에 대한POST
요청을 생성합니다. 디스크를 암호화하려면diskEncryptionKey
속성을kmsKeyName
속성과 함께 사용합니다. 예를 들어 다음과 같이 Cloud KMS 키로 VM을 만드는 동안 새 디스크를 암호화할 수 있습니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "disks": [ { "type": "PERSISTENT", "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY" }, "initializeParams": { "sourceImage": "SOURCE_IMAGE" }, "boot": true } ], ... }
다음을 바꿉니다.
마찬가지로
disks.insert
메서드를 사용하여 새 독립형 Persistent Disk를 만들고 Cloud KMS 키로 이를 암호화할 수 있습니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks?sourceImage=SOURCE_IMAGE { "name": "DISK_NAME", "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY" }, "type": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE" }
다음을 바꿉니다.
비밀 모드로 하이퍼디스크 균형 볼륨 만들기
Google Cloud 콘솔, Google Cloud CLI 또는 REST를 사용하여 비밀 모드로 새 하이퍼디스크를 만듭니다.
콘솔
gcloud
gcloud compute disks create
명령어를 사용하여 하이퍼디스크 균형의 비밀 모드로 새 디스크를 암호화합니다.--confidential-compute
플래그로 비밀 모드를 사용 설정하고--kms-key
플래그를 사용하여 키를 지정합니다.gcloud compute disks create DISK_NAME \ --type=hyperdisk-balanced \ --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY \ --confidential-compute
다음을 바꿉니다.
REST
instances.insert
메서드에 대한POST
요청을 생성합니다. 하이퍼디스크 균형의 비밀 모드로 디스크를 암호화하려면diskEncryptionKey
속성을kmsKeyName
속성과 함께 사용하고enableConfidentialCompute
플래그를 설정합니다. 예를 들어 다음과 같이 Cloud HSM 키로 VM을 만드는 동안 새 디스크를 암호화할 수 있습니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "disks": [ { "type": "DISK_TYPE", "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY" }, "initializeParams": { "sourceImage": "SOURCE_IMAGE", "enableConfidentialCompute": true }, "boot": true } ], "networkInterfaces": [ { "network": "global/networks/default" } ] }
다음을 바꿉니다.
마찬가지로
disks.insert
메서드를 사용하여 하이퍼디스크 균형의 새 비밀 모드를 만들 수 있습니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks?sourceImage=SOURCE_IMAGE { "name": "DISK_NAME", "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY" }, "type": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE", "enableConfidentialCompute": true }
다음을 바꿉니다.
CMEK로 암호화된 디스크에서 스냅샷 만들기
CMEK로 암호화된 디스크에서 생성한 스냅샷을 보호하려면 디스크를 암호화하는 데 사용한 암호화 키와 동일한 암호화 키를 사용해야 합니다.
소스 디스크에서도 CMEK가 사용되지 않는 한 CMEK를 사용하는 스냅샷을 만들 수 없습니다. 또한 완전히 새로운 디스크 이미지와 새 영구 디스크를 만들지 않으면 CMEK 암호화 디스크 또는 스냅샷을 Google Cloud 기본 암호화를 사용하도록 변환할 수 없습니다.
CMEK로 암호화된 디스크의 스냅샷은 증분입니다.
콘솔
gcloud
고객 관리 암호화의 경우 디스크를 암호화하는 데 사용된 Cloud KMS 키가 스냅샷을 암호화하는 데에도 사용됩니다.
스냅샷 설정에 따라 또는 선택한 대체 스토리지 위치를 사용해서 정의된 스토리지 위치 정책으로 스냅샷을 만들 수 있습니다. 자세한 내용은 스냅샷 스토리지 위치 선택을 참조하세요.
REST
스냅샷 설정에 따라 또는 선택한 대체 스토리지 위치를 사용해서 정의된 스토리지 위치 정책으로 스냅샷을 만들 수 있습니다. 자세한 내용은 스냅샷 스토리지 위치 선택을 참조하세요.
다음을 바꿉니다.
CMEK로 가져온 이미지 암호화
Compute Engine으로 커스텀 이미지를 가져올 때 새 이미지를 암호화할 수 있습니다. 이미지를 가져오려면 먼저 디스크 이미지 파일을 만들고 압축한 다음 압축된 파일을 Cloud Storage에 업로드해야 합니다.
콘솔
gcloud
이미지를 가져오고 암호화하려면
gcloud compute images create
명령어를 사용합니다. 고객 관리 암호화의 경우 이미지의 Cloud KMS 키를 지정합니다.gcloud compute images create IMAGE_NAME \ --source-disk=SOURCE_DISK \ --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
다음을 바꿉니다.
REST
가져온 이미지를 암호화하려면
images.insert
메서드에 대한POST
요청을 생성합니다. 압축 파일의 URI를 지정하고, 이미지 생성 요청에imageEncryptionKey
속성을 추가하고,kmsKeyName
속성에 이미지를 암호화하는 키를 지정합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images { "rawDisk": { "source": "http://storage.googleapis.com/example-image/example-image.tar.gz" }, "name": "IMAGE_NAME", "sourceType": "RAW", "imageEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY" } }
다음을 바꿉니다.
CMEK로 암호화된 스냅샷에서 Persistent Disk 만들기
암호화된 스냅샷에서 새 독립형 Persistent Disk를 만들려면 다음을 수행합니다.
콘솔
gcloud
gcloud compute disks create
명령어를 사용하여 암호화된 스냅샷에서 새 독립형 Persistent Disk를 만듭니다.gcloud compute disks create DISK_NAME \ --source-snapshot SNAPSHOT_NAME \ --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
다음을 바꿉니다.
REST
compute.disks.insert
메서드에 대한POST
요청을 생성하여 암호화된 스냅샷에서 새 독립형 Persistent Disk를 만듭니다.sourceSnapshot
속성을 사용하여 스냅샷을 지정합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks { "name": "DISK_NAME", "sourceSnapshot": "projects/SNAPSHOT_PROJECT_ID/global/snapshots/SNAPSHOT_NAME", "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY" } }
다음을 바꿉니다.
CMEK로 암호화된 부팅 디스크를 새 VM에 연결
콘솔
gcloud
새 VM을 만들 때 암호화된 디스크를 연결하려면
gcloud compute instances create
명령어를 사용합니다. 다음 예시와 같이--disk
플래그를 사용하여 암호화된 부팅 디스크를 지정합니다.gcloud compute instances create VM_NAME \ ... --disk name=DISK_NAME,boot=yes
다음을 바꿉니다.
REST
compute.instances.insert
메서드에 대한POST
요청을 생성합니다. 다음 예시와 같이disks
속성을 사용하여 암호화된 부팅 디스크를 지정합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { ... "disks": [ { "deviceName": "DISK_ALIAS", "source": "projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME" } ] }
다음을 바꿉니다.
Persistent Disk에서 Cloud KMS 암호화 키 삭제
암호화된 디스크의 콘텐츠를 복호화하고, 그 대신 Google Cloud 기본 암호화를 사용하는 새 디스크를 생성할 수 있습니다. 기본적으로 Google Cloud는 저장 데이터를 암호화합니다.
새 Persistent Disk를 만들면 Google Cloud 기본 암호화를 사용하여 디스크 콘텐츠를 보호하는 데 도움이 됩니다. 이 디스크에서 만드는 스냅샷도 기본 암호화를 사용해야 합니다.
디스크의 Cloud KMS 암호화 키 순환
새 Cloud KMS 키 버전을 사용하는 새 디스크를 만들어 디스크를 암호화하는 데 사용되는 키를 순환합니다. 키 순환은 표준화된 보안 방식을 준수하기 위한 권장사항입니다. 키를 순환하려면 다음을 수행합니다.
새 디스크를 만들 때는 암호화를 위해 새 키 버전이 사용됩니다. 이 디스크에서 만드는 모든 스냅샷에는 최신 기본 키 버전이 사용됩니다.
키를 순환해도 이전 키 버전으로 암호화된 데이터는 자동으로 다시 암호화되지 않습니다. 자세한 내용은 데이터 다시 암호화를 선택합니다. 키를 순환해도 기존 키 버전이 자동으로 사용 중지되거나 폐기되지는 않습니다.
CMEK 사용 중지 또는 삭제의 영향
암호화 키를 중지하거나 삭제하면 키가 보호하는 데 도움이 되는 다음 리소스가 다음과 같은 영향을 받습니다.
키를 사용 중지한 경우 키를 사용 설정하여 위의 결과를 되돌릴 수 있습니다. 키를 삭제하면 앞의 결과를 되돌릴 수 없습니다.
Cloud KMS 키 해지 시 VM 종료 구성
VM에 연결된 Persistent Disk를 보호하는 데 도움이 되는 Cloud KMS 키를 취소하면 VM이 자동으로 종료되도록 구성할 수 있습니다. 키는 사용 중지하거나 삭제하여 취소할 수 있습니다. 이 설정을 사용 설정하면 VM이 키 취소 후 7시간 내에 종료됩니다.
키를 다시 사용 설정하면 키가 보호하는 연결된 디스크를 사용하여 VM을 다시 시작할 수 있습니다. 키를 사용 설정한 후에는 VM이 자동으로 다시 시작되지 않습니다.
콘솔
Cloud KMS 키가 취소될 때 VM을 종료되도록 구성하려면 다음을 수행합니다.
gcloud
gcloud compute instances create
명령어를 사용하여 VM을 만들고--key-revocation-action-type=stop
을 포함합니다.gcloud compute instances create
VM_NAME
\ --imageIMAGE
\ --key-revocation-action-type=stopREST
instances.insert
메서드를 사용하여 VM을 만들고"keyRevocationActionType"
속성을"STOP"
으로 설정합니다. 다음 예시는 공개 이미지로부터 VM을 만듭니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name": "
VM_NAME
", "disks": [ { "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot": true } ], "keyRevocationActionType": "STOP" }또는 Google Cloud CLI 또는 REST를 사용하여 키 취소 시 종료되는 VM을 만들도록 인스턴스 템플릿을 구성할 수 있습니다.
콘솔
인스턴스 템플릿을 사용하여 Cloud KMS 키가 취소되었을 때 종료되는 VM을 만들 수 있습니다.
gcloud
gcloud compute instance-templates create
명령어를 사용하여 인스턴스 템플릿을 만들고--key-revocation-action-type=stop
을 포함합니다.gcloud compute instance-templates create
INSTANCE_TEMPLATE_NAME
\ --key-revocation-action-type=stopREST
instanceTemplates.insert
메서드에 대한 POST 요청을 생성합니다. 요청 본문에서는 모든 필요한 구성 필드를 명시적으로 정의해야 합니다. 이 템플릿에서 생성된 VM이 키 취소 시 종료되도록 하려면"keyRevocationActionType":"STOP"
을 지정합니다. 예를 들어 키 취소 시 종료되는 VM을 만드는 최소 필수 필드가 포함된 인스턴스 템플릿은 다음과 같습니다.POST https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID
/zones/ZONE
/instanceTemplates { "name": "example-template", "properties": { "machineType": "e2-standard-4", "networkInterfaces": [ { "network": "global/networks/default", "accessConfigs": [ { "name": "external-IP", "type": "ONE_TO_ONE_NAT" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/family/debian-11" } } ], "keyRevocationActionType": "STOP" } }Cloud KMS 취소 시 종료되도록 구성된 VM을 만든 후 Cloud KMS 키로 암호화된 Persistent Disk를 create 연결합니다.
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2024-12-03(UTC)
-