Adicionar tags de rede

Uma tag é simplesmente uma string de caracteres adicionada a um campo de tags em um recurso, como instâncias de máquina virtual (VM) do Compute Engine ou modelos de instância. Uma tag não é um recurso isolado, portanto, não é possível criá-la separadamente. Considera-se que todos os recursos da string têm essa tag. As tags permitem que você aplique regras de firewall e rotas a instâncias de VM específicas.

É possível atribuir tags de rede a novas VMs no momento da criação ou editar o conjunto de tags atribuídas a qualquer momento. Você também pode editar tags de rede sem interromper uma VM.

Especificações

As tags de rede atribuídas a uma instância se aplicam a todas as interfaces de rede dela. Uma tag de rede se aplica somente às redes VPC que são diretamente ligadas às interfaces de rede da instância. Isso vale até para o peering de rede VPC, porque redes com peering também são redes distintas. Assim, essas tags só têm significado na rede a que a interface de rede da instância está ligada.

As tags de rede precisam começar com uma letra minúscula e podem conter letras minúsculas, números e hifens. Elas precisam terminar com uma letra minúscula ou um número.

Permissões

Os seguintes papéis do IAM são necessários para as tarefas abordadas nesta página. Para mais detalhes, consulte Papéis do IAM do Compute Engine.

Tarefa Papel necessário
Atribuir uma tag de rede a uma nova instância no momento da criação Proprietário ou editor do projeto ou administrador da instância
Adicionar tags de rede às instâncias existentes ou removê-las
Adicionar, remover ou editar regras de firewall Proprietário ou editor do projeto ou administrador de segurança

Limites

Os seguintes limites se aplicam às tags de rede:

Limite Valor Descrição
Número máximo de tags por VM 64 Todas as tags de uma VM precisam ser exclusivas. Você pode atribuir até 64 tags diferentes por VM.
Número máximo de caracteres para cada tag 63
Caracteres permitidos em uma tag letras minúsculas, números, hifens Além disso:
• As tags precisam começar com uma letra minúscula.
• As tags precisam terminar com um número ou uma letra minúscula.

Regras e rotas de firewall

Com as tags de rede, você pode aplicar regras e rotas de firewall a uma instância específica ou a um conjunto de instâncias:

  • Para aplicar uma regra de firewall a instâncias específicas, use tags de destino e tags de origem.

  • Para aplicar uma rota a instâncias específicas, use uma tag.

Destinos para regras de firewall

Cada regra de firewall no Google Cloud precisa ter um destino que defina as instâncias às quais ela se aplica. O padrão é todas as instâncias na rede, mas é possível especificar instâncias como destinos usando tags de destino ou contas de serviço de destino.

A tag de destino define as VMs do Google Cloud a que a regra se aplica. A regra é aplicada a uma rede VPC específica. Ela é aplicável ao endereço IP interno principal associado à interface de rede de qualquer instância ligada a essa rede VPC que tenha uma tag de rede correspondente.

Tanto as regras de firewall de entrada quanto as de saída têm destinos:

  • As regras de entrada são aplicadas ao tráfego que entra na sua rede VPC. Para regras de entrada, os destinos são VMs de destino no Google Cloud.

  • As regras de saída são aplicadas ao tráfego que sai da sua rede VPC. Para regras de saída, os destinos são VMs de origem no Google Cloud.

Use uma regra de firewall de entrada que permita o tráfego na porta TCP 80 de qualquer origem. A regra tem uma tag de destino de http-server. Essa regra se aplicaria apenas a instâncias que têm a tag de rede http-server. Isso significa que o tráfego de entrada na porta 80 seria permitido para essas instâncias.

Filtros de origem para regras de firewall de entrada

Ao criar regras de firewall de entrada, é preciso especificar uma origem. Para defini-la, use intervalos de endereços IP internos ou externos ou chame instâncias específicas. Use tags de origem ou contas de serviço de origem para especificar instâncias específicas.

