Automatize a proteção de novas instâncias do Compute Engine

Esta página detalha como automatizar as cópias de segurança de instâncias do Compute Engine através de etiquetas.

Configure a cópia de segurança para novas instâncias do Compute Engine

Uma instância do Compute Engine é uma VM alojada no Google Cloud. Cada instância armazena dados em discos persistentes anexados à instância. Pode criar uma instância ou criar um grupo de instâncias geridas através da Google Cloud consola, da Google Cloud CLI ou da API Compute Engine.

Para obter informações mais detalhadas, consulte o artigo Compute Engine.

Pré-requisito para automatizar as cópias de segurança

Antes de começar a automatizar as cópias de segurança de instâncias do Compute Engine, leia os seguintes procedimentos para se preparar para as cópias de segurança:

Depois de configurar o serviço de cópia de segurança e recuperação de desastres e criar um modelo de plano de cópia de segurança, pode automatizar a proteção das suas instâncias do Compute Engine aplicando o modelo de plano de cópia de segurança à instância através de etiquetas.

Autorizações

Para criar, atualizar e eliminar definições de etiquetas para recursos do Compute Engine, precisa da função Tag Administrator. Para mais informações sobre a função de tagUser, consulte o artigo Autorizações necessárias.

Para usar a etiquetagem dinâmica para fazer uma cópia de segurança de uma instância do Compute Engine, tem de conceder a função IAM de operador do Compute Engine do Backup and DR (roles/backupdr.computeEngineOperator) ao agente de serviço do cofre de cópias de segurança no projeto do Compute Engine.

Administre etiquetas de proteção dinâmica

Para criar, atualizar e eliminar etiquetas de proteção dinâmica, tem de ter as autorizações adequadas para a sua função, de modo a garantir que tem uma das seguintes funções atribuídas:

  • Administrador de cópias de segurança e RD

  • Utilizador de cópia de segurança e RD

  • Backup and DR User V2

  • Editor de projeto

  • Proprietário do projeto

  • Uma função personalizada que inclui as seguintes autorizações:

Autorizações necessárias

  • backupdr.managementServers.listDynamicProtection
  • backupdr.managementServers.getDynamicProtection
  • backupdr.managementServers.createDynamicProtection
  • backupdr.managementServers.deleteDynamicProtection
  • compute.instances.listEffectiveTags

Saiba mais sobre as funções do serviço de cópia de segurança e recuperação de desastres.

Aplique um modelo de plano de contingência usando etiquetas automaticamente

Esta secção ajuda a automatizar a aplicação de um plano de cópia de segurança a uma instância do Compute Engine através de etiquetas. Primeiro, cria um mapeamento de planos de cópias de segurança para etiquetas na consola de gestão. Em seguida, crie etiquetas através da gestão de identidade e de acesso (IAM) com os mesmos valores atribuídos na consola de gestão.

Crie valores de etiquetas de proteção dinâmicas

Use estas instruções para criar valores de etiquetas de proteção dinâmicas que podem ser usados com as suas instâncias do Compute Engine:

  1. Na consola de gestão de cópias de segurança e da RD, clique no menu pendente Planos de cópia de segurança e selecione Etiquetas de proteção dinâmica.

  2. Clique em Criar etiqueta de proteção dinâmica.

  3. Introduza um valor da etiqueta exclusivo que cumpra estes requisitos de nomenclatura.

  4. Na lista Tipo de aplicação, selecione Compute Engine.

  5. Escolha um Modelo e um Perfil correspondentes para associar a este valor da etiqueta.

  6. Clique em Guardar. É criado um valor da etiqueta de proteção dinâmica.

Crie etiquetas de proteção dinâmicas

