Configurazione dei tag di rete

Un tag è semplicemente una stringa di caratteri aggiunta a un campo tag in una risorsa, ad esempio istanze di macchine virtuali (VM) di Compute Engine o modelli di istanze. Un tag non è una risorsa separata, quindi non puoi crearlo separatamente. Tutte le risorse con questa stringa sono considerate in possesso di tale tag. I tag consentono di rendere regole firewall e route applicabili a istanze VM specifiche.

Puoi assegnare tag di rete a nuove VM al momento della creazione oppure modificare l'insieme di tag assegnati in qualsiasi momento. Puoi modificare i tag di rete senza arrestare una VM.

Specifiche

I tag di rete che assegni a un'istanza si applicano a tutte le interfacce di rete dell'istanza. 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, perché le reti in peering rimangono reti distinte. Di conseguenza, 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

Per le attività illustrate in questa pagina sono necessari i seguenti ruoli IAM. Per maggiori dettagli, consulta i ruoli IAM di Compute Engine.

Attività Ruolo obbligatorio
Assegna un tag di rete a una nuova istanza quando viene creata Proprietario o editor del progetto oppure amministratore istanza
Aggiungi o rimuovi i tag di rete per le istanze esistenti
Aggiungi, rimuovi o modifica regole firewall Proprietario o editor del progetto oppure Amministratore della sicurezza

Limiti

I tag di rete si applicano ai limiti indicati di seguito.

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

Regole e route firewall

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

  • Per rendere una regola firewall applicabile a istanze specifiche, utilizza tag di destinazione e tag di origine.

  • Per rendere una route applicabile a istanze specifiche, puoi utilizzare un tag.

Target per le regole firewall

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

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

Le regole firewall in entrata e in uscita presentano target:

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

  • Le regole in uscita vengono applicate al traffico che lascia la rete VPC. Per le regole in uscita, i target sono VM di origine in Google Cloud.

Valuta una regola firewall in entrata che consenta il traffico sulla porta TCP 80 da qualsiasi origine. La regola ha un tag target pari a http-server. Questa regola si applica solo alle istanze che dispongono del tag di rete http-server, il che significa che il traffico in entrata sulla porta 80 è consentito a tali istanze.

Filtri di origine per le regole firewall in entrata

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

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

Puoi utilizzare una combinazione di intervalli IP e tag di origine oppure di una combinazione di intervalli IP e account di servizio di origine. Non è possibile utilizzare sia i tag di rete sia gli account di servizio nella stessa regola. Per ulteriori informazioni sui tag di origine e sugli account di servizio, consulta la sezione Filtrare per account di servizio e tag di rete.

Considerazioni

Quando utilizzi una regola firewall in entrata con tag di origine, potresti notare un ritardo nella propagazione. Questo ritardo di solito è di pochi secondi, ma in alcuni rari casi può richiedere qualche minuto. Quando apporti le seguenti modifiche, l'applicazione o la rimozione della regola firewall in entrata da un'istanza associata può richiedere del tempo:

  • Avvio o arresto di un'istanza con un tag associato a un tag sorgente di una regola
  • Avvio di un'istanza con un tag associato a un tag di destinazione della regola
  • Aggiunta o rimozione di tag da un'istanza se vengono utilizzati nei campi di origine o target di una regola
  • Aggiunta o rimozione dei tag di origine o di destinazione da una regola

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

Interazione con percorsi

Quando crei una route, devi specificare una rete VPC e specificare tag in modo che la route sia applicabile solo al traffico inviato dall'indirizzo IP interno principale dell'interfaccia di rete collegata alla rete VPC per le istanze con tag di rete corrispondenti.

Aggiungere, visualizzare e rimuovere tag

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

Aggiunta di tag durante la creazione di una VM

console

  1. Vai alla pagina 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 in questione.
  4. Fai clic sulla scheda Networking.
  5. Nel campo Tag di rete, specifica uno o più tag separati da virgole.
  6. Compila 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 delimitati da virgole.

Per ulteriori informazioni, consulta la documentazione di gcloud.

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

Aggiunta di tag a una VM esistente

console

  1. Vai alla pagina 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 delimitati da virgole.

Per ulteriori informazioni, consulta la documentazione di gcloud.

Visualizzazione dei tag

console

  1. Vai alla pagina 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 di rete.

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

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 codificate con un tag specifico, esegui questo comando:

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

Sostituisci quanto segue:

  • TAG_EXPRESSION: l'espressione che vuoi filtrare. ad esempio tag1, tag1 OR tag2, tag1 AND tag2. Consulta gcloud topic filters per ulteriori informazioni sull'applicazione di filtri all'output.

Rimozione tag

console

  1. Vai alla pagina 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 comando gcloud seguente.

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 delimitati da virgole.

Per ulteriori informazioni, consulta la documentazione di gcloud.

Richieste API dirette

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

Per aggiornare i tag utilizzando una richiesta API diretta:

  1. Determinare l'ultima impronta associata ai tag. L'impronta viene utilizzata per impedire collisioni da richieste API simultanee. Il processo di aggiornamento dei tag di rete per un'istanza è simile all'aggiornamento dei metadati delle istanze.

    Esegui una richiesta GET per l'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. Fai una richiesta POST al metodo instance().setTags. Il corpo della richiesta deve contenere tutti i tag che devono essere associati all'istanza insieme al valore fingerprint.

    Richiesta di esempio:

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

    Esempio di risposta:

    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