Utilizzo delle regole firewall VPC

Questa pagina descrive i comandi per lavorare con le regole firewall virtual private cloud (VPC) e presenta alcuni esempi di utilizzo. Le regole firewall VPC consentono o negano il traffico da o verso le istanze di macchine virtuali (VM) in una rete VPC in base a numero di porta, tag o protocollo.

Prima di iniziare

Per saperne di più sulle regole firewall VPC, ad esempio le regole implicite e quelle generate dal sistema per le reti predefinite, consulta Regole firewall VPC.

Prima di configurare le regole firewall, esamina i componenti delle regole firewall per acquisire familiarità con i componenti firewall utilizzati in Google Cloud.

Crea regole firewall VPC

Le regole firewall VPC sono definite a livello di rete e si applicano solo alla rete in cui vengono create; tuttavia, il nome che scegli per ciascuna di esse deve essere univoco per il progetto.

Una regola firewall può contenere intervalli IPv4 o IPv6, ma non entrambi.

Quando crei una regola firewall, puoi scegliere di abilitare il logging delle regole firewall. Se attivi la registrazione, puoi omettere i campi dei metadati per risparmiare sui costi di archiviazione. Per saperne di più, consulta Utilizza il logging delle regole firewall VPC.

Se vuoi specificare più service account per il campo account di servizio di destinazione o di origine, utilizza Google Cloud CLI, l'API o le librerie client.

La rete predefinita fornisce regole firewall automatiche al momento della creazione. Le reti in modalità personalizzata e automatica ti consentono di creare facilmente firewall simili durante la creazione della rete se utilizzi la console Google Cloud . Se utilizzi gcloud CLI o l'API e vuoi creare regole firewall simili a quelle fornite dalla rete predefinita, consulta Configurare le regole firewall per i casi d'uso comuni.

