인스턴트 스냅샷에서 디스크 복원


인스턴트 스냅샷에서 캡처된 데이터에 액세스하려면 인스턴트 스냅샷에서 디스크를 복원하거나 새 디스크를 만들어야 합니다.

이 페이지에서는 인스턴트 스냅샷에서 디스크를 만드는 방법을 설명합니다. 디스크를 만든 후 가상 머신(VM)에 연결하여 사용할 수 있습니다.

시작하기 전에

  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 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

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      자세한 내용은 Google Cloud 인증 문서의 REST 사용을 위한 인증을 참고하세요.

필수 역할 및 권한

인스턴트 스냅샷에서 디스크를 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

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

이러한 사전 정의된 역할에는 인스턴트 스냅샷에서 디스크를 만드는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

인스턴트 스냅샷에서 디스크를 만들려면 다음 권한이 필요합니다.

  • 디스크 만들기:
    • 새 디스크의 대상 프로젝트에 대한 compute.disks.create 권한
    • 소스 인스턴트 스냅샷에 대한 compute.instantSnapshots.useReadOnly 권한

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

제한사항

다음 제한사항이 적용됩니다.

  • 인스턴트 스냅샷에서 디스크를 만들면 새 디스크의 유형, 스토리지 위치 및 암호화는 항상 스냅샷의 소스 디스크와 같습니다.

  • 인스턴트 스냅샷에서 직접 VM을 만들 수는 없습니다. 인스턴트 스냅샷에서 디스크를 만든 다음 새 디스크를 사용하여 VM을 만들어야 합니다.

  • 인스턴트 스냅샷의 소스 디스크가 고객 관리 암호화 키 또는 고객 제공 암호화 키를 사용하는 경우 인스턴트 스냅샷에서 새 디스크를 만들 때 동일한 암호화 키를 제공해야 합니다.

    다음 예시를 살펴보겠습니다. 고객 제공 암호화 키(CSEK) KEY-1로 암호화된 DISK-1 디스크가 있다고 가정해 봅시다. DISK-1에서 생성된 인스턴트 스냅샷 IS-1도 있습니다. IS-1에서 새 디스크를 만들려면 새 디스크를 만들 때 동일한 키(KEY-1)를 제공해야 합니다.

    디스크가 고객 관리 암호화 키(CMEK)로 암호화된 경우 REST 또는 gcloud CLI를 사용하여 디스크를 만드는 경우에만 키를 제공하면 됩니다. Google Cloud 콘솔을 사용하는 경우 암호화 키를 지정할 필요가 없습니다.

인스턴트 스냅샷에서 디스크 생성

인스턴트 스냅샷은 소스 디스크와 동일한 암호화 방식으로 암호화됩니다. 인스턴트 스냅샷에서 디스크를 만드는 단계는 인스턴트 스냅샷의 소스 디스크가 어떻게 암호화되었는지에 따라 다릅니다.

각 소스 디스크는 다음 방법 중 하나로 암호화됩니다.

  • Google 소유 및 Google 관리 키. 전역 window는 기본 설정이며,
  • 고객 관리 암호화 키(CMEK)
  • 고객 제공 암호화 키(CSEK)

특정 디스크가 암호화되는 방식을 알아보려면 디스크 암호화 정보 보기를 참조하세요.

기본 암호화로 암호화된 인스턴트 스냅샷에서 디스크 만들기

gcloud CLI, Google Cloud 콘솔 또는 REST를 사용하여 인스턴트 스냅샷에서 디스크를 만들 수 있습니다.

