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

Esta página ajuda você a restaurar uma instância do Compute Engine de um backup vault no Google Cloud console.

Antes de começar

  • Conceda o papel do IAM de operador de DR e backup do Compute Engine (roles/backupdr.computeEngineOperator) para o agente de serviço do backup vault no projeto de destino em que a restauração está sendo realizada.

  • Conceda o papel do IAM de usuário da rede do Compute (roles/compute.networkUser) para o agente de serviço do backup vault no projeto host da VPC se você estiver usando a VPC compartilhada.

  • Conceda os seguintes papéis do IAM para o usuário que realiza a restauração no projeto do backup vault.

    • Usuário de Backup e DR (roles/backupdr.restoreUser) para o backup vault e o projeto de destino.
    • Visualizador do Compute (roles/compute.viewer) apenas para o destino.

    Esses papéis predefinidos contêm as permissões necessárias para acessar o backup vault no projeto do Compute Engine. Para permissões específicas, consulte a lista a seguir.

    • backupdr.bvbackups.restore
    • backupdr.compute.restoreFromBackupVault
    • backupdr.backupVaults.get
    • backupdr.backupVaults.list
    • backupdr.bvbackups.list
    • backupdr.bvdataSources.get
    • backupdr.bvdataSources.list
    • backupdr.bvbackups.get

    Para restaurar uma instância usando a CLI gcloud ou a API, um usuário precisa ter as seguintes permissões:

    • backupdr.bvbackups.restore no recurso de backup.
    • backupdr.compute.restoreFromBackupVault no projeto de destino em que a instância será restaurada.

Permissões adicionais para o Google Cloud console

Ao restaurar uma instância usando o Google Cloud console, o usuário precisa das permissões da CLI e das seguintes permissões. Essas permissões adicionais são necessárias para que o console liste e mostre os recursos necessários do Compute Engine para seleção na interface do usuário:

  • compute.acceleratorTypes.list
  • compute.disks.list
  • compute.machineTypes.list
  • compute.projects.get
  • compute.regions.list
  • compute.zones.list

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

Restaurar uma instância do Compute Engine

Use as instruções a seguir para restaurar uma instância do Compute Engine.

Console

  1. Noconsole, acesse a página Backups em vault. Google Cloud

    Acessar backups em vault

    Todas as instâncias do Compute Engine com backups em vault são listadas aqui.

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

    • Selecione um nome do recurso.
    • Selecione um horário de criação do backup.
    • Selecione o nome do projeto em que você quer restaurar a VM.
  3. Clique em Continuar.

    • A próxima página Criar uma nova instância de VM usando um backup aparece, em que as propriedades da VM são preenchidas com base nas propriedades da VM de origem. É possível modificar as propriedades para criar uma nova VM. Por exemplo, altere a seleção de Região ou Tipo de máquina.
  4. Clique em Criar para criar uma nova VM com base no backup selecionado.

gcloud

  1. Se ainda não tiver sido concedido, conceda o papel do IAM de operador de DR e backup do Compute Engine (roles/backupdr.computeEngineOperator) ao agente de serviço do backup vault no projeto de recuperação em que a VM está sendo recuperada.

  2. Para acessar a conta de serviço do backup vault, use o comando a seguir.

      gcloud backup-dr backup-vaults describe BACKUPVAULT_NAME
      --location=REGION
    

    Substitua:

    • BACKUPVAULT_NAME: o nome do backup vault de que você quer restaurar os dados.
    • REGION: a região do backup vault.
  3. Antes de restaurar uma instância do Compute Engine, use os comandos a seguir para acessar o ID da origem de dados e o ID do backup necessário.

    1. Encontrar o ID da origem de dados

        gcloud backup-dr data-sources list \
        --project=PROJECT \
        --location=REGION \
        --backup-vault=BACKUPVAULT_NAME \
        "--filter=dataSourceGcpResource.computeInstanceDatasourceProperties.name:(DATA_SOURCE)" \
        "--format=get(name)")
      
    2. Liste os backups atuais da origem de dados para encontrar o BACKUP_ID correto.

        gcloud backup-dr backups list \
        --location=REGION \
        --backup-vault=BACKUPVAULT_NAME \
        --data-source=DATA_SOURCE \
        "--format=yaml(backupType,computeInstanceBackupProperties.sourceInstance,consistencyTime,enforcedRetentionEndTime,expireTime,name)"
      
  4. Para restaurar uma instância do Compute Engine, use os comandos a seguir.

    • Restaure uma VM no mesmo projeto que o projeto da carga de trabalho com o ID de backup.

        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
      
    • Restaure uma VM no mesmo projeto que o projeto da carga de trabalho com o URL completo do recurso de backup.

        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 configuração de rede e conta de serviço personalizada.

        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 que você quer restaurar os dados.
      • DATA_SOURCE: o nome da origem de dados de que você quer restaurar os dados.
      • NAME: o nome da VM restaurada.
      • TARGET_ZONE: a região em que a VM é restaurada.
      • TARGET_PROJECT: o projeto em que a VM é restaurada.
      • NETWORK: o URI de rede da VM.
      • SUBNET: o URI de sub-rede da VM.
      • SERVICE_ACCOUNT: a conta de serviço da VM restaurada.
      • SCOPE: o escopo de autorização da conta de serviço.

Para substituir outras propriedades da VM, consulte Visão geral dos comandos da CLI gcloud do serviço de backup e DR.

Como restaurar de um backup vault ativado para CMEK

Ao restaurar um backup de um backup vault ativado para CMEK, a criptografia do recurso restaurado depende da criptografia da origem:

  • Se o recurso de origem foi protegido por CMEK:o recurso restaurado usa a mesma chave CMEK da origem por padrão. 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 vai herdar a criptografia do disco de origem correspondente (os discos criptografados com CMEK permanecem criptografados com as chaves originais, e os discos criptografados gerenciados pelo Google permanecem 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 substituir 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 usa a 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, ao realizar uma restauração entre regiões (por exemplo, restaurar 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 KMS da região de origem.

Essa é uma limitação atual no Google Cloud console. 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. Conceda permissões do KMS:conceda o papel 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 de cada disco:

gcloud

  1. Acessar 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 reside.
    • SOURCE_REGION: o local do backup vault.
    • BACKUP_VAULT_NAME: o nome do backup vault de que você quer restaurar os dados.
    • SOURCE_INSTANCE_NAME: o nome da instância de origem do Compute Engine.
  2. Executar o comando de restauração:execute o comando de restauração e substitua a chave do KMS de 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 reside.
      • SOURCE_REGION: o local do backup vault.
      • BACKUP_VAULT_NAME: o nome do backup vault de que você quer restaurar os dados.
      • DATA_SOURCE: o ID da origem de dados de que 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 reside.
      • 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 reside.
      • SOURCE_REGION: o local do backup vault.
      • BACKUP_VAULT_NAME: o nome do backup vault de que você quer restaurar os dados.
      • DATA_SOURCE: o ID da origem de dados de que 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 reside.
      • 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. Acessar 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. Executar 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

Use 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 estiver indisponí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 a 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 estiver desativada ou destruída, não será possível restaurar o backup.

O guia de backup e DR do Compute Engine