Restaurar uma instância do Compute Engine de um cofre de backup

Nesta página, mostramos como restaurar uma instância do Compute Engine de um backup vault no console do Google Cloud , que pode ter como destino uma nova instância do Compute Engine ou um novo Persistent Disk. Para restaurar seletivamente um disco individual para um novo Persistent Disk, consulte Realizar uma restauração seletiva de discos de um backup de instância do Compute Engine.

Funções exigidas

Para receber as permissões necessárias para restaurar uma instância do Compute Engine de um backup vault, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto, no projeto de destino, no agente de serviço de Backup e DR e no projeto host da VPC:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esses papéis predefinidos contêm as permissões necessárias para restaurar uma instância do Compute Engine de um backup vault. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para restaurar uma instância do Compute Engine de um backup vault:

  • Restaurar uma instância do Compute Engine:
    • backupdr.bvbackups.restore
    • backupdr.compute.restoreFromBackupVault
    • backupdr.backupVaults.get
    • backupdr.backupVaults.list
    • backupdr.bvbackups.list
    • backupdr.bvdataSources.get
    • backupdr.bvdataSources.list
    • backupdr.bvbackups.get
  • Restaurar uma instância do Compute Engine usando o console do Google Cloud (permissões adicionais):
    • compute.acceleratorTypes.list
    • compute.disks.list
    • compute.machineTypes.list
    • compute.projects.get
    • compute.regions.list
    • compute.zones.list

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

restaurar uma instância do Compute Engine

Siga estas instruções para restaurar uma instância do Compute Engine.

Console

  1. No console do Google Cloud , acesse a página Backups protegidos.

    Acessar backups em vault

    Todas as instâncias do Compute Engine com backups protegidos estão listadas aqui.

  2. Clique no ícone de ação para selecionar a ação Restaurar. A página Restaurar é exibida, onde você seleciona as seguintes opções de restauração:

  3. Clique em Proceed.

    A página Criar uma nova instância do Compute Engine com base em um backup é exibida, em que as propriedades da instância do Compute Engine são pré-preenchidas com base nas propriedades da instância de origem do Compute Engine. É possível modificar as propriedades para criar uma nova instância do Compute Engine, por exemplo, alterar a seleção de Região ou Tipo de máquina.

  4. Clique em Criar para criar uma VM com base no backup selecionado.