콘솔

  1. 복원할 인스턴트 스냅샷을 찾습니다.

    1. Google Cloud 콘솔에서 스냅샷 페이지로 이동합니다.

      스냅샷으로 이동

    2. 인스턴트 스냅샷 탭을 클릭합니다.

    3. 이름 열에서 복원할 인스턴트 스냅샷 이름을 클릭합니다.

  2. 디스크 만들기를 클릭합니다.

  3. 이름 필드에 디스크의 새 이름을 입력합니다.

  4. (선택사항) 설명 필드에 추가 세부정보를 입력합니다.

  5. 디스크 소스 유형인스턴트 스냅샷인지 확인합니다.

  6. 소스 인스턴트 스냅샷 목록에서 인스턴트 스냅샷을 선택합니다.

  7. (선택사항) 디스크의 추가 맞춤설정을 구성합니다.

    • 크기 입력: 크기 필드에 디스크 크기를 GB 단위로 지정합니다. 크기는 스냅샷의 소스 디스크 크기보다 크거나 같아야 합니다.
    • 백업 예약: Compute Engine이 일정에 따라 이 새 디스크의 표준 스냅샷을 만들도록 하려면 스냅샷 일정 사용 설정 체크박스를 선택하고 스냅샷 일정을 선택합니다. 그렇지 않으면 체크박스를 선택 해제합니다.
  8. (선택사항) 프로젝트를 구성하려면 라벨을 하나 이상 추가합니다.

  9. 디스크를 만들려면 만들기를 클릭합니다.

gcloud

gcloud compute disks create 명령어를 사용합니다. 지정하는 인수는 영역 디스크 또는 리전 디스크를 만드는지 여부에 따라 달라집니다.

영역 디스크 만들기

--zone 플래그로 영역을 지정합니다.

gcloud compute disks create DISK_NAME --zone=ZONE \
  --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME

다음을 바꿉니다.

  • DISK_NAME: 새 디스크의 이름
  • ZONE: 새 디스크의 영역(예: europe-west1-a)
  • SOURCE_INSTANT_SNAPSHOT_NAME: 소스 인스턴트 스냅샷의 이름

리전 디스크 만들기

--region으로 리전을 지정하고 새 디스크의 대상 복제 영역을 --replica-zones로 지정합니다.

gcloud compute disks create DISK_NAME \
 --region=REGION \
 --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME \
 --replica-zones=ZONE1,ZONE2

다음을 바꿉니다.

  • DISK_NAME: 새 디스크의 이름
  • REGION: 리전 디스크가 상주할 리전(예: europe-west1)
  • SOURCE_INSTANT_SNAPSHOT_NAME: 소스 인스턴트 스냅샷의 이름
  • ZONE1,ZONE2: 2개의 디스크 복제본이 있는 리전 내 영역(예: europe-west1-b,europe-west1-c)

REST

인스턴트 스냅샷에서 영역 또는 리전 디스크를 만들려면 disks.insert 메서드를 사용하세요. 새 디스크의 유형은 인스턴트 스냅샷의 소스 디스크와 동일해야 합니다. 예를 들어 영역 디스크의 스냅샷으로 리전 디스크를 만들 수 없습니다.

영역 디스크 만들기

소스 인스턴트 스냅샷을 지정하여 POST 요청을 수행합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/SOURCE_ZONE/disks/insert
{
"name": "NEW_DISK_NAME",
"sourceInstantSnapshot": "projects/PROJECT/zones/SOURCE_ZONE/instantSnapshots/SOURCE_INSTANT_SNAPSHOT_NAME"
}

다음을 바꿉니다.

  • PROJECT: 새 디스크를 만들 프로젝트
  • SOURCE_ZONE: 인스턴트 스냅샷이 있는 영역(예: us-central1-a). 이 영역에 디스크가 생성됩니다.
  • NEW_DISK_NAME: 새 디스크의 고유한 이름
  • SOURCE_INSTANT_SNAPSHOT_NAME: 소스 인스턴트 스냅샷의 이름

리전 디스크 만들기

소스 인스턴트 스냅샷과 디스크를 복제할 영역을 지정하여 POST 요청을 수행합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/region/SOURCE_REGION/disks/insert

{
"name": "NEW_DISK_NAME",
"sourceInstantSnapshot": "projects/PROJECT/regions/SOURCE_REGION/instantSnapshots/SOURCE_INSTANT_SNAPSHOT_NAME",
"replicaZones": [
  "projects/PROJECT/zones/ZONE1",
  "projects/PROJECT/zones/ZONE2"
]
}

