Questa pagina fornisce istruzioni per configurare i criteri di rete per il traffico intraprogetto in Google Distributed Cloud (GDC) con air gap.
I criteri di rete del progetto definiscono regole in entrata o in uscita. Puoi definire criteri che consentono la comunicazione all'interno dei progetti, tra progetti e con indirizzi IP esterni.
Per impostazione predefinita, queste norme si applicano a livello globale in tutte le zone. Per saperne di più sulle risorse globali in un universo GDC, consulta la panoramica multizona.
Se è necessaria l'applicazione del traffico intra-progetto all'interno di una singola zona, consulta Creare una policy intra-progetto a livello di workload per una singola zona.
Prima di iniziare
Per configurare i criteri di rete per il traffico intra-progetto, devi disporre di quanto segue:
- I ruoli di identità e accesso necessari. Per gestire le policy per un progetto specifico, devi disporre del ruolo
project-networkpolicy-admin
. Per gli ambienti multizona in cui devi gestire criteri che si estendono a tutte le zone, devi disporre del ruologlobal-project-networkpolicy-admin
. Per saperne di più, consulta Preparare ruoli e accesso predefiniti. - Un progetto esistente. Per saperne di più, consulta Creare un progetto.
Crea una policy intra-progetto
Per il traffico all'interno di un progetto, GDC applica una policy di rete del progetto predefinita, la policy intra-progetto, a ogni progetto per impostazione predefinita. Per impostazione predefinita, i workload in uno spazio dei nomi del progetto possono comunicare tra loro senza esporre nulla a risorse esterne.
Per impostazione predefinita, non esiste alcun criterio di uscita, pertanto il traffico in uscita è consentito per tutto il traffico all'interno del progetto. Tuttavia, quando imposti un'unica policy di uscita, viene consentito solo il traffico specificato dalla policy.
Crea una policy in entrata intraprogetto
Quando crei un progetto, crei implicitamente una risorsa di base
ProjectNetworkPolicy
predefinita che consente la comunicazione all'interno del progetto. Questa policy
consente il traffico in entrata da altri workload nello stesso progetto.
Puoi rimuovere il criterio predefinito, ma tieni presente che questa rimozione comporta il rifiuto della comunicazione intraprogetto per
tutti i servizi e i workload all'interno del progetto. Per rimuovere la policy, utilizza il comando kubectl delete
:
kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
Puoi aggiungere di nuovo le norme predefinite applicando il seguente manifest:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT
name: base-policy-allow-intra-project-traffic
spec:
policyType: Ingress
ingress:
- from:
- projectSelector:
projects:
matchNames:
- PROJECT
EOF
Sostituisci quanto segue:
GLOBAL_API_SERVER
: il percorso kubeconfig del server API globale. Per saperne di più, vedi Server API globali e di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.PROJECT
: il nome del progetto.
Crea un criterio in uscita intraprogetto
Quando disattivi la prevenzione esfiltrazione di dati
e applichi al progetto una policy di uscita ProjectNetworkPolicy
, ad esempio
impedendo l'accesso a una risorsa esterna, utilizza la seguente policy obbligatoria per consentire
il traffico in uscita intraprogetto:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT
name: allow-intra-project-outbound-traffic
spec:
policyType: Egress
egress:
- to:
- projectSelector:
projects:
matchNames:
- PROJECT
EOF
Sostituisci quanto segue:
GLOBAL_API_SERVER
: il percorso kubeconfig del server API globale. Per saperne di più, vedi Server API globali e di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.PROJECT
: il nome del progetto.
Crea un criterio intra-progetto a livello di workload
I criteri di rete a livello di workload offrono un controllo granulare sulla comunicazione tra i singoli workload all'interno di un progetto. Questa granularità consente un controllo più rigoroso dell'accesso alla rete, migliorando la sicurezza e l'utilizzo delle risorse.
Crea un criterio intraprogetto a livello di carico di lavoro in entrata
Quando crei un progetto, crei implicitamente una risorsa di base ProjectNetworkPolicy
predefinita che consente la comunicazione intra-progetto tra tutti i carichi di lavoro. Questa policy
consente il traffico in entrata da altri workload nello stesso progetto.
Per creare una policy intraprogetto a livello di workload in entrata, devi prima eliminare la policy di base predefinita. In caso contrario, potrebbero verificarsi comportamenti imprevisti.
Per eliminare la policy di base predefinita, esegui questo comando:
kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
Per creare una policy intra-progetto a livello di workload in entrata, crea e applica la seguente risorsa personalizzata:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: PROJECT name: allow-intra-project-inbound-traffic-from-target-to-subject spec: policyType: Ingress subject: subjectType: UserWorkload workloadSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE ingress: - from: - projectSelector: projects: matchNames: - PROJECT workloads: matchLabels: TARGET_LABEL_KEY: TARGET_LABEL_VALUE EOF
Sostituisci quanto segue:
GLOBAL_API_SERVER
: il percorso kubeconfig del server API globale. Per saperne di più, vedi Server API globali e di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.PROJECT
: il nome del progetto.SUBJECT_LABEL_KEY
: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro di origine. Ad esempio,app
,tier
orole
.SUBJECT_LABEL_VALUE
: il valore associato aSUBJECT_LABEL_KEY
. Specifica quali carichi di lavoro sono l'origine del traffico consentito. Ad esempio, seSUBJECT_LABEL_KEY
èapp
eSUBJECT_LABEL_VALUE
èbackend
, i carichi di lavoro con l'etichettaapp: backend
sono la sorgente di traffico.TARGET_LABEL_KEY
: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro di destinazione.TARGET_LABEL_VALUE
: il valore associato aTARGET_LABEL_KEY
. Specifica quali carichi di lavoro sono la destinazione del traffico consentito.
Crea una policy intraprogetto a livello di carico di lavoro in uscita
Per creare una policy intra-progetto a livello di workload in uscita, crea e applica la seguente risorsa personalizzata:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: PROJECT name: allow-intra-project-outbound-traffic-to-subject-from-target spec: policyType: Egress subject: subjectType: UserWorkload workloadSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE egress: - to: - projectSelector: projects: matchNames: - PROJECT workloads: matchLabels: TARGET_LABEL_KEY: TARGET_LABEL_VALUE EOF
Sostituisci quanto segue:
GLOBAL_API_SERVER
: il percorso kubeconfig del server API globale. Per saperne di più, vedi Server API globali e di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.PROJECT
: il nome del progetto.SUBJECT_LABEL_KEY
: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro di origine. Ad esempio,app
,tier
orole
.SUBJECT_LABEL_VALUE
: il valore associato aSUBJECT_LABEL_KEY
. Specifica quali carichi di lavoro sono l'origine del traffico consentito. Ad esempio, seSUBJECT_LABEL_KEY
èapp
eSUBJECT_LABEL_VALUE
èbackend
, i carichi di lavoro con l'etichettaapp: backend
sono la sorgente di traffico.TARGET_LABEL_KEY
: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro di destinazione.TARGET_LABEL_VALUE
: il valore associato aTARGET_LABEL_KEY
. Specifica quali carichi di lavoro sono la destinazione del traffico consentito.
Crea un criterio intraprogetto a livello di workload per una singola zona
I criteri di rete a livello di workload possono applicare PNP lungo una singola zona. È possibile aggiungere etichette specifiche ai carichi di lavoro all'interno di una singola zona, consentendoti di controllare la comunicazione tra singoli carichi di lavoro all'interno di un progetto o in progetti diversi per quella zona.
Crea un criterio intraprogetto a livello di workload in entrata per una singola zona
Quando crei un progetto, crei implicitamente una risorsa di base ProjectNetworkPolicy
predefinita che consente la comunicazione intra-progetto tra tutti i carichi di lavoro. Questa policy
consente il traffico in entrata da altri workload nello stesso progetto.
Per creare una policy intra-progetto a livello di workload in entrata a zona singola, devi prima eliminare la policy di base predefinita. In caso contrario, potrebbero verificarsi comportamenti imprevisti.
Per eliminare la policy di base predefinita, esegui questo comando:
kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
Per creare un criterio di rete per il traffico intraprogetto a livello di workload Ingress a zona singola, crea e applica la seguente risorsa personalizzata:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: PROJECT name: allow-single-zone-intra-project-inbound-traffic-from-target-to-subject spec: policyType: Ingress subject: subjectType: UserWorkload workloadSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE ingress: - from: - projectSelector: projects: matchNames: - PROJECT workloads: matchLabels: TARGET_LABEL_KEY: TARGET_LABEL_VALUE ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE EOF
Sostituisci quanto segue:
GLOBAL_API_SERVER
: il percorso kubeconfig del server API globale. Per saperne di più, vedi Server API globali e di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.PROJECT
: il nome del progetto.SUBJECT_LABEL_KEY
: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro di origine. Ad esempio,app
,tier
orole
.SUBJECT_LABEL_VALUE
: il valore associato aSUBJECT_LABEL_KEY
. Specifica quali carichi di lavoro sono l'origine del traffico consentito. Ad esempio, seSUBJECT_LABEL_KEY
èapp
eSUBJECT_LABEL_VALUE
èbackend
, i carichi di lavoro con l'etichettaapp: backend
sono la sorgente di traffico.TARGET_LABEL_KEY
: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro di destinazione.TARGET_LABEL_VALUE
: il valore associato aTARGET_LABEL_KEY
. Specifica quali carichi di lavoro sono la destinazione del traffico consentito.ZONE_SUBJECT_LABEL_KEY
: la chiave dell'etichetta utilizzata per selezionare la zona di origine. Ad esempio,zone
oregion
.ZONE_SUBJECT_LABEL_VALUE
: il valore associato aZONE_SUBJECT_LABEL_KEY
. Specifica la zona di origine del traffico consentito. Ad esempio, seZONE_SUBJECT_LABEL_KEY
èzone
eZONE_SUBJECT_LABEL_VALUE
èus-central1-a
, i carichi di lavoro con l'etichettazone: us-central1-a
sono la sorgente di traffico.ZONE_TARGET_LABEL_KEY
: la chiave dell'etichetta utilizzata per selezionare la zona di destinazione.ZONE_TARGET_LABEL_VALUE
: il valore associato aZONE_TARGET_LABEL_KEY
. Specifica la zona di destinazione del traffico consentito.
Crea un criterio intraprogetto a livello di workload in uscita per una singola zona
Per creare una policy intraprogetto a livello di workload in uscita per una singola zona, crea e applica la seguente risorsa personalizzata:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: PROJECT name: allow-single-zone-intra-project-outbound-traffic-to-subject-from-target spec: policyType: Egress subject: subjectType: UserWorkload workloadSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE egress: - to: - projectSelector: projects: matchNames: - PROJECT workloads: matchLabels: TARGET_LABEL_KEY: TARGET_LABEL_VALUE ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE EOF
Sostituisci quanto segue:
GLOBAL_API_SERVER
: il percorso kubeconfig del server API globale. Per saperne di più, vedi Server API globali e di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.PROJECT
: il nome del progetto.SUBJECT_LABEL_KEY
: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro di origine. Ad esempio,app
,tier
orole
.SUBJECT_LABEL_VALUE
: il valore associato aSUBJECT_LABEL_KEY
. Specifica quali carichi di lavoro sono l'origine del traffico consentito. Ad esempio, seSUBJECT_LABEL_KEY
èapp
eSUBJECT_LABEL_VALUE
èbackend
, i carichi di lavoro con l'etichettaapp: backend
sono la sorgente di traffico.TARGET_LABEL_KEY
: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro di destinazione.TARGET_LABEL_VALUE
: il valore associato aTARGET_LABEL_KEY
. Specifica quali carichi di lavoro sono la destinazione del traffico consentito.ZONE_SUBJECT_LABEL_KEY
: la chiave dell'etichetta utilizzata per selezionare la zona di origine. Ad esempio,zone
oregion
.ZONE_SUBJECT_LABEL_VALUE
: il valore associato aZONE_SUBJECT_LABEL_KEY
. Specifica la zona di origine del traffico consentito. Ad esempio, seZONE_SUBJECT_LABEL_KEY
èzone
eZONE_SUBJECT_LABEL_VALUE
èus-central1-a
, i carichi di lavoro con l'etichettazone: us-central1-a
sono la sorgente di traffico.ZONE_TARGET_LABEL_KEY
: la chiave dell'etichetta utilizzata per selezionare la zona di destinazione.ZONE_TARGET_LABEL_VALUE
: il valore associato aZONE_TARGET_LABEL_KEY
. Specifica la zona di destinazione del traffico consentito.