Questa pagina mostra come applicare in modo selettivo i criteri firewall di rete di Cloud Next Generation Firewall in Google Kubernetes Engine (GKE) utilizzando i tag. I tag offrono un controllo più granulare per organizzare la gerarchia delle risorse rispetto alla Google Cloud gerarchia delle risorse predefinita. I tag consentono anche l'applicazione condizionale dei criteri.
Questa pagina è dedicata agli esperti di sicurezza che vogliono un controllo granulare sui criteri firewall in GKE. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Google Cloud , consulta Ruoli utente e attività comuni di GKE Enterprise.
Prima di leggere questa pagina, assicurati di avere familiarità con i seguenti concetti:
- Panoramica generale dei tag
- Come utilizzare i tag per altri scopi, ad esempio la gestione della fatturazione o le policy IAM condizionali.
Informazioni sui tag
I tag sono coppie chiave-valore che ti consentono di annotare e gestire le tue risorseGoogle Cloud a livello di organizzazione o progetto. Puoi utilizzare i tag per organizzare le risorse e applicare in modo condizionale criteri come firewall o criteri IAM. Puoi utilizzare controllo dell'accesso IAM per definire chi può collegare, creare, aggiornare o eliminare i tag.
Per saperne di più sui tag, consulta la panoramica dei tag nella documentazione di Resource Manager.
Utilizzare i tag per applicare le policy firewall di rete
Puoi utilizzare i tag per applicare in modo condizionale i criteri firewall di rete globali o regionali ai nodi GKE. Devi designare
lo scopo GCE_FIREWALL
per i tag che vuoi utilizzare con
i criteri firewall di rete. Quando applichi i tag di scopo del firewall
ai cluster o ai pool di nodi GKE, GKE li associa automaticamente
alle macchine virtuali (VM) Compute Engine corrispondenti.
I tag per i criteri firewall di rete sostituiscono la necessità di utilizzare i tag di rete, ovvero metadati che chiunque può collegare alle VM Compute Engine sottostanti per l'applicazione delle regole firewall di Virtual Private Cloud e che non supportano il controllo dell'accesso dell'accesso IAM. Se al momento utilizzi tag di rete con regole firewall VPC, ti consigliamo di eseguire la migrazione ai criteri firewall di rete e di utilizzare tag firewall sicuri. Per un confronto dettagliato, vedi Confrontare i tag di rete con i tag in questo documento.
Tag per il flusso di lavoro dei criteri firewall di rete
Per utilizzare i tag con i criteri firewall di rete in GKE, devi:
Creare un tag:
- Definisci una chiave tag a livello di organizzazione o progetto,
ad esempio
env
. - Definisci i valori dei tag possibili per la chiave, ad esempio
dev
,staging
eprod
. Specifica il tag per l'utilizzo del criterio firewall di rete.
- Definisci una chiave tag a livello di organizzazione o progetto,
ad esempio
Concedi agli utenti l'accesso per interagire con il tag firewall.
Applica le coppie chiave-valore dei tag a specifici cluster GKE o node pool. GKE associa automaticamente i tag alle VM Compute Engine sottostanti per l'applicazione delle policy firewall.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializzala. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo
gcloud components update
.
Requisiti e limitazioni
- I tag per i criteri firewall di rete sono supportati in GKE 1.28 e versioni successive. Se utilizzi una versione di GKE precedente alla 1.28, utilizza tag di rete con regole firewall VPC in alternativa.
- Il cluster GKE e il tag devono essere associati alla stessa rete VPC.
- Nei cluster Standard, ogni pool di nodi supporta fino a cinque tag firewall collegati.
- I cluster Autopilot supportano fino a cinque tag firewall.
- GKE rifiuta le chiavi tag che utilizzano il prefisso
gke-managed
. - Devi creare le coppie chiave-valore del tag prima di poterle collegare a cluster o pool di nodi.
Ruoli e autorizzazioni IAM
Per ottenere le autorizzazioni necessarie per utilizzare i tag per i criteri firewall in GKE, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Per concedere le autorizzazioni richieste per i tag agli utenti e agli agenti di servizio GKE:
-
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) sul tuo progetto -
Amministratore dell'organizzazione (
roles/resourcemanager.organizationAdmin
) sull'organizzazione
-
Project IAM Admin (
-
Per creare e amministrare i tag:
Tag Administrator (
roles/resourcemanager.tagAdmin
) sull'organizzazione o sul progetto -
Per collegare i tag alle risorse:
Tag User (
roles/resourcemanager.tagUser
) sul progetto
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Creare tag
Per poterli allegare a cluster o nodi, i tag devono esistere. Per creare un tag, consulta Utilizzare i tag per i firewall nella documentazione di Cloud NGFW.
Ad esempio, per creare un tag firewall con ambito di progetto, esegui questi comandi:
Crea la chiave tag:
gcloud resource-manager tags keys create TAG_KEY \ --parent=projects/PROJECT_ID \ --purpose=GCE_FIREWALL \ --purpose-data=network=PROJECT_ID/NETWORK_NAME
Sostituisci quanto segue:
TAG_KEY
: il nome della chiave del tag, ad esempioenv
PROJECT_ID
: il tuo ID progetto Google CloudNETWORK_NAME
: il nome della rete VPC che utilizzerai con il tag
Recupera l'ID della chiave del tag:
gcloud resource-manager tags keys describe PROJECT_ID/TAG_KEY \ --format="value(name)"
L'output è
tagKeys/KEY_ID
, doveKEY_ID
è un ID numerico per la chiave. Prendi nota di questo ID per utilizzarlo in seguito.Aggiungi un valore tag alla chiave tag:
gcloud resource-manager tags values create TAG_VALUE \ --parent=tagKeys/KEY_ID
Sostituisci
TAG_VALUE
con il nome di un valore consentito per quella chiave del tag, ad esempiodev
.
Utilizza la sintassi corretta dei tag nei comandi gcloud CLI
Quando fai riferimento ai tag utilizzando gcloud CLI, devi formattare le coppie chiave-valore utilizzando una delle seguenti sintassi:
Sintassi dei tag | |
---|---|
tagKeys/KEY_ID=tagValues/VALUE_ID |
Sostituisci quanto segue:
Ad esempio, |
ORGANIZATION_ID/TAG_KEY=TAG_VALUE |
Sostituisci quanto segue:
Ad esempio, |
PROJECT_ID/TAG_KEY=TAG_VALUE |
Sostituisci quanto segue:
Ad esempio, |
PROJECT_NUMBER/TAG_KEY=TAG_VALUE |
Sostituisci quanto segue:
Ad esempio, |
Tag di destinazione con criteri firewall
Dopo aver creato i tag, puoi fare riferimento a coppie chiave-valore specifiche nelle regole dei criteri firewall. Per le istruzioni, vedi Utilizzare i tag per i firewall.
Concedi autorizzazioni IAM agli agenti di servizio
Affinché GKE possa collegare automaticamente i tag ai nuovi nodi durante gli eventi di scalabilità verticale, devi concedere i ruoli IAM corrispondenti ai service account gestiti da Google, chiamati anche agenti di servizio. Google Cloud
Concedi il ruolo Utente tag (
roles/resourcemanager.tagUser
) all'agente di servizio Kubernetes Engine:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/resourcemanager.tagUser \ --condition=None
Sostituisci
PROJECT_NUMBER
con il numero di progetto del cluster. Google CloudPer trovare il numero di progetto, esegui questo comando:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
Concedi il ruolo Amministratore blocchi tag (
roles/resourcemanager.tagHoldAdmin
) all'agente di servizio Kubernetes Engine per la coppia chiave-valore del tag:gcloud resource-manager tags values add-iam-policy-binding PROJECT_ID/TAG_KEY/TAG_VALUE \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/resourcemanager.tagHoldAdmin
Questo ruolo consente all'agente di servizio di impedire l'eliminazione del tag se la coppia chiave-valore è ancora in uso in GKE.
Concedi il ruolo Utente tag (
roles/resourcemanager.tagUser
) all'agente di servizio API di Google:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER@cloudservices.gserviceaccount.com \ --role=roles/resourcemanager.tagUser \ --condition=None
Concedere ruoli IAM aggiuntivi per i tag al di fuori del progetto
Per utilizzare tag di proprietà di un'organizzazione o di un progetto diverso da quello del cluster, segui questi passaggi aggiuntivi:
Concedi il ruolo Utente tag (
roles/resourcemanager.tagUser
) all'agente di servizio Kubernetes Engine per i tag nella risorsa padre:gcloud resource-manager tags keys add-iam-policy-binding PARENT_RESOURCE/TAG_KEY \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/resourcemanager.tagUser \ --condition=None
Sostituisci quanto segue:
PARENT_RESOURCE
: l'ID progetto o l'ID organizzazione della risorsa proprietaria del tagPROJECT_NUMBER
: il numero di progetto del progetto cluster
Concedi il ruolo Utente tag (
roles/resourcemanager.tagUser
) all'agente di servizio API Google per i tag nella risorsa padre:gcloud resource-manager tags keys add-iam-policy-binding PARENT_RESOURCE/TAG_KEY \ --member=serviceAccount:PROJECT_NUMBER@cloudservices.gserviceaccount.com \ --role=roles/resourcemanager.tagUser \ --condition=None
Concedi il ruolo Amministratore tag di blocco (
roles/resourcemanager.tagHoldAdmin
) all'agente di servizio Kubernetes Engine per la coppia chiave-valore del tag:gcloud resource-manager tags values add-iam-policy-binding PARENT_RESOURCE/TAG_KEY/TAG_VALUE \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/resourcemanager.tagHoldAdmin
Collega i tag firewall ai cluster Autopilot
I tag firewall vengono collegati ai cluster Autopilot a livello di cluster. GKE applica automaticamente questi tag a livello di cluster a ogni nodo.
Allegare tag quando crei un nuovo cluster Autopilot
Esegui questo comando:
gcloud beta container clusters create-auto CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=TAG1,TAG2,...
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del nuovo cluster.LOCATION
: la regione Compute Engine del cluster.TAG1,TAG2,...
: un insieme di coppie chiave-valore separate da virgole da allegare. Ogni coppia chiave-valore deve utilizzare una sintassi supportata, come descritto nella sezione Sintassi dei tag nei comandi. Ad esempio,example-project/env=dev,1234567901/team=sre
.
Allegare tag ai cluster Autopilot esistenti
Esegui questo comando:
gcloud beta container clusters update CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=TAG1,TAG2,...
Quando aggiorni i tag di un cluster, GKE sovrascrive tutti i tag esistenti su tutti i nodi.
Collega tag firewall a cluster Standard e pool di nodi
Il metodo che utilizzi per collegare i tag dipende dal fatto che vuoi che gli altri pool di nodi nel cluster ereditino i tag, come segue:
Tag firewall del cluster standard | |
---|---|
--autoprovisioning-resource-manager-tags |
Impostazione a livello di cluster GKE applica i tag a tutti i node pool di cui è stato eseguito il provisioning automatico nuovi nel cluster. Se utilizzi questo flag in un cluster esistente, GKE non
applica i tag ai pool di nodi esistenti nel cluster. I pool di nodi
esistenti conservano tutti i tag già applicati prima dell'aggiornamento. Per aggiornare i tag dei pool di nodi esistenti, utilizza il flag |
--resource-manager-tags |
Impostazione a livello di node pool GKE applica i tag al pool di nodi specificato. Se utilizzi questo flag durante la creazione del cluster, GKE applica i tag al pool di nodi predefinito che GKE crea. Se utilizzi questo flag in un pool di nodi con provisioning automatico, GKE sovrascrive tutti i tag esistenti nel pool di nodi. |
Associa tag firewall ai cluster Standard
Puoi allegare tag a cluster standard nuovi o esistenti. Quando colleghi i tag a un intero cluster, GKE considera questi tag impostati a livello di cluster.
Collegare tag a un nuovo cluster standard con il provisioning automatico dei nodi
GKE utilizza i tag a livello di cluster per i nuovi nodi di cui è stato eseguito il provisioning automatico per impostazione predefinita. Il pool di nodi predefinito creato da GKE nel cluster non viene sottoposto a provisioning automatico e non riceve questi tag.
gcloud beta container clusters create CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=TAG1,TAG2,... \
--enable-autoprovisioning \
--max-cpu=MAX_CPU \
--max-memory=MAX_MEMORY
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del nuovo clusterLOCATION
: la regione o la zona di Compute Engine per il clusterTAG1,TAG2,...
: un insieme di coppie chiave-valore separate da virgole da allegare. Ogni coppia chiave-valore deve utilizzare una sintassi supportata, come descritto nella sezione Sintassi dei tag nei comandi. Ad esempio,example-project/env=dev,1234567901/team=sre
.MAX_CPU
: il numero massimo di core per il clusterMAX_MEMORY
: la capacità massima di memoria per il cluster in gigabyte
Allegare tag quando abiliti il provisioning automatico dei nodi su un cluster esistente
GKE applica questi tag solo ai nuovi node pool di cui è stato eseguito il provisioning automatico. I pool di nodi esistenti conservano i tag che avevano prima dell'aggiornamento.
Associa tag al cluster:
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --autoprovisioning-resource-manager-tags=TAG1,TAG2,...
Abilita il provisioning automatico dei nodi sul cluster:
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --enable-autoprovisioning \ --max-cpu=MAX_CPU \ --max-memory=MAX_MEMORY
Associa tag firewall ai node pool
Puoi collegare tag a node pool nuovi o esistenti, indipendentemente dal fatto che utilizzino il provisioning automatico dei nodi. GKE considera questi tag come un'impostazione a livello di node pool.
Collega i tag al pool di nodi predefinito
GKE associa i tag specificati utilizzando il flag
--resource-manager-tags
quando crei un cluster
al pool di nodi predefinito creato da GKE nel cluster.
gcloud beta container clusters create CLUSTER_NAME \
--location=LOCATION \
--resource-manager-tags=TAG1,TAG2,...
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del nuovo clusterLOCATION
: la regione o la zona di Compute Engine per il clusterTAG1,TAG2,...
: un insieme di coppie chiave-valore separate da virgole da allegare. Ogni coppia chiave-valore deve utilizzare una sintassi supportata, come descritto nella sezione Sintassi dei tag nei comandi. Ad esempio,example-project/env=dev,1234567901/team=sre
.
Allegare tag a un nuovo pool di nodi
Quando utilizzi il flag --resource-manager-tags
durante la creazione pool di nodi,
GKE associa i tag specificati alpool di nodil.
gcloud beta container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--resource-manager-tags=TAG1,TAG2,...
Sostituisci quanto segue:
NODE_POOL_NAME
: il nome del nuovo pool di nodiCLUSTER_NAME
: il nome del clusterLOCATION
: la regione o la zona di Compute Engine del clusterTAG1,TAG2,...
:un insieme di coppie chiave-valore separate da virgole da allegare. Ogni coppia chiave-valore deve utilizzare una sintassi supportata, come descritto nella sezione Sintassi dei tag nei comandi. Ad esempio,example-project/env=dev,1234567901/team=sre
.
Allegare tag a un pool di nodi esistente
Quando aggiorni i tag su un pool di nodi esistente utilizzando il flag
--resource-manager-tags
, GKE sovrascrive tutti i tag esistenti
su quel pool di nodi. Puoi utilizzare questo comando per aggiornare i tag sui node pool di cui è stato eseguito il provisioning automatico.
gcloud beta container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--resource-manager-tags=TAG1,TAG2,...
Sostituisci NODE_POOL_NAME
con il nome del pool di nodi da
aggiornare.
Attivare/disattivare le impostazioni di provisioning automatico nei cluster e nei pool di nodi esistenti
Quando aggiorni i tag a livello di cluster, GKE applica questi nuovi tag a tutti i nuovi node pool nel cluster e conserva i tag associati ai node pool esistenti.
Quando aggiorni i pool di nodi esistenti per abilitare o disabilitare il provisioning automatico dei nodi, considera le seguenti implicazioni per i tag:
- Quando abiliti o disabiliti il provisioning automatico dei nodi, il pool di nodi conserva i tag esistenti. GKE non sovrascrive questi tag con tag a livello di cluster, nemmeno durante la ricreazione dei nodi.
- Se aggiorni manualmente i tag su node pool specifici, GKE sovrascrive i tag esistenti con i tag specificati per quelpool di nodil.
Verifica i tag firewall sul cluster
Elenca i tag sui cluster Autopilot:
gcloud beta container clusters describe CLUSTER_NAME \ --location=LOCATION \ --format="value(nodePoolAutoConfig.resourceManagerTags)"
Elenca i tag su node pool specifici:
gcloud beta container node-pools describe NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --format="value(config.resourceManagerTags)"
Scollega i tag firewall da cluster e pool di nodi
Per rimuovere i tag firewall da cluster e node pool, aggiorna la risorsa con un valore vuoto per i tag.
Scollega i tag dai cluster Autopilot
Esegui questo comando:
gcloud beta container clusters update CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=
Scollega i tag dai node pool
Scollega i tag di provisioning automatico dei nodi a livello di cluster:
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --autoprovisioning-resource-manager-tags=
GKE non associa tag ai nuovi node pool di cui è stato eseguito il provisioning automatico.
Scollega i tag del pool di nodi:
gcloud beta container node-pools update NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --resource-manager-tags=
GKE rimuove i tag esistenti da questo pool di nodi.
Eliminare chiavi e valori dei tag
Per eliminare una chiave o un valore tag, assicurati che il tag sia scollegato da tutte le risorse. Poi, consulta Eliminazione dei tag nella documentazione di Resource Manager.
Confrontare i tag di rete con i tag
L'utilizzo dei tag per l'applicazione dei criteri firewall offre vantaggi significativi in termini di sicurezza e usabilità rispetto ai tag di rete. Analogamente, i criteri firewall di rete migliorano le funzionalità delle regole firewall VPC facilitando l'applicazione delle regole firewall in intere organizzazioni, cartelle, progetti o reti.
L'utilizzo dei tag con i criteri firewall di rete è un modo più sicuro e scalabile per gestire l'accesso agli ambienti GKE in tutta l'organizzazione. Puoi utilizzare i tag di rete nello stesso cluster dei tag, anche se non puoi utilizzarli per applicare i criteri firewall di rete.
Per un confronto dettagliato tra tag e tag di rete, vedi Confronto tra tag e tag di rete nella documentazione di Cloud NGFW.
Differenze funzionali nei node pool di cui è stato eseguito il provisioning automatico
Nei cluster Autopilot e nei node pool Standard che non utilizzano il provisioning automatico dei nodi, i tag di rete e i tag mostrano un comportamento simile. La seguente tabella mostra le differenze funzionali tra i tag di rete e i tag nei node pool di cui è stato eseguito il provisioning automatico nei cluster Standard:
Azione | Comportamento dei tag di rete | Comportamento dei tag |
---|---|---|
GKE esegue il provisioning automatico di un pool di nodi | GKE applica i tag di rete a livello di cluster | GKE applica i tag a livello di cluster |
Aggiorni i tag o i tag di rete su un pool di nodi di cui è stato eseguito il provisioning automatico |
|
GKE sovrascrive i tag esistenti per il pool di nodi indipendentemente dall'esistenza di tag a livello di cluster |
Aggiorni i tag o i tag di rete per l'intero cluster | GKE sovrascrive i tag di rete per i pool di nodi con provisioning automatico nuovi ed esistenti nel cluster. | GKE applica i nuovi tag a livello di cluster ai nuovi node pool di cui è stato eseguito il provisioning automatico. I node pool di cui è stato eseguito il provisioning automatico mantengono i tag che avevano prima dell'aggiornamento. |
Passaggi successivi
- Utilizzare i tag per il monitoraggio dell'utilizzo e l'applicazione dei criteri IAM
- Scopri di più sui tag per i firewall
- Scopri di più sui tag