Questa pagina mostra come applicare selettivamente il firewall di rete Cloud Next Generation Firewall in Google Kubernetes Engine (GKE) utilizzando i tag. Per scoprire come Utilizzare i tag in GKE per altri scopi, come la fatturazione i criteri IAM condizionali o di gestione, consulta Gestire le risorse GKE utilizzando i tag.
Informazioni sui tag
I tag sono coppie chiave-valore che ti consentono di annotare e gestire a livello di organizzazione o di progetto. Puoi utilizzare la modalità per organizzare le risorse e applicarle in modo condizionale come firewall o criteri IAM. Puoi utilizzare la modalità Controllo dell'accesso IAM per definire chi può collegare, creare, aggiornare eliminare i tag.
Per ulteriori informazioni sui tag, consulta Panoramica dei tag in documentazione di Resource Manager.
Utilizzare i tag per applicare i criteri firewall di rete
Puoi utilizzare i tag per applicare condizioni globali o a livello di regione
i criteri firewall di rete ai nodi GKE. Devi specificare
lo scopo GCE_FIREWALL
per i tag che vuoi utilizzare
e i criteri firewall di rete. Quando applichi tag per lo scopo del firewall
ai cluster o ai pool di nodi GKE, GKE esegue automaticamente
collega questi tag alla Compute Engine virtuale
(VM).
I tag per i criteri firewall di rete sostituiscono la necessità di utilizzare tag di rete, ovvero metadati che chiunque può allegare ai file VM di Compute Engine per l'applicazione delle regole firewall Virtual Private Cloud e quali non supportano il controllo dell'accesso IAM. Se attualmente utilizzi la rete con regole firewall VPC, ti consigliamo di eseguire la migrazione i criteri firewall di rete e usare tag firewall sicuri. Per un confronto dettagliato, consulta Confronto tra i tag di rete e i tag in questo documento.
Tag per il flusso di lavoro dei criteri firewall di rete
Per usare i tag con criteri firewall di rete in GKE, esegui queste operazioni:
Crea un tag:
- Definisci una chiave tag a livello di organizzazione o progetto.
ad esempio
env
. - Definisci i possibili valori di tag per la chiave, come
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.
Applicare coppie chiave-valore dei tag a specifiche risorse GKE di cluster o pool di nodi. GKE collega automaticamente alle VM di Compute Engine sottostanti dell'applicazione forzata dei criteri firewall.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Attiva l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
install e poi
inizializzare
con gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente
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 un cluster GKE precedente alla 1.28, utilizza tag di rete con regole firewall VPC .
- Il cluster GKE e il tag devono essere associati alla stessa rete VPC.
- Nei cluster Standard, ogni pool di nodi supporta fino a cinque i tag firewall.
- 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 dei tag prima di poterle collegare a di 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 seguenti ruoli IAM:
-
Per concedere le autorizzazioni necessarie per i tag a utenti e agenti di servizio GKE:
-
Amministratore IAM progetto (
roles/resourcemanager.projectIamAdmin
) del tuo progetto -
Amministratore organizzazione (
roles/resourcemanager.organizationAdmin
) dell'organizzazione
-
Amministratore IAM progetto (
-
Per creare e amministrare i tag:
Amministratore tag (
roles/resourcemanager.tagAdmin
) nell'organizzazione o nel progetto -
Per collegare tag alle risorse:
Utente tag (
roles/resourcemanager.tagUser
) del progetto
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.
Crea tag
È necessario che esistano tag per collegarli a cluster o nodi. A creare un tag, consulta Utilizzare i tag per i firewall nella documentazione di Cloud NGFW.
Ad esempio, per creare un tag firewall con ambito a livello 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 tag, ad esempioenv
PROJECT_ID
: l'ID del tuo progetto Google CloudNETWORK_NAME
: il nome del VPC che utilizzerai con il tag
Recupera l'ID della chiave tag:
gcloud resource-manager tags keys describe PROJECT_ID/TAG_KEY \ --format="value(name)"
L'output è
tagKeys/KEY_ID
, doveKEY_ID
è un ID numerico della chiave. Scrivi una nota di questo ID per un secondo momento.Aggiungi un valore di 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 tag, ad esempiodev
.
Sintassi dei tag nei comandi della 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 istruzioni, vedi Utilizza i tag per i firewall.
Concedi autorizzazioni IAM agli agenti di servizio
Per consentire a GKE di collegare automaticamente i tag ai nuovi nodi durante gli eventi di scale up, devi concedere le risorse IAM corrispondenti agli account di servizio gestiti da Google Cloud, chiamati anche agenti di servizio.
Concedi 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 Google Cloud il numero di progetto del cluster. Per trovare il numero del progetto, esegui questo comando :gcloud projects describe PROJECT_ID --format="value(projectNumber)"
Concedi Ruolo di Amministratore archiviazioni a fini tag (
roles/resourcemanager.tagHoldAdmin
) al servizio Kubernetes Engine Agente 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 dei tag se la coppia chiave-valore è ancora in uso in GKE.
Concedi 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
Concedi ruoli IAM aggiuntivi per i tag esterni al progetto
Per utilizzare tag che appartengono a un'organizzazione o a un altro del progetto cluster, esegui questi passaggi aggiuntivi:
Concedi il ruolo Utente tag (
roles/resourcemanager.tagUser
) a Kubernetes Accesso all'agente di servizio del motore 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 del progetto del cluster progetto
Concedi il ruolo Utente tag (
roles/resourcemanager.tagUser
) alle API di Google Accesso all'agente di servizio 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 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 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
Colleghi i tag firewall ai cluster Autopilot a livello di cluster. GKE applica automaticamente queste impostazioni su ogni nodo.
Collega 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 di Compute Engine in un cluster Kubernetes.TAG1,TAG2,...
: un insieme di valori separati da virgole coppie chiave-valore da collegare. Ogni coppia chiave-valore deve utilizzare un valore come descritto in Sintassi dei tag nella sezione dei comandi. Ad esempio,example-project/env=dev,1234567901/team=sre
.
Collega tag a 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 su un cluster, GKE sovrascrive tutti i tag esistenti su tutti i nodi.
Collega tag firewall a cluster e pool di nodi standard
Il metodo che utilizzi per collegare i tag dipende dal fatto che tu vuoi che altri pool di nodi nel cluster ereditino i tag, che segue:
Tag firewall del cluster standard | |
---|---|
--autoprovisioning-resource-manager-tags |
Impostazione a livello di cluster GKE applica i tag a tutti i nuovi pool di nodi di cui è stato eseguito il provisioning automatico nel cluster. Se usi questo flag cluster esistente, i pool di nodi esistenti conservano tutti i tag sono state applicate prima dell'aggiornamento. |
--resource-manager-tags |
Impostazione a livello di pool di nodi GKE applica i tag pool di nodi. Se usi questo flag durante la creazione del cluster, e applica i tag al pool di nodi predefinito le risorse create da GKE. Se utilizzi questo flag su una risorsa di cui è stato eseguito il provisioning automatico pool di nodi, GKE sovrascrive tutti i tag esistenti sul pool di nodi. |
Collega tag firewall a cluster standard
Puoi collegare i tag a cluster standard nuovi o esistenti. Quando di collegare tag a un intero cluster, GKE li considera essere impostata a livello di cluster.
Collega i tag a un nuovo cluster Standard con provisioning automatico dei nodi
GKE utilizza i tag a livello di cluster per i nuovi nodi di cui è stato eseguito il provisioning automatico predefinito. Il pool di nodi predefinito creato da GKE nel cluster non esegue automaticamente il provisioning 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 valori separati da virgole coppie chiave-valore da collegare. Ogni coppia chiave-valore deve utilizzare un valore come descritto in Sintassi dei tag nella sezione dei 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 cluster in gigabyte
Collega i tag quando abiliti il provisioning automatico dei nodi in un cluster esistente
GKE applica questi tag solo ai nuovi pool di nodi. I pool di nodi esistenti conservano tutti i tag che avevano prima dell'aggiornamento.
Collega i tag al cluster:
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --autoprovisioning-resource-manager-tags=TAG1,TAG2,...
Abilita il provisioning automatico dei nodi nel cluster:
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --enable-autoprovisioning \ --max-cpu=MAX_CPU \ --max-memory=MAX_MEMORY
Collega tag firewall ai pool di nodi
Puoi collegare i tag a pool di nodi nuovi o esistenti, indipendentemente dal fatto che utilizzino o meno il provisioning automatico dei nodi. GKE considera questi tag come un l'impostazione node pool-level.
Collega i tag al pool di nodi predefinito
GKE collega i tag specificati utilizzando
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 valori separati da virgole coppie chiave-valore da collegare. Ogni coppia chiave-valore deve utilizzare un valore come descritto in Sintassi dei tag nella sezione dei comandi. Ad esempio,example-project/env=dev,1234567901/team=sre
.
Collega tag a un nuovo pool di nodi
Quando utilizzi il flag --resource-manager-tags
durante la creazione del pool di nodi,
GKE collega i tag specificati a quel pool di nodi.
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 il clusterTAG1,TAG2,...
:un insieme di valori separati da virgole coppie chiave-valore da collegare. Ogni coppia chiave-valore deve utilizzare un valore come descritto in Sintassi dei tag nella sezione dei comandi. Ad esempio,example-project/env=dev,1234567901/team=sre
.
Collega tag a un pool di nodi esistente
Quando aggiorni i tag su un pool di nodi esistente utilizzando
--resource-manager-tags
, GKE sovrascrive eventuali tag esistenti
su quel pool di nodi. Puoi usare questo comando per aggiornare i tag
pool di nodi 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 in
aggiornamento.
Attiva/disattiva le impostazioni di provisioning automatico nei cluster e nei pool di nodi esistenti
Quando aggiorni i tag a livello di cluster, GKE li applica nuovi tag in tutti i nuovi pool di nodi nel cluster e conservano i tag che erano collegati a pool di nodi esistenti.
Quando aggiorni i pool di nodi esistenti per abilitare o disabilitare i nodi il provisioning automatico, considera le seguenti implicazioni per i tag:
- Quando abiliti o disabiliti il provisioning automatico dei nodi, il pool di nodi conserva eventuali tag esistenti. GKE non sovrascrive questi tag con a livello di cluster, anche durante la ricreazione del nodo.
- Se aggiorni manualmente i tag su pool di nodi specifici, sovrascrive i tag esistenti con i tag specificati per quel pool di nodi.
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 pool di nodi 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 dai cluster e dai pool di nodi, aggiorna la risorsa con un campo 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 tag dai pool di nodi
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 collegherà tag ai nuovi pool di nodi 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 dal pool di nodi.
Elimina chiavi e valori dei tag
Per eliminare una chiave o un valore di tag, assicurati che il tag sia scollegato da tutte le risorse. Quindi, vedi Eliminare i tag nella documentazione di Resource Manager.
Confrontare i tag di rete con i tag
L'utilizzo dei tag per l'applicazione dei criteri firewall ha vantaggi in termini di sicurezza e usabilità rispetto ai tag di rete. Analogamente, le reti I criteri firewall migliorano le capacità del firewall VPC facilitando l'applicazione delle regole firewall in intere organizzazioni, cartelle, progetti o reti.
L'utilizzo di tag con criteri firewall di rete è un modo un modo scalabile per gestire l'accesso ai tuoi ambienti GKE dell'organizzazione. Puoi usare i tag di rete nello stesso cluster I tag, anche se non puoi utilizzarli per applicare e i criteri firewall di rete.
Per un confronto dettagliato tra tag e tag di rete, consulta Confronto tra tag e tag di rete nella documentazione di Cloud NGFW.
Differenze funzionali nei pool di nodi di cui è stato eseguito il provisioning automatico
Nei cluster Autopilot e nei pool di nodi Standard che utilizza il provisioning automatico dei nodi, i tag di rete e l'esposizione dei tag un comportamento simile. La tabella seguente mostra le differenze funzionali tra e tag di rete nei pool di nodi di cui è stato eseguito il provisioning automatico in 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 a prescindere dall'esistenza di tag a livello di cluster |
Aggiorna i tag o i tag di rete per l'intero cluster | GKE sovrascrive i tag di rete pool di nodi nuovi ed esistenti di cui è stato eseguito il provisioning automatico nel cluster. | GKE applica i nuovi tag a livello di cluster pool di nodi di cui è stato eseguito il provisioning automatico. I pool di nodi di cui è stato eseguito il provisioning automatico esistenti conservano 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