Aggiunta di tag di rete

Un tag è semplicemente una stringa di caratteri aggiunta a un campo tag in una risorsa, ad esempio le istanze di macchine virtuali (VM) Compute Engine o i modelli di istanze. Un tag non è una risorsa distinta, pertanto non puoi crearlo separatamente. Tutte le risorse con questa stringa sono considerate come contenenti quel tag. I tag ti consentono di applicare regole firewall e route a istanze VM specifiche.

Puoi assegnare i tag di rete alle nuove VM al momento della creazione oppure puoi modificare l'insieme di tag assegnati in un secondo momento. Puoi modificare i tag di rete senza arrestare una VM.

Specifiche

I tag di rete assegnati a un'istanza si applicano a tutte le sue interfacce di rete. Un tag di rete si applica solo alle reti VPC collegate direttamente alle interfacce di rete dell'istanza. Questo vale anche per il peering di rete VPC, poiché le reti con peering rimangono reti distinte. Pertanto, i tag di rete sono ancora significativi solo nella rete a cui è collegata l'interfaccia di rete dell'istanza.

I tag di rete devono iniziare con una lettera minuscola e possono contenere lettere minuscole, numeri e trattini. I tag devono terminare con una lettera minuscola o un numero.

Autorizzazioni

I seguenti ruoli IAM sono obbligatori per le attività descritte in questa pagina. Per maggiori dettagli, consulta Ruoli IAM di Compute Engine.

Attività Ruolo richiesto
Assegnare un tag di rete a una nuova istanza al momento della creazione Proprietario o Editor del progetto o Amministratore istanze
Aggiungere o rimuovere tag di rete per le istanze esistenti
Aggiungere, rimuovere o modificare le regole del firewall Proprietario o Editor del progetto o Amministratore sicurezza

Limiti

Ai tag di rete si applicano i seguenti limiti:

Limite Valore Descrizione
Numero massimo di tag per VM 64 Tutti i tag di una VM devono essere univoci. Puoi assegnare fino a 64 tag diversi per VM.
Numero massimo di caratteri per ogni tag 63
Caratteri accettabili per un tag lettere minuscole, numeri, trattini Inoltre:
• I tag devono iniziare con una lettera minuscola.
• I tag devono terminare con un numero o una lettera minuscola.

Regole e route del firewall

I tag di rete ti consentono di applicare route e regole firewall a un'istanza o a un insieme di istanze specifiche:

  • Puoi rendere una regola firewall applicabile a istanze specifiche utilizzando i tag di destinazione e di origine.

  • Puoi rendere una route applicabile a istanze specifiche utilizzando un tag.

Destinazioni per le regole del firewall

Ogni regola firewall in Google Cloud deve avere un target che definisce le istanze a che si applica. Il target predefinito è tutte le istanze nella rete, ma puoi specificare le istanze come target utilizzando i tag target o gli account di servizio target.

Il tag target definisce le Google Cloud VM a cui si applica la regola. La regola viene applicata a una rete VPC specifica. Viene applicato all'indirizzo IP interno principale associato all'interfaccia di rete di qualsiasi istanza collegata alla rete VPC che ha un tag di rete corrispondente.

Sia le regole firewall in entrata che quelle in uscita hanno target:

  • Le regole di ingresso si applicano al traffico in entrata nella rete VPC. Per le regole in entrata, le destinazioni sono le VM di destinazione in Google Cloud.

  • Le regole di uscita si applicano al traffico che esce dalla rete VPC. Per le regole in uscita, i target sono le VM di origine in Google Cloud.

Prendi in considerazione una regola firewall in entrata che consenta il traffico sulla porta TCP 80 da qualsiasi origine. La regola ha un tag target http-server. Questa regola si applica solo alle istanze con il tag di rete http-server, il che significa che il traffico in entrata sulla porta 80 è consentito per queste istanze.

Filtri di origine per le regole firewall in entrata

Quando crei regole firewall in entrata, devi specificare un'origine. Puoi definirlo utilizzando intervalli di indirizzi IP interni o esterni o facendo riferimento a istanze specifiche. Specifica le istanze utilizzando i tag di origine o gli account di servizio di origine.

Il tag di origine per una regola del firewall in entrata applicata a una rete VPC definisce una sorgente di traffico come proveniente dall'indirizzo IP interno principale associato all'interfaccia di rete collegata a quella rete VPC per qualsiasi istanza con un tag di rete corrispondente.

Puoi utilizzare una combinazione di intervalli IP e tag di origine oppure una combinazione di intervalli IP e account di servizio di origine. Non puoi utilizzare sia i tag di rete che gli account di servizio nella stessa regola. Per ulteriori informazioni sui tag di origine e sui service account, consulta la sezione Filtro per service account o tag di rete.

Considerazioni

Quando utilizzi una regola firewall in entrata con tag di origine, potresti notare un ritardo di propagazione. In genere questo ritardo è di pochi secondi, ma in rari casi può durare anche qualche minuto. Quando apporti le seguenti modifiche, la regola del firewall di ingresso può richiedere del tempo per essere applicata o rimossa da un'istanza associata:

  • Avvio o arresto di un'istanza con un tag associato al tag di origine di una regola
  • Avvio di un'istanza che ha un tag associato al tag target di una regola
  • Aggiunta o rimozione di tag da un'istanza se i tag vengono utilizzati nei campi di origine o di destinazione di una regola
  • Aggiunta o rimozione di tag di origine o di destinazione da una regola