Use estas instruções para criar etiquetas de proteção dinâmica para anexar às suas instâncias do Compute Engine de modo a automatizar a proteção:

  1. Para criar, atualizar e eliminar definições de etiquetas, precisa da função de administrador de etiquetas ou de outra função que inclua autorizações específicas.

  2. Abra a página Etiquetas na Google Cloud consola.

    Abra a página Etiquetas

  3. No seletor de âmbito na parte superior da página, selecione a organização ou o projeto no qual quer criar uma chave de etiqueta.

  4. Clique em Criar.

  5. Na caixa Chave da etiqueta, introduza backupdr-dynamicprotect como chave da etiqueta. Este é um passo obrigatório para uma automatização bem-sucedida. Tenha atenção aos erros de ortografia e certifique-se de que inclui o hífen.

  6. Opcional: na caixa Descrição da chave da etiqueta, introduza uma descrição da chave da etiqueta.

  7. Clique em Adicionar valor e introduza cada valor da etiqueta que acabou de criar.

  1. Na caixa Valor da etiqueta, introduza o nome a apresentar do valor da etiqueta. Isto torna-se parte do nome com espaço de nomes da sua etiqueta.

  2. Na caixa Descrição do valor da etiqueta, introduza uma descrição do modelo e do perfil associados a este valor da etiqueta.

  3. Quando terminar de adicionar valores de etiquetas, clique em Criar chave de etiqueta.

Adicionar etiquetas de proteção dinâmica a um recurso

Agora que criou valores de etiquetas de proteção dinâmicas e os associou a uma etiqueta de proteção dinâmica, o passo seguinte é atribuir etiquetas a uma instância do Compute Engine. A proteção baseada em etiquetas não funciona se as suas instâncias estiverem protegidas num grupo lógico. Remova o grupo lógico e experimente usar a proteção dinâmica.

Pode anexar as etiquetas de proteção dinâmica a instâncias do Compute Engine seguindo estas instruções:

  1. Na Google Cloud consola, aceda à página Compute Engine > Instâncias de VM.

    Aceder às instâncias de VM

  2. Na coluna Nome, clique no nome da MV à qual quer adicionar etiquetas.

  3. Na página de detalhes da instância de VM, conclua os seguintes passos:

    1. Clique em Edit.
    2. Na secção Básico, clique em Gerir etiquetas e adicione as etiquetas que quer para a instância.
  4. Selecione a chave backupdr-dynamicprotect: e um valor da etiqueta correspondente que seja mapeado para um modelo e um perfil que definiu na consola Google Cloud .

  5. Clique em Guardar.

Adicionar etiquetas a um recurso durante a criação do recurso

Em determinados cenários, pode querer etiquetar recursos durante a criação de recursos, em vez de o fazer após a criação do recurso.

Consola

  1. Na Google Cloud consola, aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Selecione o projeto e clique em Continuar.

  3. Clique em Criar instância.

  4. Clique em Gerir etiquetas e marcadores.

  5. Clique em Adicionar etiquetas.

  6. Siga as instruções no painel lateral para selecionar o backupdr-dynamicprotect a adicionar à instância.

  7. Clique em Guardar.

  8. Conclua outros passos em Crie e inicie uma instância de VM para terminar a criação da instância.

gcloud

Para usar a CLI Google Cloud ou as APIs, siga a documentação do SDK para fazer o seguinte:

Terraform

Use o seguinte modelo do Terraform para começar a usar etiquetas de proteção dinâmica. Este modelo pressupõe que ainda não criou chaves de etiquetas de proteção dinâmica na Google Cloud consola e vai configurá-las por si. O modelo cria uma nova instância do Compute Engine e associa-a a uma etiqueta de proteção dinâmica. Pode aguardar que a tarefa de proteção dinâmica agendada seja executada às 04:00 ou às 16:00, hora local, para que entre em vigor, ou pode executar uma tarefa de proteção dinâmica a pedido seguindo os passos em Executar proteção automática manual.

variable "project_id" {
  description = "The ID of the existing Google Cloud project"
  type        = string
}

variable "region" {
  description = "The Google Cloud region where demo-instance should be created"
  type        = string
}

variable "zone" {
  description = "The Google Cloud zone where demo-instance should be created"
  type        = string
}

provider "google" {
  project = var.project_id
  region = var.region
  zone  = var.zone
}

data "google_project" "project" {
  project_id = var.project_id
}

# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/tags_tag_key
resource "google_tags_tag_key" "key" {
  parent = "projects/${var.project_id}"
  short_name = "backupdr-dynamicprotect"
  description = "Tag key for Dynamic Protection."
}

# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/tags_tag_value
resource "google_tags_tag_value" "value" {
  parent = "tagKeys/${google_tags_tag_key.key.name}"
  short_name = "backupdr-gold" # This value should be present in the "Management Console UI" > "Backup Plans" > "Dynamic Protection Tags"
  description = "Tag value for gold plan."
}

# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_instance
# Ensure not to define tag in "resource_manager_tags" block while creating VM instance. It'll destroy the VM
# when tag value is changed/removed later. Instead define a separate tag binding using "google_tags_tag_binding"
# or "google_tags_location_tag_binding" resource. It'll modify just tag binding and VM instance won't be affected.

resource "google_compute_instance" "vm_instance" {
  name         = "demo-instance"
  machine_type = "e2-micro"
  zone         = var.zone

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network = "default"

    access_config {
      // Ephemeral public IP
    }
  }
}

# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_tags_location_tag_binding
resource "google_tags_location_tag_binding" "binding" {
    parent    = "//compute.googleapis.com/projects/${data.google_project.project.number}/zones/${var.zone}/instances/${google_compute_instance.vm_instance.instance_id}"
    tag_value = "tagValues/${google_tags_tag_value.value.name}"
    location  = var.zone
}

# Reference for Tag bindings at project/org level: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/tags_tag_binding

Desassocie uma etiqueta de um recurso

Pode desassociar uma etiqueta de um recurso eliminando o recurso de associação de etiquetas.

Para rever as instruções sobre como desassociar etiquetas, consulte o artigo Desassociar uma etiqueta de um recurso na documentação do Resource Manager.

Consola

  1. Na Google Cloud consola, aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Selecione o projeto e clique em Continuar.

  3. Na coluna Nome, clique no nome da MV à qual quer adicionar etiquetas.

  4. Na página de detalhes da instância de VM, conclua os seguintes passos:

  5. Clique em Edit.

  6. Na secção Básico, clique em Gerir etiquetas e remova a etiqueta backupdr-dynamicprotect para a instância.

  7. Clique em Guardar.

gcloud

Para usar a CLI do Google Cloud, siga a documentação para usar a CLI do Google Cloud para desassociar uma etiqueta de um recurso.

Execute a proteção automática manual

Embora o motor de proteção seja executado diariamente às 04:00 e às 16:00, na hora local, também pode executar o motor de proteção dinâmica a pedido através dos seguintes passos de comando:

  1. Defina o ponto final da consola de gestão introduzindo um valor que comece por "https://bmc-" e termine com ".com". Por exemplo, https://bmc-PROJECT_NUMBER-GENERATED_ID-dot-REGION.backupdr.googleusercontent.com

    export MC_ENDPOINT="MC_ENDPOINT_edited_value"
    
  2. Gere um token de autorização:

    echo "Generating a new bearer token..."
    export BEARER_TOKEN=$(gcloud auth print-access-token)
    echo "Bearer token generated: BEARER_TOKEN=$BEARER_TOKEN"
    
  3. Obtenha um novo ID da sessão:

    echo "Generating a new session id..."
    export SESSION_RESPONSE=$(curl -XPOST -H "Authorization: Bearer $BEARER_TOKEN" -d {} "$MC_ENDPOINT/actifio/session" 2>&-)
    export SESSION_ID=$(echo $SESSION_RESPONSE | jq -r '.session_id')
    
    if [ -z ${SESSION_ID} ]
      then echo "Issue with generating a new session id. Response: $SESSION_RESPONSE";
      return 1;
    fi
    
    echo "Session id generated: SESSION_ID=$SESSION_ID"
    

    Depois de definir um ponto final, gerar um token de autorização e obter um ID da sessão, pode acionar tarefas de proteção dinâmica durante uma hora até o ID da sessão expirar.

  4. Acione uma tarefa de proteção dinâmica

    Uma tarefa de proteção dinâmica atualiza todas as instâncias do Compute Engine com as respetivas etiquetas atuais e atribui planos de cópia de segurança com base nas etiquetas. A tarefa acionada pode demorar alguns minutos, consoante o número de alterações pendentes para as suas cargas de trabalho.

    echo "Triggering dynamic protection job.."
    
    curl -H "Authorization: Bearer $BEARER_TOKEN" -H "backupdr-management-session: Actifio $SESSION_ID" -H "Content-Type: application/json" -XPOST -d '{}' "$MC_ENDPOINT/actifio/dynamicprotection/job/gceinstance"
    
    echo "Dynamic protection job triggered."
    