Console

  1. Nella console Google Cloud , vai alla pagina Policy del firewall.

    Vai a Policy firewall

  2. Fai clic su Crea regola firewall.

  3. Inserisci un nome per la regola firewall.

    Il nome deve essere univoco per il progetto.

  4. (Facoltativo) Puoi attivare la registrazione delle regole firewall:

    • Fai clic su Log > On (Log > Attiva).
    • Per omettere i metadati, fai clic su Mostra dettagli log e poi deseleziona la casella di controllo Includi metadati.
  5. Specifica la Rete per la regola firewall.

  6. Specifica la Priorità della regola.

    Più basso è il numero, maggiore è la priorità.

  7. Per Direzione del traffico, scegli in entrata o in uscita.

  8. Per Azione in caso di corrispondenza, scegli Consenti o Nega.

  9. Specifica i target della regola.

    • Se vuoi che la regola si applichi a tutte le istanze nella rete, scegli Tutte le istanze nella rete.
    • Se vuoi che la regola venga applicata a istanze selezionate in base ai tag di rete (target), scegli Tag di destinazione specificati e poi, nel campo Tag di destinazione, digita i tag a cui deve essere applicata la regola.
    • Se vuoi che la regola venga applicata a istanze selezionate in base al account di servizio associato, scegli Service account specificato, indica se il account di servizio si trova nel progetto corrente o in un altro in Ambito service account e poi, nel campo Service account di destinazione, scegli o digita il nome del account di servizio.
  10. Per una regola in entrata, specifica il Filtro di origine:

    • Per filtrare il traffico in entrata in base agli intervalli IPv4 di origine, seleziona Intervalli IPv4, quindi inserisci i blocchi CIDR nel campo Intervalli IPv4 di origine. Utilizza 0.0.0.0/0 per qualsiasi origine IPv4.
    • Per filtrare il traffico in entrata in base agli intervalli IPv6 di origine, seleziona Intervalli IPv6, quindi inserisci i blocchi CIDR nel campo Intervalli IPv6 di origine. Utilizza ::/0 per qualsiasi origine IPv6.
    • Per filtrare il traffico in entrata in base al tag di rete, scegli Tag di origine, quindi digita i tag di rete nel campo Tag di origine. Per il limite al numero di tag sorgente, consulta Limiti per rete. Il filtro per tag di origine è disponibile solo se la destinazione non è specificata dal service account.
    • Per filtrare il traffico in entrata in base al account di servizio, scegli Service account, indica se il account di servizio si trova nel progetto corrente o in un altro in Ambito service account, quindi scegli o digita il nome del account di servizio nel campo Service account di origine. Il filtro per account di servizio di origine è disponibile solo se la destinazione non è specificata dal tag di rete.
    • Specifica un secondo filtro di origine, se vuoi. I filtri dell'origine secondaria non possono utilizzare gli stessi criteri di filtro di quella principale. Gli intervalli IP di origine possono essere utilizzati insieme ai tag di origine o a un service account di origine. Il set di risorse effettivo è l'unione degli indirizzi IP dell'intervallo di origine e delle istanze identificate dai tag di rete o dai service account. ovvero, se l'intervallo IP di origine o i tag di origine (o gli account di servizio di origine) corrispondono ai criteri di filtro, l'origine viene inclusa nel set di risorse effettivo.
    • I tag di origine e l'account di servizio di origine non possono essere utilizzati insieme.

    Per saperne di più sull'utilizzo di un account di servizio e di un tag di rete, consulta Filtrare per account di servizio anziché per tag di rete.

  11. Per una regola in entrata, specifica il Filtro di destinazione:

    • Per filtrare il traffico in entrata in base agli intervalli IPv4 di destinazione, seleziona Intervalli IPv4 e inserisci i blocchi CIDR nel campo Intervalli IPv4 di destinazione. Utilizza 0.0.0.0/0 per qualsiasi destinazione IPv4.
    • Per filtrare il traffico in entrata in base agli intervalli IPv6 di destinazione, seleziona Intervalli IPv6 e inserisci i blocchi CIDR nel campo Intervalli IPv6 di destinazione. Utilizza ::/0 per qualsiasi destinazione IPv6.

    Per saperne di più, consulta Destinazione per le regole in entrata.

  12. Per una regola in uscita, specifica il Filtro di destinazione:

    • Per filtrare il traffico in uscita in base agli intervalli IPv4 di destinazione, seleziona Intervalli IPv4 e inserisci i blocchi CIDR nel campo Intervalli IPv4 di destinazione. Utilizza 0.0.0.0/0 per qualsiasi destinazione IPv4.
    • Per filtrare il traffico in uscita in base agli intervalli IPv6 di destinazione, seleziona Intervalli IPv6 e inserisci i blocchi CIDR nel campo Intervalli IPv6 di destinazione. Utilizza ::/0 per qualsiasi destinazione IPv6.

    Per saperne di più, consulta Destinazione per le regole in uscita.

  13. Per una regola in uscita, specifica il Filtro di origine:

    • Per filtrare il traffico in uscita in base agli intervalli IPv4 di origine, seleziona Intervalli IPv4 e inserisci i blocchi CIDR nel campo Intervalli IPv4 di origine. Utilizza 0.0.0.0/0 per qualsiasi origine IPv4.
    • Per filtrare il traffico in uscita in base agli intervalli IPv6 di origine, seleziona Intervalli IPv6 e inserisci i blocchi CIDR nel campo Intervalli IPv6 di origine. Utilizza ::/0 per qualsiasi destinazione IPv6.

    Per saperne di più, consulta Origine per le regole in uscita.

  14. Definisci i protocolli e le porte a cui si applica la regola:

    • Per applicare la regola a tutti i protocolli e le porte di destinazione, seleziona Consenti tutto o Nega tutto, a seconda dell'azione.
    • Per definire protocolli e porte di destinazione specifici, seleziona Protocolli e porte specificati:
      • Seleziona TCP per includere il protocollo TCP e le porte di destinazione. Inserisci all o un elenco delimitato da virgole di porte di destinazione, ad esempio 20-22, 80, 8080.
      • Seleziona UDP per includere il protocollo UDP e le porte di destinazione. Inserisci all o un elenco delimitato da virgole di porte di destinazione, ad esempio 67-69, 123.
      • Seleziona Altro per includere protocolli come icmp, sctp o un numero di protocollo. Ad esempio, utilizza icmp o il numero di protocollo 1 per ICMP IPv4. Utilizza il numero di protocollo 58 per ICMP IPv6.

    Per saperne di più, consulta protocolli e porte di destinazione.

  15. (Facoltativo) Puoi creare la regola firewall ma non applicarla impostando il relativo stato di applicazione su disabilitato. Fai clic su Disattiva regola, poi seleziona Disattivata.

  16. Fai clic su Crea.

gcloud

Per creare una regola firewall VPC, utilizza il comando gcloud compute firewall-rules create:

gcloud compute firewall-rules create RULE_NAME \
    [--network NETWORK; default="default"] \
    [--priority PRIORITY;default=1000] \
    [--direction (ingress|egress|in|out); default="ingress"] \
    [--action (deny | allow )] \
    [--target-tags TAG[,TAG,...]] \
    [--target-service-accounts=IAM_SERVICE_ACCOUNT[,IAM_SERVICE_ACCOUNT,...]] \
    [--source-ranges CIDR_RANGE[,CIDR_RANGE,...]] \
    [--source-tags TAG[,TAG, ...]] \
    [--source-service-accounts=IAM_SERVICE_ACCOUNT[,IAM_SERVICE_ACCOUNT,...]] \
    [--destination-ranges CIDR_RANGE[,CIDR_RANGE,...]] \
    [--rules (PROTOCOL[:PORT[-PORT]],[PROTOCOL[:PORT[-PORT]],...]] | all ) \
    [--disabled | --no-disabled] \
    [--enable-logging | --no-enable-logging] \
    [--logging-metadata LOGGING_METADATA]