gcloud

  1. Acesse a conta de serviço do backup vault usando o comando gcloud backup-dr backup-vaults describe:

    gcloud backup-dr backup-vaults describe BACKUP_VAULT_NAME /
    --location=REGION_NAME
    

    Substitua:

    • BACKUP_VAULT_NAME: o nome do backup vault de onde você quer restaurar os dados.

    • REGION_NAME: a região do backup vault.

  2. Antes de restaurar uma instância do Compute Engine, use os comandos a seguir para receber o ID da fonte de dados e o ID do backup necessário:

    1. Encontre o ID da fonte de dados usando o comando gcloud backup-dr data-sources list:

      gcloud backup-dr data-sources list \
      --project=PROJECT_NAME \
      --location=REGION_NAME \
      --backup-vault=BACKUP_VAULT_NAME \
      "--filter=dataSourceGcpResource.computeInstanceDatasourceProperties.name:(DATA_SOURCE)" \
      "--format=get(name)"
      
    2. Liste os backups atuais da fonte de dados para encontrar o BACKUP_ID correto usando o comando gcloud backup-dr backups list:

      gcloud backup-dr backups list \
      --location=REGION_NAME \
      --backup-vault=BACKUP_VAULT_NAME \
      --data-source=DATA_SOURCE \
      "--format=yaml(backupType,computeInstanceBackupProperties.sourceInstance,consistencyTime,enforcedRetentionEndTime,expireTime,name)"
      
  3. Para restaurar uma instância do Compute Engine, use os seguintes comandos:

    • Restaure uma instância do Compute Engine no mesmo projeto que o projeto de carga de trabalho com o ID de backup usando o comando gcloud backup-dr backups restore compute:

      gcloud backup-dr backups restore compute test-backup-id \
      --project=PROJECT_NAME --location=REGION_NAME \
      --backup-vault=BACKUP_VAULT_NAME --data-source=DATA_SOURCE\
      --name=NAME --target-zone=TARGET_ZONE \
      --target-project=TARGET_PROJECT
      
    • Restaure uma instância do Compute Engine no mesmo projeto que o projeto de carga de trabalho com o URL de recurso completo do backup usando o comando gcloud backup-dr backups restore compute projects:

      gcloud backup-dr backups restore compute projects/test-project-id/locations/us-central1/backupVaults/test-vault/dataSources/test-ds/backups/test-backup-id \
      --name=NAME --target-zone=TARGET_ZONE \
      --target-project=TARGET_PROJECT
      
    • Restaure uma instância do Compute Engine com conta de serviço personalizada e configuração de rede usando o comando gcloud backup-dr backups restore compute:

      gcloud backup-dr backups restore compute test-backup-id \
      --project=PROJECT --location=REGION \
      --backup-vault=BACKUPVAULT_NAME --data-source=DATA_SOURCE\
      --name=NAME --target-zone=TARGET_ZONE \
      --target-project=TARGET_PROJECT \
      --network-interface=network=NETWORK,subnet=SUBNET \
      --service-account=SERVICE_ACCOUNT \
      --scopes=SCOPE
      

      Substitua:

      • PROJECT: o nome do projeto do backup vault.

      • REGION: o local do backup vault.

      • BACKUPVAULT_NAME: o nome do backup vault de onde você quer restaurar os dados.

      • DATA_SOURCE: o nome da fonte de dados de onde você quer restaurar os dados.

      • NAME: o nome da instância restaurada do Compute Engine.

      • TARGET_ZONE: a região em que a instância do Compute Engine é restaurada.

      • TARGET_PROJECT: o projeto em que a instância do Compute Engine é restaurada.

      • NETWORK: o URI de rede da instância do Compute Engine.

      • SUBNET: o URI da sub-rede da instância do Compute Engine.

      • SERVICE_ACCOUNT: a conta de serviço da instância restaurada do Compute Engine.

      • SCOPE: o escopo de autorização da conta de serviço.

    • Restaure um disco do Compute Engine usando o comando gcloud backup-dr backups restore disk. Para instruções detalhadas sobre como restaurar um disco individual de um backup de instância do Compute Engine, consulte Realizar uma restauração seletiva de discos de um backup de instância do Compute Engine.

      gcloud backup-dr backups restore disk BACKUP_NAME  \
      --name=DISK_NAME \
      --target-project=TARGET_PROJECT_NAME \
      [--source-instance-boot-disk | --source-instance-disk-device-name=DEVICE_NAME] \
      [--target-zone=TARGET_ZONE_NAME | --target-region=TARGET_REGION_NAME --replica-zones=ZONE_NAME] \
      [DISK_OVERRIDE_FLAGS...] \
      [--async]
      

Para modificar outras propriedades de instância do Compute Engine, consulte Visão geral dos comandos da CLI gcloud de backup e DR.

Limitações de restauração para backups seletivos de disco

Quando você restaura uma instância do Compute Engine de um backup criado usando o backup de disco seletivo, somente os discos que estavam protegidos no momento do backup são restaurados e anexados à nova instância de máquina virtual (VM). No console do Google Cloud , a seção de resumo destaca os discos protegidos incluídos no backup (por exemplo, Protected disks: 2 out of 3).

Para evitar falhas de inicialização ao restaurar VMs com discos excluídos, defina a configuração de inicialização da VM de origem para ignorar discos ausentes (por exemplo, adicionando a opção de montagem nofail em /etc/fstab). Para mais informações sobre essa limitação do Compute Engine, consulte Limitações e advertências da restauração de discos permanentes.

Restaurar um backup de um backup vault com CMEK

O tratamento da criptografia para restaurações de um backup vault ativado para CMEK depende se você está restaurando toda a instância do Compute Engine ou um disco individual.

Processamento de CMEK para restaurações de instâncias inteiras do Compute Engine

Quando você restaura uma instância inteira do Compute Engine de um backup armazenado em um backup vault com CMEK, o backup em si é protegido pela CMEK do vault. Os discos na instância restaurada do Compute Engine mantêm as configurações de criptografia originais por padrão, sejam elas gerenciadas pelo Google ou as CMEKs originais. As permissões necessárias para acessar a CMEK do vault são concedidas ao agente de serviço de backup e DR, conforme descrito em Conceitos de CMEK.

Processamento de CMEK para restaurações de discos individuais