다음을 바꿉니다.

  • PROJECT: 새 디스크를 만들 프로젝트
  • SOURCE_REGION: 인스턴트 스냅샷이 있는 리전. 이 리전에 디스크가 생성됩니다.
  • NEW_DISK_NAME: 새 디스크의 고유한 이름
  • SOURCE_INSTANT_SNAPSHOT_NAME: 소스 인스턴트 스냅샷의 이름
  • ZONE1,ZONE2: 2개의 디스크 복제본에 대한 리전 내 영역(예: europe-west1-b, europe-west1-c)

API 요청 응답

POST 요청이 성공하면 응답 본문은 디스크 생성 상태를 가져오기 위해 폴링할 수 있는 객체가 됩니다. 자세한 내용은 API 응답 처리를 참조하세요.

CMEK 또는 CSEK로 암호화된 인스턴트 스냅샷에서 디스크 만들기

콘솔

인스턴트 스냅샷에서 Google 기본값 또는 CMEK 암호화를 사용하는 경우 인스턴트 스냅샷에서 디스크를 만들 때 Google Cloud 콘솔에서 암호화 키를 자동으로 제공합니다. 그렇지 않고 인스턴트 스냅샷이 CSEK로 암호화되어 있으면 암호화 키를 제공하여 디스크를 만들어야 합니다.

Google 관리 암호화 섹션의 단계를 따라 다음 안내를 사용하여 암호화 키를 지정합니다.

  1. 복호화 섹션에서 암호화 키 필드에 암호화 키를 입력합니다.
  2. 키가 공개 RSA 키로 래핑된 경우 래핑된 키를 선택합니다.

gcloud

gcloud compute disks create 명령어를 사용합니다.

소스 디스크가 CMEK로 암호화된 경우 --kms-key 매개변수를 사용하여 키 이름을 제공합니다.

소스 디스크가 CSEK로 암호화된 경우 --csek-key-file 매개변수를 사용하여 소스 디스크의 암호화 키를 지정합니다.

CMEK

CMEK로 암호화된 인스턴트 스냅샷에서 영역 디스크를 만들려면 다음 명령어를 사용합니다.

     gcloud compute disks create NEW_DISK_NAME \
       --zone=SOURCE_ZONE \
       --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME \
       --kms-key=projects/KMS_PROJECT_NAME/locations/KEYRING_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

다음을 바꿉니다.

  • NEW_DISK_NAME: 새 디스크의 이름
  • SOURCE_ZONE: 저장된 인스턴트 스냅샷이 있는 영역(예: europe-west1-a)
  • SOURCE_INSTANT_SNAPSHOT_NAME: 소스 인스턴트 스냅샷의 이름
  • KMS_PROJECT_NAME: 키가 포함된 프로젝트
  • KEYRING_LOCATION: 키가 속한 키링의 위치. 키링이 전역이면 global을 지정합니다. 그렇지 않으면 키링이 있는 리전의 이름을 지정합니다(예: us-west1).
  • KEY_RING_NAME: 키가 포함된 키링의 이름(예: key-ring-1)
  • KEY_NAME: 디스크를 암호화하는 데 사용된 키의 이름

CSEK

CSEK로 암호화된 인스턴트 스냅샷에서 영역 디스크를 만들려면 다음 명령어를 사용합니다.

     gcloud compute disks create NEW_DISK_NAME \
       --zone=SOURCE_ZONE \
       --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME \
       --csek-key-file=PATH_TO_CSEK_JSON_FILE
 

다음을 바꿉니다.

  • NEW_DISK_NAME: 새 디스크의 이름
  • SOURCE_ZONE: 저장된 인스턴트 스냅샷이 있는 영역(예: europe-west1-a)
  • SOURCE_INSTANT_SNAPSHOT_NAME: 소스 인스턴트 스냅샷의 이름
  • CSEK_JSON_FILE: 키가 포함된 JSON 파일의 경로. CSEK 파일 형식의 예시를 참조하세요.

리전 디스크를 만들려면 앞의 예시에서 --zone 플래그를 다음 플래그로 변경합니다.

  • --region: 새 디스크의 리전
  • --replica-zones: 2개의 디스크 복제본에 대한 리전 내 영역

REST