A tag de origem para uma regra de firewall de entrada aplicada em uma rede VPC define uma origem de tráfego como proveniente do endereço IP interno principal associado à interface de rede ligada a essa rede VPC para qualquer instância que tenha uma tag de rede correspondente.

Você pode usar uma combinação de intervalos de IP e tags de origem ou de intervalos de IP e contas de serviço de origem. No entanto, não é possível usar tags de rede e contas de serviço na mesma regra. Para mais informações sobre tags de origem e contas de serviço, consulte Como filtrar por conta de serviço ou tag de rede.

Considerações

Ao usar uma regra de firewall de entrada com tags de origem, talvez você observe um atraso na propagação. Esse atraso normalmente é de alguns segundos, mas pode levar alguns minutos em casos raros. Quando você faz as alterações a seguir, pode levar algum tempo até que a regra de firewall de entrada seja aplicada ou removida de uma instância associada:

  • Iniciar ou interromper uma instância que tem uma tag associada à tag de origem de uma regra;
  • Iniciar uma instância que tem uma tag associada à tag de destino de uma regra;
  • Adicionar ou remover tags de uma instância quando as tags são usadas nos campos de origem ou destino de uma regra;
  • Adicionar ou remover tags de origem ou destino de uma regra.

Esse atraso na propagação ocorre somente em regras de entrada que usam tags de origem. Todas as outras regras de firewall entram em vigor imediatamente em uma instância. Por exemplo, uma regra de entrada que usa um intervalo de endereços IP de origem e tags de destino não tem atraso de propagação.

Interação com rotas estáticas

Ao criar uma rota estática, você especifica uma rede VPC. Em seguida, especifique tags para que a rota se aplique somente ao tráfego enviado de VMs com tags de rede correspondentes na rede VPC especificada.

Adicionar, visualizar e remover tags

É possível especificar tags de rede ao criar uma instância de VM. Também é possível adicionar e remover tags de uma VM atual.

Adicionar tags ao criar uma VM

Console

  1. Acesse a página "Instâncias de VM".
    Acessar a página "Instâncias de VM"
  2. Clique em Criar instância.
  3. Clique em Gerenciamento, segurança, discos, rede, locatário único para abrir essa seção.
  4. Clique na guia Rede.
  5. No campo Tags de rede, especifique uma ou mais tags, separadas por vírgulas.
  6. Preencha outros campos da VM.
  7. Clique em Criar.

gcloud

Para atribuir novas tags a uma instância, use o seguinte comando gcloud.

gcloud compute instances create INSTANCE_NAME \
    --zone ZONE \
    --tags TAGS \
    ...other parameters as needed.

Substitua:

  • INSTANCE_NAME: o nome da instância.
  • ZONE: a zona da instância.
  • TAGS: uma lista de tags delimitada por vírgulas.

Consulte a documentação gcloud para mais informações.

Terraform

É possível usar o recurso Terraform para criar uma instância de VM que tenha tags de rede.

resource "google_compute_instance" "default" {
  project      = var.project_id # Replace this with your project ID in quotes
  zone         = "southamerica-east1-b"
  name         = "backend-instance"
  machine_type = "e2-medium"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }
  network_interface {
    network = "default"
  }
  tags = ["health-check", "ssh"]
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Adicionar tags a uma VM

Console

  1. Acesse a página "Instâncias de VM".
    Acessar a página "Instâncias de VM"
  2. Clique no nome de uma instância.
  3. Na página Detalhes da instância de VM, clique em Editar.
  4. Na seção Tags de rede, especifique uma ou mais tags separadas por vírgulas.
  5. Clique em Salvar.

gcloud

Para atribuir novas tags a uma instância, use o seguinte comando gcloud.

gcloud compute instances add-tags INSTANCE_NAME \
    --zone ZONE \
    --tags TAGS