Quando você escolhe o escopo de restauração Disco individual para restaurar um único disco de um backup de instância do Compute Engine, ocorre o seguinte comportamento:

  • Comportamento padrão: o novo disco criado com base no backup tenta usar a mesma chave de criptografia do disco de origem da instância original do Compute Engine.

    • Se o disco de origem usava a criptografia gerenciada pelo Google, o disco restaurado também usará a criptografia gerenciada pelo Google.

    • Se o disco de origem usou uma CMEK específica, o disco restaurado tentará usar essa mesma CMEK.

  • Indisponibilidade da chave: se a CMEK original usada pelo disco de origem não estiver acessível no projeto ou na região de destino, por exemplo, devido à exclusão da chave, mudanças de permissão ou restauração entre regiões, a operação de restauração vai falhar, a menos que você substitua as configurações de criptografia.

  • Substituição das configurações de criptografia: é possível mudar as configurações de criptografia do disco restaurado durante o processo de restauração usando as seguintes instruções:

    Console

    • Na seção Propriedades do disco de destino do assistente de restauração, é possível modificar as configurações de Criptografia usando uma das seguintes opções:

      • Selecione uma chave de criptografia gerenciada pelo cliente (CMEK) diferente.

      • Mudar para a criptografia gerenciada pelo Google.

    gcloud

    • Ao usar o comando gcloud backup-dr backups restore disk com as flags --source-instance-boot-disk ou --source-instance-disk-device-name:

      • Para especificar uma CMEK diferente para o disco restaurado, use a flag --kms-key:
      --kms-key=projects/MY-KEY-PROJECT/locations/us-central1/keyRings/MY-RING/cryptoKeys/MY-NEW-KEY
      
      • Para forçar o disco restaurado a usar a criptografia gerenciada pelo Google, use a flag --clear-encryption-key.
  • Permissões para substituições de CMEK:

    • Se você substituir a criptografia para usar uma CMEK nova ou diferente, verifique se o agente de serviço do Compute Engine do projeto de destino tem o papel Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) na chave do KMS especificada. O formato da conta do agente de serviço é: service-TARGET_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com.

    • Essa permissão é necessária para que o Compute Engine crie o novo disco criptografado com a chave escolhida.

Consulte Restaurar um Persistent Disk de um backup vault para mais detalhes sobre as operações de restauração de disco e o uso de flags.

Restaurar um backup de um backup vault com CMEK

Quando você restaura um backup de um backup vault com CMEK, a criptografia do recurso restaurado depende da criptografia da origem:

  • Se o recurso de origem foi protegido por CMEK: o recurso restaurado usa por padrão a mesma chave CMEK da origem. Por exemplo:
    • Um disco permanente do Compute Engine criptografado com a chave K1 é restaurado para um disco criptografado com K1.
    • Se uma VM tiver vários discos, cada disco na VM restaurada herdará a criptografia do disco de origem correspondente (os discos criptografados por CMEK permanecerão criptografados com as chaves originais, e os discos criptografados gerenciados pelo Google permanecerão gerenciados pelo Google).
  • Se o recurso de origem usou a criptografia gerenciada pelo Google: o recurso restaurado usa a criptografia gerenciada pelo Google por padrão.

É possível modificar esse comportamento padrão ao restaurar discos permanentes ou instâncias do Compute Engine usando a API ou a CLI gcloud. Por exemplo, é possível restaurar um backup de um recurso protegido por CMEK para um novo recurso que use criptografia gerenciada pelo Google ou para um novo recurso protegido por uma chave CMEK diferente. Para restaurar um recurso protegido por uma nova chave CMEK, verifique se o agente de serviço relevante (por exemplo, o agente de serviço do Compute Engine) do projeto de destino tem a permissão roles/cloudkms.cryptoKeyEncrypterDecrypter na nova chave de destino.

Realizar uma restauração entre regiões com CMEK

Como as chaves do Cloud Key Management Service são regionais, quando você executa uma restauração entre regiões (por exemplo, restaurando uma instância de asia-south1 para asia-south2), a operação de restauração falha se você usar o comportamento padrão. Os discos da VM restaurada não podem ser criptografados com a chave do Cloud KMS da região de origem.

Essa é uma limitação atual no console do Google Cloud . Para realizar uma restauração entre regiões de uma VM protegida por CMEK, use a CLI gcloud, a API ou o Terraform para substituir as configurações de criptografia e especificar uma nova chave do KMS na região de destino.

Para restaurar um recurso protegido por uma nova chave CMEK, siga estas etapas:

  1. Verifique se você tem uma chave na região de destino: verifique se você tem uma chave do Cloud Key Management Service na região em que está restaurando a VM (no projeto de destino ou em um projeto compartilhado do KMS) e crie uma, se não tiver.
  2. Conceder permissões do KMS: conceda o papel de Criptografador/Descriptografador de CryptoKey do Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) nessa chave de destino ao agente de serviço do Compute Engine do projeto de destino em que a VM está sendo restaurada.

  3. Realize a restauração: execute a restauração usando um dos métodos a seguir, substituindo a chave do KMS para cada disco:

