Como evitar exclusão acidental de VM

Neste documento, você verá como proteger instâncias de VMs específicas contra exclusão, definindo a propriedade deletionProtection em um recurso de instância. Para saber mais sobre instâncias de VM, leia a documentação sobre instâncias.

Como parte da carga de trabalho, é possível que haja determinadas instâncias de VM que são críticas para a execução do aplicativo ou de serviços. Por exemplo, uma instância que executa um servidor SQL ou um servidor usado como gerenciador de licenças etc. É preciso ter uma maneira de proteger essas instâncias de VM contra a exclusão porque elas podem precisar permanecer em execução indefinidamente.

É possível proteger instâncias de VM contra exclusão acidental definindo a sinalização deletionProtection. Se um usuário tentar excluir uma instância de VM que tenha a sinalização deletionProtection definida, a solicitação falhará. Somente usuários com um papel que tenha a permissão compute.instances.create podem redefinir essa sinalização para permitir que o recurso seja excluído.

Antes de começar

Especificações

  • A prevenção contra exclusão não impede a realização das seguintes ações:

  • A proteção contra exclusão pode ser aplicada a VMs regulares e preemptivas.

  • Não é possível aplicar a prevenção contra exclusão a VMs que fazem parte de um grupo de instâncias gerenciadas. No entanto, é possível aplicá-la a instâncias que fazem parte de grupos de instâncias não gerenciadas.

  • Não é possível especificar a prevenção contra exclusão em modelos de instância.

Permissões

Para executar esta tarefa, é preciso que o recurso tenha as permissões abaixo OU um dos papéis do IAM a seguir.

Permissões

  • compute.instances.create

Papéis

  • compute.admin
  • compute.instanceAdmin.v1

Como configurar a proteção contra exclusão durante a criação da instância

Por padrão, a proteção contra exclusão está desativada nas instâncias. Ative a proteção contra exclusão usando as instruções abaixo.

Console

  1. Acesse a página "Instâncias de VM".

    Acessar a página "Instâncias de VM"

  2. Se solicitado, selecione o projeto e clique em Continuar.
  3. Clique no botão Criar instância.
  4. Expanda a seção Gerenciamento, segurança, discos, rede, locatário único.
  5. Em Gerenciamento, marque a caixa de seleção Ativar proteção contra exclusão.

    Captura de tela da caixa de seleção de exclusão de VMs

  6. Continue com o processo de criação da VM.

gcloud

Ao criar uma instância de VM, inclua as sinalizações --deletion-protection ou no-deletion-protection. A proteção contra exclusão fica desativada por padrão. Para ativá-la, use este comando:

gcloud compute instances create [INSTANCE_NAME] --deletion-protection

[INSTANCE_NAME] é o nome da instância que você quer proteger.

Para desativar a proteção contra exclusão durante a criação, use este comando:

gcloud compute instances create [INSTANCE_NAME] --no-deletion-protection

API

Na API, durante a criação de uma instância de VM, inclua a propriedade deletionProtection no corpo da solicitação. Por exemplo:

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances

{
  "name": "[INSTANCE_NAME]",
  "deletionProtection": "true",
  ...
}

Para desativar a proteção contra exclusão, defina deletionProtection como false.

Como alternar a proteção contra exclusão em instâncias atuais

É possível alternar a proteção contra exclusão nas instâncias atuais, independentemente do status delas. Não é necessário interromper a instância para ativar ou desativar a proteção contra exclusão.

Console

  1. Acesse a página "Instâncias de VM".

    Acessar a página "Instâncias de VM"

  2. Se solicitado, selecione o projeto e clique em Continuar.
  3. Clique no nome da instância em que você quer alterar a proteção de exclusão. A página de detalhes da instância é aberta.
  4. Na página "Detalhes da instância", siga estas etapas:

    1. Clique no botão Editar na parte superior da página.
    2. Em Proteção contra exclusão, marque ou desmarque a caixa de seleção para ativar ou desativar a proteção contra exclusão, respectivamente.

      Captura de tela da caixa de seleção de exclusão de VMs

    3. Salve as alterações.

gcloud

Na ferramenta gcloud, execute o comando update com a sinalização --deletion-protection ou --no-deletion-protection:

gcloud compute instances update [INSTANCE_NAME] \
    [--deletion-protection | --no-deletion-protection]

Por exemplo, para ativar a proteção contra exclusão para uma instância chamada example-vm:

gcloud compute instances update example-vm --deletion-protection

API

Na API, faça uma solicitação POST ao método setDeletionProtection com o parâmetro de consulta delectionProtection. Por exemplo:

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/setDeletionProtection?deletionProtection=true

Para desativar a proteção contra exclusão, defina deletionProtection como "false". Não forneça um corpo de solicitação.

Como determinar se uma instância está com a proteção contra exclusão ativada

É possível determinar se uma instância tem a proteção contra exclusão ativada em gcloud tool ou na API.

Console

  1. Acesse a página "Instâncias de VM".

    Acessar a página "Instâncias de VM"

  2. Se solicitado, selecione o projeto e clique em Continuar.
  3. Na página Instâncias de VMs, clique no menu suspenso Colunas e ative a Proteção contra exclusão.

    Captura de tela da opção de exclusão de VMs

  4. Uma nova coluna aparecerá com o ícone da proteção contra exclusão. Se uma VM estiver com a proteção contra exclusão ativada, esse ícone aparecerá ao lado do nome da instância.

gcloud

Na ferramenta gcloud, execute o comando instances describe e procure o campo de proteção contra exclusão. Por exemplo:

gcloud compute instances describe example-instance | grep "deletionProtection"

A ferramenta retornará o valor da propriedade deletionProtection, definida como true ou false:

deletionProtection: false

API

Na API, crie uma solicitação GET e procure o campo deletionProtection:

GET https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]

A seguir