Substitua:

  • INSTANCE_NAME: o nome da instância.
  • ZONE: a zona da instância.
  • TAGS: uma lista de tags delimitada por vírgulas.

Consulte a documentação gcloud para mais informações.

Visualizar tags

Console

  1. Acesse a página "Instâncias de VM".
    Acessar a página "Instâncias de VM"
  2. Veja as tags na coluna Tags de rede.

    Se necessário, clique em Opções de exibição da coluna para adicionar a coluna Tags de rede.

  3. Para ver as instâncias que são marcadas com uma tag específica, selecione a propriedade Tags de rede no filtro e digite as tags que você quer filtrar.

gcloud

Para listar as instâncias com as tags, execute este comando:

gcloud compute instances list --format='table(name,status,tags.list())'

Para listar instâncias marcadas com uma tag específica, execute este comando:

gcloud compute instances list --filter='tags:TAG_EXPRESSION'

Substitua:

  • TAG_EXPRESSION: a expressão que você quer filtrar. Por exemplo: tag1, tag1 OR tag2, tag1 AND tag2. Consulte gcloud topic Filters para mais informações sobre como filtrar a saída.

Remover tags

Console

  1. Acesse a página "Instâncias de VM".
    Acessar a página "Instâncias de VM"
  2. Clique no nome de uma instância.
  3. Na página Detalhes da instância de VM, clique em Editar.
  4. Na seção Tags de rede, remova as tags clicando em remover (X).
  5. Clique em Salvar.

gcloud

Para remover as tags de uma instância, use o seguinte comando gcloud.

gcloud compute instances remove-tags INSTANCE_NAME \
    --zone ZONE \
    --tags TAGS

Substitua:

  • INSTANCE_NAME: o nome da instância.
  • ZONE: a zona da instância.
  • TAGS: uma lista de tags delimitada por vírgulas.

Consulte a documentação gcloud para mais informações.

Solicitações diretas de API

É possível definir as tags de rede associadas a uma instância fazendo uma solicitação direta de API. Diferente do uso do Console do Google Cloud ou dos comandos gcloud, a atualização das tags por solicitação direta de API não preserva as tags existentes. É preciso especificar o conjunto completo de tags que serão associadas a uma instância sempre que você as atualiza dessa maneira.

Para atualizar tags usando uma solicitação direta de API, faça o seguinte:

  1. Determine a impressão digital mais recente associada às tags. A impressão digital é usada para evitar colisões de solicitações de API simultâneas. O processo de atualização de tags de rede para uma instância é semelhante à atualização dos metadados dela.

    Execute uma solicitação GET para a instância. Por exemplo:

    GET https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance
    

    Procure a propriedade tags.fingerprint na resposta:

    200 OK
    {
    ...
    "tags": {
     "items": [
     "http-server",
     "db-client"
     ],
     "fingerprint": "MW8EqhxILtc="
    },
    ...
    }
    

    Você também pode usar um comando gcloud para receber fingerprint, como mostra o exemplo a seguir:

    gcloud compute instances describe INSTANCE_NAME \
       --zone ZONE \
       --format="get(tags.fingerprint)"
  2. Faça uma solicitação POST ao método instance().setTags. O corpo da solicitação precisa conter todas as tags que serão associadas à instância, além do valor fingerprint.

    Exemplo de solicitação:

    POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance/setTags
    {
     "items": [
      "http-server",
      "db-client",
      "allow-internet-access"
      ],
     "fingerprint": "MW8EqhxILtc="
    }
    

    Exemplo de resposta:

    200 OK
    {
          "kind": "compute#operation",
          "id": "9251830049681941507",
          "name": "operation-1442414898862-51fde63aa57b1-422323e0-c439fb04",
          "zone": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f",
          "operationType": "setTags",
          "targetLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance",
          "targetId": "4392196237934605253",
          "status": "PENDING",
          "user": "user@example.com",
          "progress": 0,
    ...
    }
    

A seguir