gcloud

  1. Receber detalhes do backup: recupere o nome do backup e os nomes dos dispositivos dos discos do backup usando o comando gcloud backup-dr backups list:

    gcloud backup-dr backups list \
      --project=PROJECT_ID \
      --location=SOURCE_REGION \
      --backup-vault=BACKUP_VAULT_NAME \
      --filter="computeInstanceBackupProperties.sourceInstance~SOURCE_INSTANCE_NAME"
    

    Substitua:

    • PROJECT_ID: o nome do projeto em que o backup vault está.
    • SOURCE_REGION: o local do backup vault.
    • BACKUP_VAULT_NAME: o nome do backup vault de onde você quer restaurar os dados.
    • SOURCE_INSTANCE_NAME: o nome da instância de origem do Compute Engine.
  2. Execute o comando de restauração: execute o comando de restauração e substitua a chave do KMS para cada disco usando o parâmetro --create-disk.

    1. Restaurar uma VM com um único disco:

      gcloud backup-dr backups restore compute BACKUP_ID \
        --project=PROJECT_ID \
        --location=SOURCE_REGION \
        --backup-vault=BACKUP_VAULT_NAME \
        --data-source=DATA_SOURCE \
        --name=RESTORED_VM_NAME \
        --target-zone=TARGET_ZONE \
        --target-project=TARGET_PROJECT_ID \
        --create-disk=device-name=DEVICE_NAME,kms-key=projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME
      

      Substitua:

      • BACKUP_ID: o ID do backup que você quer restaurar.
      • PROJECT_ID: o nome do projeto em que o backup vault está.
      • SOURCE_REGION: o local do backup vault.
      • BACKUP_VAULT_NAME: o nome do backup vault de onde você quer restaurar os dados.
      • DATA_SOURCE: o ID da fonte de dados de onde você quer restaurar os dados.
      • RESTORED_VM_NAME: o nome da VM restaurada.
      • TARGET_ZONE: a zona em que a VM é restaurada.
      • TARGET_PROJECT_ID: o projeto em que a VM é restaurada.
      • DEVICE_NAME: o nome do dispositivo do disco.
      • KMS_PROJECT_ID: o ID do projeto em que a chave do Cloud Key Management Service reside.
      • TARGET_REGION: a região em que a chave do Cloud Key Management Service está localizada.
      • KEYRING: o nome do keyring do Cloud Key Management Service.
      • KEY_NAME: o nome da chave do Cloud Key Management Service para o disco 1.
    2. Restaurar uma VM com vários discos: forneça uma flag --create-disk separada para cada disco:

      gcloud backup-dr backups restore compute BACKUP_ID \
        --project=PROJECT_ID \
        --location=SOURCE_REGION \
        --backup-vault=BACKUP_VAULT_NAME \
        --data-source=DATA_SOURCE \
        --name=RESTORED_VM_NAME \
        --target-zone=TARGET_ZONE \
        --target-project=TARGET_PROJECT_ID \
        --create-disk=device-name=DEVICE_NAME_1,kms-key=projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME_1 \
        --create-disk=device-name=DEVICE_NAME_2,kms-key=projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME_2
      

      Substitua:

      • BACKUP_ID: o ID do backup que você quer restaurar.
      • PROJECT_ID: o nome do projeto em que o backup vault está.
      • SOURCE_REGION: o local do backup vault.
      • BACKUP_VAULT_NAME: o nome do backup vault de onde você quer restaurar os dados.
      • DATA_SOURCE: o ID da fonte de dados de onde você quer restaurar os dados.
      • RESTORED_VM_NAME: o nome da VM restaurada.
      • TARGET_ZONE: a zona em que a VM é restaurada.
      • TARGET_PROJECT_ID: o projeto em que a VM é restaurada.
      • DEVICE_NAME_1: o nome do dispositivo do disco 1.
      • KMS_PROJECT_ID: o ID do projeto em que a chave do Cloud Key Management Service reside.
      • TARGET_REGION: a região em que a chave do Cloud Key Management Service está localizada.
      • KEYRING: o nome do keyring do Cloud Key Management Service.
      • KEY_NAME_1: o nome da chave do Cloud Key Management Service para o disco 1.
      • DEVICE_NAME_2: o nome do dispositivo do disco 2.
      • KEY_NAME_2: o nome da chave do Cloud Key Management Service para o disco 2.

