GCP - VPC & Networking
GCP Compute Networking in a Nutshell
VPCs contengono regole di Firewall per consentire il traffico in entrata nella VPC. Le VPC contengono anche subnetworks dove le macchine virtuali saranno connesse. Confrontando con AWS, il Firewall sarebbe la cosa più simile ai Security Groups e NACLs di AWS, ma in questo caso sono definiti nella VPC e non in ogni istanza.
VPC, Subnetworks & Firewalls in GCP
Le Compute Instances sono connesse a subnetworks che fanno parte delle VPCs (Virtual Private Clouds). In GCP non ci sono security groups, ci sono VPC firewalls con regole definite a livello di rete ma applicate a ogni VM Instance.
Subnetworks
Una VPC può avere diverse subnetworks. Ogni subnetwork è in 1 regione.
Firewalls
Per impostazione predefinita, ogni rete ha due regole di firewall implicite: consentire il traffico in uscita e negare il traffico in entrata.
Quando viene creato un progetto GCP, viene creata anche una VPC chiamata default
, con le seguenti regole di firewall:
default-allow-internal: consente tutto il traffico da altre istanze sulla rete
default
default-allow-ssh: consente 22 da ovunque
default-allow-rdp: consente 3389 da ovunque
default-allow-icmp: consente ping da ovunque
Come puoi vedere, le regole di firewall tendono a essere più permissive per gli indirizzi IP interni. La VPC predefinita consente tutto il traffico tra le Compute Instances.
Altre regole di Firewall possono essere create per la VPC predefinita o per nuove VPC. Le regole di Firewall possono essere applicate alle istanze tramite i seguenti metodi:
Tutte le istanze all'interno di una VPC
Purtroppo, non esiste un semplice comando gcloud
per elencare tutte le Compute Instances con porte aperte su internet. Devi collegare i punti tra regole di firewall, network tags, service accounts e istanze.
Questo processo è stato automatizzato utilizzando questo script python che esporterà quanto segue:
File CSV che mostra istanza, IP pubblico, TCP consentito, UDP consentito
Scansione nmap per mirare tutte le istanze sulle porte con ingresso consentito da internet pubblico (0.0.0.0/0)
Scansione masscan per mirare l'intera gamma TCP di quelle istanze che consentono TUTTE le porte TCP da internet pubblico (0.0.0.0/0)
Hierarchical Firewall Policies
Le Hierarchical firewall policies ti permettono di creare e applicare una politica di firewall coerente in tutta la tua organizzazione. Puoi assegnare hierarchical firewall policies all'organizzazione nel suo complesso o a singole cartelle. Queste politiche contengono regole che possono esplicitamente negare o consentire connessioni.
Crei e applichi le politiche di firewall come passaggi separati. Puoi creare e applicare politiche di firewall ai nodi dell'organizzazione o delle cartelle della gerarchia delle risorse. Una regola di politica di firewall può bloccare connessioni, consentire connessioni o deferire la valutazione delle regole di firewall a cartelle di livello inferiore o regole di firewall VPC definite nelle reti VPC.
Per impostazione predefinita, tutte le regole di politica di firewall gerarchiche si applicano a tutte le VM in tutti i progetti sotto l'organizzazione o la cartella in cui è associata la politica. Tuttavia, puoi limitare quali VM ricevono una determinata regola specificando reti target o service accounts target.
Puoi leggere qui come creare una Hierarchical Firewall Policy.
Firewall Rules Evaluation
Org: Politiche di firewall assegnate all'Organizzazione
Folder: Politiche di firewall assegnate alla Cartella
VPC: Regole di firewall assegnate alla VPC
Global: Un altro tipo di regole di firewall che possono essere assegnate alle VPC
Regional: Regole di firewall associate alla rete VPC della NIC della VM e alla regione della VM.
VPC Network Peering
Permette di connettere due reti Virtual Private Cloud (VPC) in modo che le risorse in ciascuna rete possano comunicare tra loro. Le reti VPC peered possono essere nello stesso progetto, in progetti diversi della stessa organizzazione o in progetti diversi di organizzazioni diverse.
Questi sono i permessi necessari:
compute.networks.addPeering
compute.networks.updatePeering
compute.networks.removePeering
compute.networks.listPeeringRoutes
Maggiori informazioni nei documenti.
Riferimenti
Last updated