Use a proteção dinâmica com o gestor de recursos

Pode usar etiquetas de proteção dinâmicas com o Resource Manager, automatizando a proteção das suas instâncias do Compute Engine a um nível organizacional superior. Use o Resource Manager para etiquetar recursos ao nível do projeto ou superior para garantir que a proteção é herdada em todos os seus recursos. Saiba mais acerca da herança de etiquetas.

Migre a proteção manual para a proteção dinâmica

Se pretender migrar os recursos já protegidos para usar a proteção dinâmica através de etiquetas, tem de ativar a flag de migração no seu projeto. Depois de ativar a migração, as instâncias protegidas manualmente podem agora usar a proteção dinâmica. A adição de etiquetas e recursos protege automaticamente com base na etiqueta e remove a proteção manual existente.

Bash

Execute os seguintes comandos.

  1. Defina o ponto final da consola de gestão introduzindo um valor que comece por "https://bmc-" e termine com ".com". Por exemplo, https://bmc-PROJECT_NUMBER-GENERATED_ID-dot-REGION.backupdr.googleusercontent.com

     #!/bin/bash
    
     export MC_ENDPOINT="MC_ENDPOINT_edited_value"
    
    
  2. Ative a migração.

    curl -H "Authorization: Bearer $BEARER_TOKEN" -H "backupdr-management-session: Actifio $SESSION_ID" -H "Content-Type: application/json" -XPATCH -d '{ "enableMigrationToTagBasedProtection":"true"}' "$MC_ENDPOINT/actifio/dynamicprotection/jobconfig"
    

Consola de gestão

Para ativar a migração de instâncias do Compute Engine protegidas manualmente para a proteção baseada em etiquetas, siga estes passos:

  1. Ative a opção Ativar migração para proteção baseada em etiquetas
  2. Confirme a caixa de diálogo Ativar migração. As instâncias do Compute Engine protegidas manualmente vão ser reprotegidas através da etiqueta definida na VM.

Para desativar a migração de instâncias do Compute Engine protegidas manualmente para a proteção baseada em etiquetas, siga estes passos:

  1. Altere a opção Ativar migração para proteção baseada em etiquetas para o estado DESATIVADO.
  2. Confirme a caixa de diálogo Desativar migração. Isto desativa a migração de instâncias do Compute Engine protegidas manualmente para a proteção baseada em etiquetas.

Eventos e notificações

Após a execução do motor de proteção dinâmica, pode rever o progresso a partir da opção Monitorizar eventos. A consola de gestão recebe notificações de resumo após a realização de ações de proteção dinâmica. As notificações de erro são enviadas se for necessária uma ação do utilizador.

Práticas recomendadas

A proteção dinâmica pode aumentar o número de tarefas de cópia de segurança em execução e a quantidade de armazenamento usado. Para ter os melhores resultados, considere o seguinte:

  • Aumentar os períodos de cópia de segurança. Normalmente, um período de 6 a 10 horas permite que todos os trabalhos sejam executados até à conclusão.

  • Uma VM restaurada vai manter a mesma etiqueta de proteção que a VM de origem, juntamente com o mesmo plano de cópia de segurança. No entanto, o tipo de proteção vai mudar de proteção baseada em etiquetas para proteção iniciada pelo utilizador. O recurso vai continuar a ser protegido através do plano de cópia de segurança transferido. Para alterar o tipo de proteção novamente para proteção baseada em etiquetas, pode remover o plano de contingência de proteção transferido e acionar a tarefa de proteção dinâmica a pedido ou aguardar a próxima execução agendada para que a aplicação seja novamente atribuída à proteção baseada em etiquetas.

  • Uma VM montada num anfitrião existente ou num anfitrião recém-criado não transfere a mesma etiqueta de proteção que a VM de origem, pelo que não fica protegida automaticamente após a operação de montagem. Se uma VM recém-montada precisar de ser protegida, pode aplicar uma vinculação de etiquetas à nova VM semelhante à VM de origem.