Utilizza i parametri come segue. Per ulteriori dettagli su ciascuno, consulta la documentazione di riferimento dell'SDK.

  • --network La rete per la regola. Se omessa, la regola viene creata nella rete default. Se non hai una rete predefinita o vuoi creare la regola in una rete specifica, devi utilizzare questo campo.
  • --priority Un valore numerico che indica la priorità per la regola. Più basso è il numero, maggiore è la priorità.
  • --direction La direzione del traffico, INGRESS o EGRESS.
  • --action L'azione in caso di corrispondenza, allow o deny. Deve essere utilizzato con il flag --rules.
  • Specifica un target in uno dei seguenti modi:
    • Ometti --target-tags e --target-service-accounts se la regola deve essere applicata a tutti i target nella rete.
    • Utilizza il flag --target-tags per definire i target in base ai tag di rete.
    • Utilizza il flag --target-service-accounts per definire i target in base agli account di servizio associati.
  • Per la regola di ingresso, per perfezionare ulteriormente la destinazione, utilizza --destination-ranges per specificare intervalli di indirizzi IPv4 o IPv6 nel formato CIDR. Se --destination-ranges viene omesso, la destinazione in entrata è qualsiasi indirizzo IPv4, 0.0.0.0/0. Per saperne di più, consulta Destinazioni per le regole in entrata e Target e indirizzi IP per le regole in entrata.

  • Per una regola in entrata, specifica un'origine:

    • --source-ranges Utilizza questo flag per specificare intervalli di indirizzi IPv4 o IPv6 di origine in formato CIDR.
    • Se --source-ranges, source-tags e --source-service-accounts vengono omessi, l'origine in entrata è qualsiasi indirizzo IPv4, 0.0.0.0/0.
    • --source-tags Utilizza questo flag per specificare le istanze di origine in base ai tag di rete. Il filtro per tag di origine è disponibile solo se la destinazione non è specificata dal account di servizio. Per saperne di più, consulta Filtro per account di servizio e tag di rete.
    • --source-ranges e --source-tags possono essere utilizzati insieme. Se vengono specificati entrambi, il set di risorse effettivo è l'unione degli indirizzi IP dell'intervallo di origine e delle istanze identificate dai tag di rete, anche se le istanze taggate non hanno IP negli intervalli di origine.
    • --source-service-accounts Utilizza questo flag per specificare le istanze in base agli account di servizio che utilizzano. Il filtro per account di servizio di origine è disponibile solo se la destinazione non è specificata dal tag di rete. Per saperne di più, consulta Filtro per account di servizio e tag di rete. --source-ranges e --source-service-accounts possono essere utilizzati insieme. Se vengono specificati entrambi, l'insieme di origini effettivo è l'unione degli indirizzi IP dell'intervallo di origine e delle istanze identificate dai service account di origine, anche se le istanze identificate dai service account di origine non hanno IP negli intervalli di origine.
  • Per la regola di uscita, per perfezionare ulteriormente l'origine, utilizza --source-ranges per specificare gli intervalli di indirizzi IPv4 o IPv6 in formato CIDR. Se --source-ranges viene omesso, l'origine in uscita è un indirizzo IPv4 qualsiasi, 0.0.0.0/0. Per maggiori informazioni, consulta Origini per le regole in uscita e Indirizzi IP e target per le regole in uscita.

  • Per una regola in uscita, specifica una destinazione:

    • --destination-ranges Utilizza questo flag per specificare intervalli di indirizzi IPv4 o IPv6 di destinazione in formato CIDR.
    • Se --destination-ranges viene omesso, la destinazione in uscita è qualsiasi indirizzo IPv4, 0.0.0.0/0.
  • --rules Un elenco di protocolli e porte di destinazione a cui si applica la regola. Utilizza all per rendere la regola applicabile a tutti i protocolli e a tutte le porte di destinazione. Richiede il flag --action.

  • Per impostazione predefinita, le regole firewall vengono create e applicate automaticamente; tuttavia, puoi modificare questo comportamento.

    • Se vengono omessi sia --disabled che --no-disabled, la regola firewall viene creata e applicata.
    • --disabled Aggiungi questo flag per creare la regola firewall, ma non applicarla. La regola firewall rimane disabilitata finché non la aggiorni per abilitarla.
    • --no-disabled Aggiungi questo flag per assicurarti che la regola firewall venga applicata.
  • --enable-logging | --no-enable-logging Puoi abilitare il logging delle regole firewall per una regola quando la crei o la aggiorni. Il logging delle regole firewall di VPC consente di controllare, verificare e analizzare gli effetti delle regole firewall. Per i dettagli, consulta Logging delle regole firewall VPC.

    • --logging-metadata Se abiliti la registrazione, per impostazione predefinita, il logging delle regole firewall include i campi di base e i metadati. Puoi omettere i campi dei metadati per risparmiare sui costi di archiviazione. Per saperne di più, consulta Utilizzo del logging delle regole firewall VPC.

