Como configurar 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 que você atribui a uma instância se aplicam somente à rede VPC em que a interface de rede principal da instância está localizada. Isso vale até para o peering de rede VPC porque as redes com peering continuam sendo redes distintas. Assim, essas tags só são importantes para a rede que contém a interface de rede principal da instância.

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 obrigató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 às quais a regra se aplica. A regra será aplicada ao endereço IP interno primário de qualquer instância 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 define a origem de tráfego como proveniente do endereço IP interno primário de qualquer instância que tenha uma tag de rede correspondente.

É possível 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

Você pode especificar tags durante a criação de uma rota para que ela seja aplicada somente ao tráfego enviado do endereço IP interno primário das instâncias com tags de rede correspondentes.

Como adicionar e remover tags

Como adicionar tags

Console

  1. Acesse a página "Instâncias de VM".
    Acessar a página "Instâncias de VMs"
  2. Selecione 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. Substitua [INSTANCE-NAME] pelo nome da instância, [ZONE] pela zona e [TAGS] por uma lista de strings delimitada por vírgulas:

gcloud compute instances add-tags [INSTANCE-NAME] \
    --zone [ZONE] \
    --tags [TAGS]

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

Como remover tags

Console

  1. Acesse a página "Instâncias de VM".
    Acessar a página "Instâncias de VMs"
  2. Selecione 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. Substitua [INSTANCE-NAME] pelo nome da instância, [ZONE] pela zona e [TAGS] por uma lista delimitada por vírgulas das tags que devem ser removidas:

gcloud compute instances remove-tags [INSTANCE-NAME] \
    --zone [ZONE] \
    --tags [TAGS]

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 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://www.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://www.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