CMEK 또는 CSEK로 암호화된 인스턴트 스냅샷에서 영역 또는 리전 디스크를 만들려면 Google 관리 암호화 섹션에 나열된 속성을 사용하여 disks.insert 메서드에 대해 POST 요청을 수행합니다.

또한 diskEncryptionKey 필드에 소스 디스크의 암호화 키를 제공합니다. diskEncryptionKey 필드의 속성은 디스크가 CMEK 또는 CSEK로 암호화되었는지 여부에 따라 달라집니다.

다음 예시에서는 각 암호화 유형에 대해 새 영역 디스크를 만드는 방법을 보여줍니다.

CMEK

요청 본문에서 diskEncryptionKey.kmsKeyName 속성을 사용하여 키의 이름을 지정합니다.

{
"name": "NEW_DISK_NAME",
"sourceInstantSnapshot": "projects/PROJECT/zones/SOURCE_ZONE/instantSnapshots/SOURCE_INSTANT_SNAPSHOT_NAME",
"diskEncryptionKey": {
      "kmsKeyName": "projects/KMS_PROJECT/locations/LOCATION/keyRings/KEYRING_LOCATION/cryptoKeys/KEY_NAME"
  }
}

다음을 바꿉니다.

  • NEW_DISK_NAME: 새 디스크의 고유한 이름
  • PROJECT: 새 디스크를 만들 프로젝트
  • SOURCE_ZONE: 인스턴트 스냅샷이 있는 영역(예: us-central1-a). 이 영역에 디스크가 생성됩니다.
  • SOURCE_INSTANT_SNAPSHOT_NAME: 소스 인스턴트 스냅샷의 이름
  • KMS_PROJECT: 키가 포함된 프로젝트
  • LOCATION: 키가 속한 키링의 위치. 키링이 전역이면 global을 지정합니다. 그렇지 않으면 키링이 있는 리전의 이름을 지정합니다(예: us-west1).
  • KEY_RING: 키가 포함된 키링의 이름(예: key-ring-1)
  • KEY: 디스크를 암호화하는 데 사용된 키의 이름

CSEK

요청 본문은 인스턴트 스냅샷을 암호화하는 데 사용된 CSEK가 RSA로 암호화되었는지 여부에 따라 다릅니다.

원시(RSA로 암호화되지 않음) 키를 사용하려면 요청 본문의 diskEncryptionKey.rawKey 속성에 키를 지정합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/SOURCE_ZONE/disks/insert
{
  "name": "NEW_DISK_NAME",
  "sourceInstantSnapshot": "projects/PROJECT/zones/SOURCE_ZONE/instantSnapshots/INSTANT_SNAPSHOT_NAME,
  "diskEncryptionKey": {
      "rawKey": "RAW_ENCRYPTION_KEY"
  }
}

다음을 해당 값으로 바꿉니다.

  • PROJECT: 새 디스크를 만들 프로젝트
  • SOURCE_ZONE: 인스턴트 스냅샷이 있는 영역(예: us-central1-a). 이 영역에 디스크가 생성됩니다.
  • NEW_DISK_NAME: 새 디스크의 고유한 이름
  • SOURCE_INSTANT_SNAPSHOT_NAME: 소스 인스턴트 스냅샷의 이름
  • RAW_ENCRYPTION_KEY: 인스턴트 스냅샷과 소스 디스크를 암호화하는 데 사용되는 키(예: SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=)

RSA 암호화 키를 사용하려면 다음과 같이 위의 예시를 수정합니다.

  • disks.insert 메서드에 대해 POST 요청을 수행합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/insert
    

  • 요청 본문의 diskEncryptionKey.rsaEncryptedKey 속성에 키를 지정합니다.

    "diskEncryptionKey": {
     "rsaEncryptedKey": "RSA_ENCRYPTED_KEY"
    }
    

RSA_ENCRYPTED_KEY를 암호화된 키로 바꿉니다.

API 요청 응답

POST 요청이 성공하면 응답 본문은 디스크 생성 상태를 가져오기 위해 폴링할 수 있는 객체가 됩니다. 자세한 내용은 API 응답 처리를 참조하세요.