Terraform

Per creare una regola firewall, puoi utilizzare una risorsa google_compute_firewall.

resource "google_compute_firewall" "rules" {
  name        = "my-firewall-rule"
  network     = "default"
  description = "Creates firewall rule targeting tagged instances"

  allow {
    protocol = "tcp"
    ports    = ["80", "443"]
  }

  source_ranges = ["0.0.0.0/0"]
  target_tags   = ["web"]
}

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

API

Crea una regola firewall VPC.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
{
  "name": "RULE_NAME",
  "network": "projects/PROJECT-ID/global/networks/NETWORK",
  ... other fields
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui si trova la rete VPC.
  • NETWORK: il nome della rete VPC in cui viene creata la regola firewall.
  • RULE_NAME: il nome della regola firewall.

  • Per una regola firewall in entrata, specifica l'origine e la destinazione del traffico in entrata:

    • Utilizza i campi sourceRanges, sourceTags o sourceServiceAccounts per specificare l'origine del traffico in entrata.

    • sourceRanges possono essere intervalli IPv4 o IPv6, ma non una combinazione di entrambi. Per utilizzare l'intervallo 0.0.0.0/0, non specificare alcun campo.

    • Non puoi utilizzare i campi sourceTags e sourceServiceAccounts insieme. Tuttavia, puoi utilizzare sourceRanges con sourceTags o sourceServiceAccounts. In questo caso, la connessione deve corrispondere a una o all'altra per l'applicazione della regola firewall.

    • Per i campi di destinazione, se utilizzi il campo sourceTags, non puoi utilizzare il campo targetServiceAccounts. Devi utilizzare il campo targetTags o nessun campo di destinazione. Allo stesso modo, se utilizzi il campo sourceServiceAccounts, non puoi utilizzare il campo targetTags. Se non specifichi un campo target, la regola si applica a tutti i target nella rete.

    • Utilizza il campo destinationRanges per specificare la destinazione in entrata. destinationRanges può essere un intervallo IPv4 o IPv6, ma non una combinazione di entrambi.
      Se non specifichi una destinazione, Google Cloud utilizza 0.0.0.0/0. Per saperne di più, consulta Destinazioni per le regole in entrata e Target e indirizzi IP per le regole in entrata.

  • Per una regola firewall in uscita, specifica l'origine e la destinazione in uscita:

    • Utilizza il campo sourceRanges per specificare l'origine in uscita. sourceRange possono essere intervalli IPv4 o IPv6, ma non una combinazione di entrambi.
      Se non specifichi un'origine, Google Cloud utilizza 0.0.0.0/0. Per saperne di più, consulta Origini per le regole in uscita e Target e indirizzi IP per le regole in uscita.

    • Utilizza il campo destinationRanges per specificare la destinazione. destinationRanges possono essere intervalli IPv4 o IPv6, ma non una combinazione di entrambi.
      Se non specifichi una destinazione, Google Cloud utilizza 0.0.0.0/0. Utilizza il campo targetTags o targetServiceAccounts per specificare a quali target si applica la regola. Se non specifichi un campo target, la regola si applica a tutti i target della rete.

Per ulteriori informazioni e descrizioni di ogni campo, consulta il metodo firewalls.insert.

C#


using Google.Cloud.Compute.V1;
using System.Threading.Tasks;

public class CreateFirewallRuleAsyncSample
{
    public async Task CreateFirewallRuleAsync(
        // TODO(developer): Set your own default values for these parameters or pass different values when calling this method.
        string projectId = "your-project-id",
        string firewallRuleName = "my-test-firewall-rule",
        // Name of the network the rule will be applied to. Some available name formats:
        // projects/{project_id}/global/networks/{network}
        // global/networks/{network}
        string networkName = "global/networks/default")
    {
        Firewall firewallRule = new Firewall
        {
            Name = firewallRuleName,
            Network = networkName,
            Direction = ComputeEnumConstants.Firewall.