API

  1. Receber detalhes do backup: recupere o nome do backup e os nomes dos dispositivos dos discos enviando uma solicitação GET para listar os backups:

    GET https://backupdr.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_REGION/backupVaults/BACKUP_VAULT_NAME/dataSources/DATA_SOURCE/backups
    
  2. Execute a API de restauração: envie uma solicitação POST para o URI restore do backup.

    1. Restaurar uma VM com um único disco:

      POST https://backupdr.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_REGION/backupVaults/BACKUP_VAULT_NAME/dataSources/DATA_SOURCE/backups/BACKUP_ID:restore
      

      Payload:

      {
        "computeInstanceTargetEnvironment": {
          "project": "TARGET_PROJECT_ID",
          "zone": "TARGET_ZONE"
        },
        "computeInstanceRestoreProperties": {
          "name": "RESTORED_VM_NAME",
          "machineType": "projects/TARGET_PROJECT_ID/zones/TARGET_ZONE/machineTypes/e2-medium",
          "disks": [
            {
              "deviceName": "DEVICE_NAME",
              "diskEncryptionKey": {
              "kmsKeyName": "projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME"
              }
            }
          ]
        }
      }
      
    2. Restaurar uma VM com vários discos:

      POST https://backupdr.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_REGION/backupVaults/BACKUP_VAULT_NAME/dataSources/DATA_SOURCE/backups/BACKUP_ID:restore
      

      Payload:

      {
        "computeInstanceTargetEnvironment": {
          "project": "TARGET_PROJECT_ID",
          "zone": "TARGET_ZONE"
        },
        "computeInstanceRestoreProperties": {
          "name": "RESTORED_VM_NAME",
          "machineType": "projects/TARGET_PROJECT_ID/zones/TARGET_ZONE/machineTypes/e2-medium",
          "disks": [
            {
              "deviceName": "DEVICE_NAME_1",
              "diskEncryptionKey": {
                "kmsKeyName": "projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME_1"
              }
            },
            {
              "deviceName": "DEVICE_NAME_2",
              "diskEncryptionKey": {
                "kmsKeyName": "projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME_2"
              }
            }
          ]
        }
      }
      

Terraform

Usar o recurso google_backup_dr_restore_workload

  1. Restaurar uma VM com um único disco:

    resource "google_backup_dr_restore_workload" "restore_single" {
      location         = "SOURCE_REGION"
      backup_vault_id  = "BACKUP_VAULT_NAME"
      data_source_id   = "DATA_SOURCE"
      backup_id        = "BACKUP_ID"
    
      compute_instance_target_environment {
        project = "TARGET_PROJECT_ID"
        zone = "TARGET_ZONE"
      }
    
      compute_instance_restore_properties {
        name = "RESTORED_VM_NAME"
        machine_type = "zones/TARGET_ZONE/machineTypes/e2-medium"
        disks {
          device_name = "DEVICE_NAME"
          disk_encryption_key {
            kms_key_name = "projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME"
          }
        }
      }
    }
    
  2. Restaurar uma VM com vários discos:

    resource "google_backup_dr_restore_workload" "restore_multi" {
      location         = "SOURCE_REGION"
      backup_vault_id  = "BACKUP_VAULT_NAME"
      data_source_id   = "DATA_SOURCE"
      backup_id        = "BACKUP_ID"
    
      compute_instance_target_environment {
        project = "TARGET_PROJECT_ID"
        zone = "TARGET_ZONE"
      }
    
      compute_instance_restore_properties {
        name = "RESTORED_VM_NAME"
        machine_type = "zones/TARGET_ZONE/machineTypes/TARGET_MACHINETYPE"
        disks {
          device_name = "DEVICE_NAME_1"
          disk_encryption_key {
            kms_key_name = "projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME_1"
          }
        }
    
        disks {
          device_name = "DEVICE_NAME_2"
          disk_encryption_key {
            kms_key_name = "projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME_2"
          }
        }
      }
    }
    

Se a chave do Cloud Key Management Service que protege a carga de trabalho de origem não estiver disponível durante uma operação de restauração, a restauração vai falhar por padrão. Nesse caso, use a API ou a CLI gcloud para substituir a configuração de criptografia especificando uma nova chave CMEK ou alterando o tipo de criptografia para criptografia gerenciada pelo Google para o recurso restaurado.

Se a versão da chave do Cloud Key Management Service usada para criptografar dados no backup vault for desativada ou destruída, não será possível restaurar o backup.

O guia de backup e DR do Compute Engine

A seguir