Questo ritardo di propagazione si applica solo alle regole di ingresso che utilizzano i tag di origine. Tutte le altre regole firewall hanno effetto immediato su un'istanza. Ad esempio, una regola di ingresso che utilizza un intervallo di indirizzi IP di origine e tag di destinazione non ha ritardo di propagazione.

Interazione con le route statiche

Quando crei una route statica, specifichi una rete VPC. Puoi quindi specificare i tag in modo che la route si applichi solo al traffico inviato dalle VM con tag di rete corrispondenti nella rete VPC specificata.

Aggiungere, visualizzare e rimuovere i tag

Puoi specificare i tag di rete quando crei un'istanza VM. Puoi anche aggiungere e rimuovere tag da una VM esistente.

Aggiungere tag durante la creazione di una VM

Console

  1. Vai alla pagina delle istanze VM.
    Vai alla pagina Istanze VM
  2. Fai clic su Crea istanza.
  3. Fai clic su Gestione, sicurezza, dischi, networking, single-tenancy per aprire la sezione.
  4. Fai clic sulla scheda Networking.
  5. Nel campo Tag di rete, specifica uno o più tag separati da virgole.
  6. Compila gli altri campi per la VM.
  7. Fai clic su Crea.

gcloud

Per assegnare nuovi tag a un'istanza, utilizza il seguente comando gcloud.

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

Sostituisci quanto segue:

  • INSTANCE_NAME: il nome dell'istanza.
  • ZONE: la zona dell'istanza.
  • TAGS: un elenco di tag separati da virgole.

Per ulteriori informazioni, consulta la documentazionegcloud.

Terraform

Puoi utilizzare la risorsa Terraform per creare un'istanza VM con tag di rete.

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"]
}

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Aggiungere tag a una VM esistente

Console

  1. Vai alla pagina delle istanze VM.
    Vai alla pagina Istanze VM
  2. Fai clic sul nome di un'istanza.
  3. Nella pagina Dettagli istanza VM, fai clic su Modifica.
  4. Nella sezione Tag di rete, specifica uno o più tag separati da virgole.
  5. Fai clic su Salva.

gcloud

Per assegnare nuovi tag a un'istanza, utilizza il seguente comando gcloud.

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

Sostituisci quanto segue:

  • INSTANCE_NAME: il nome dell'istanza.
  • ZONE: la zona dell'istanza.
  • TAGS: un elenco di tag separati da virgole.

Per ulteriori informazioni, consulta la documentazionegcloud.

Visualizza tag

Console

  1. Vai alla pagina delle istanze VM.
    Vai alla pagina Istanze VM
  2. Visualizza i tag nella colonna Tag di rete.

    Se necessario, fai clic su Opzioni di visualizzazione delle colonne per aggiungere la colonna Tag rete.

  3. Per visualizzare le istanze con un tag specifico, seleziona la proprietà Tag di rete nel filtro e inserisci i tag in base ai quali vuoi filtrare.

gcloud

Per elencare le istanze con i relativi tag, esegui questo comando:

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

Per elencare le istanze con un tag specifico, esegui questo comando:

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

Sostituisci quanto segue:

  • TAG_EXPRESSION: l'espressione da filtrare. Ad esempio, tag1, tag1 OR tag2, tag1 AND tag2. Per saperne di più su come filtrare l'output, consulta l'argomento gcloud filters.

Rimuovi i tag

Console

  1. Vai alla pagina delle istanze VM.
    Vai alla pagina Istanze VM
  2. Fai clic sul nome di un'istanza.
  3. Nella pagina Dettagli istanza VM, fai clic su Modifica.
  4. Nella sezione Tag di rete, rimuovi i tag facendo clic su Rimuovi (X).
  5. Fai clic su Salva.

gcloud

Per rimuovere i tag da un'istanza, utilizza il seguente comando gcloud.

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

Sostituisci quanto segue:

  • INSTANCE_NAME: il nome dell'istanza.
  • ZONE: la zona dell'istanza.
  • TAGS: un elenco di tag separati da virgole.

Per ulteriori informazioni, consulta la documentazionegcloud.

Richieste API dirette

Puoi impostare i tag di rete associati a un'istanza inviando una richiesta diretta all'API. A differenza dell'utilizzo della console Google Cloud o dei comandi gcloud, l'aggiornamento dei tag tramite richiesta diretta dell'API non conserva i tag esistenti. Assicurati di specificare l'insieme completo di tag da associare a un'istanza ogni volta che aggiorni i tag in questo modo.

Per aggiornare i tag utilizzando una richiesta API diretta:

  1. Determina l'impronta più recente associata ai tag. L'impronta viene utilizzata per evitare collisioni dovute a richieste API simultanee. La procedura di aggiornamento dei tag di rete per un'istanza è simile all'aggiornamento dei metadati dell'istanza.

    Esegui una richiesta GET all'istanza, ad esempio:

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

    Cerca la proprietà tags.fingerprint nella risposta:

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

    Puoi anche utilizzare un comando gcloud per ottenere fingerprint, come mostrato nell'esempio seguente:

    gcloud compute instances describe INSTANCE_NAME \
       --zone ZONE \
       --format="get(tags.fingerprint)"
  2. Invia una richiesta POST al metodo instance().setTags. Il corpo della richiesta deve contenere tutti i tag da associare all'istanza, nonché il valore fingerprint.

    Esempio di richiesta:

    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="
    }
    

    Risposta di esempio:

    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,
    ...
    }
    

Passaggi successivi