Crea criteri di rete esterni all'organizzazione

Questa pagina fornisce istruzioni per configurare le policy di rete per il traffico esterno all'organizzazione in Google Distributed Cloud (GDC) air-gapped.

Il traffico esterno all'organizzazione si riferisce alla comunicazione tra servizi e carichi di lavoro di organizzazioni diverse ed endpoint esterni.

Prima di iniziare

Per configurare le policy di rete per il traffico esterno all'organizzazione, devi disporre di:

Creare una policy esterna all'organizzazione

Puoi definire policy di traffico in entrata o in uscita esterne all'organizzazione per gestire la comunicazione tra servizi e carichi di lavoro di organizzazioni diverse ed endpoint esterni.

Puoi creare policy di rete del progetto per il traffico esterno all'organizzazione a livello globale che si applicano al traffico in tutte le zone della tua organizzazione. Per saperne di più sulle risorse globali in un universo GDC, consulta Panoramica multi-zona.

La connessione di servizi e carichi di lavoro a una destinazione al di fuori del progetto in un'organizzazione diversa richiede l'approvazione esplicita. Devi disattivare la protezione dall'esfiltrazione di dati per consentire il traffico esterno all'organizzazione.

Creare una regola firewall in entrata globale per il traffico esterno all'organizzazione

Quando esponi i carichi di lavoro nel tuo progetto utilizzando un bilanciatore del carico esterno, devi anche creare una policy in entrata ProjectNetworkPolicy per consentire agli indirizzi IP dei client esterni di accedere ai carichi di lavoro.

Questa policy in entrata globale si applica a tutte le zone della tua organizzazione.

Segui questi passaggi per creare una nuova regola firewall e consentire il traffico in entrata dai carichi di lavoro in un progetto di un'organizzazione diversa:

Console

  1. Nella console GDC del progetto che stai configurando, vai a Networking > Firewall nel menu di navigazione per aprire la pagina Firewall.
  2. Fai clic su Crea nella barra delle azioni per iniziare a creare una nuova regola firewall.
  3. Nella pagina Dettagli regola firewall, inserisci le seguenti informazioni:

    1. Nel campo Nome, inserisci un nome valido per la regola firewall.
    2. Nella sezione Direzione del traffico, seleziona In entrata per consentire il traffico in entrata dai carichi di lavoro di altre organizzazioni.
    3. Nella sezione Target, seleziona una delle seguenti opzioni:
      • Tutti i carichi di lavoro utente: consente le connessioni ai carichi di lavoro del progetto che stai configurando.
      • Servizio: indica che questa regola firewall è destinata a un servizio specifico all'interno del progetto che stai configurando.
    4. Se il target è un servizio di progetto, seleziona il nome del servizio dall'elenco dei servizi disponibili nel menu a discesa Servizio.
    5. Nella sezione Da, seleziona Al di fuori dell'organizzazione e inserisci il blocco CIDR di un'altra organizzazione nel campo CIDR per consentire le connessioni dalla rete di questa organizzazione.
    6. Se il target sono tutti i carichi di lavoro utente, seleziona una delle seguenti opzioni nella sezione Protocolli e porte :
      • Consenti tutto: consente le connessioni utilizzando qualsiasi protocollo o porta.
      • Protocolli e porte specificati: consente le connessioni utilizzando solo i protocolli e le porte specificati nei campi corrispondenti per la regola firewall in entrata.
  4. Nella pagina Dettagli regola firewall, fai clic su Crea.

Ora hai consentito le connessioni dai carichi di lavoro del progetto di un'organizzazione diversa. Dopo aver creato la regola firewall, questa è visibile in una tabella nella pagina Firewall.

API

Configura e applica la tua policy in entrata ProjectNetworkPolicy personalizzata:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT
  name: allow-inbound-traffic-from-external
spec:
  policyType: Ingress
  subject:
    subjectType: UserWorkload
  ingress:
  - from:
    - ipBlock:
        cidr: CIDR
EOF

Sostituisci quanto segue:

  • GLOBAL_API_SERVER: il percorso kubeconfig del server API globale. Per saperne di più, consulta Server API globali e di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta Accedi per dettagli.
  • PROJECT: il nome del progetto GDC.
  • CIDR: il blocco CIDR di un'altra organizzazione.

Questa policy è obbligatoria perché il bilanciatore del carico esterno utilizza il ritorno diretto al server (DSR), che conserva l'indirizzo IP esterno di origine e bypassa il bilanciatore del carico nel percorso di ritorno.

Creare una regola firewall in uscita globale per il traffico esterno all'organizzazione

Per trasferire dati a servizi esterni all'organizzazione, devi prima disattivare la protezione dall'esfiltrazione di dati. Poi, devi configurare una regola firewall in uscita per consentire il traffico in uscita dai carichi di lavoro o dai servizi del progetto.

Questa sezione descrive la procedura per abilitare il traffico in uscita a livello di progetto. Per informazioni sulla gestione della connettività in uscita a livello di carico di lavoro, consulta Panoramica di NAT.

Questa regola firewall in uscita globale si applica a tutte le zone della tua organizzazione.

Segui questi passaggi per creare una nuova regola firewall e consentire il traffico in uscita dai carichi di lavoro o dai servizi del progetto ai carichi di lavoro di un'altra organizzazione:

Console

  1. Nella console GDC del progetto che stai configurando, vai a Networking > Firewall nel menu di navigazione per aprire la pagina Firewall.
  2. Fai clic su Crea nella barra delle azioni per iniziare a creare una nuova regola firewall.
  3. Nella pagina Dettagli regola firewall, inserisci le seguenti informazioni:

    1. Nel campo Nome, inserisci un nome valido per la regola firewall.
    2. Nella sezione Direzione del traffico, seleziona In uscita per indicare che questa regola firewall controlla il traffico in uscita.
    3. Nella sezione Target, seleziona una delle seguenti opzioni:
      • Tutti i carichi di lavoro utente: consente le connessioni dai carichi di lavoro del progetto che stai configurando.
      • Servizio: indica che questa regola firewall è destinata a un servizio specifico all'interno del progetto che stai configurando.
    4. Se il target è un servizio di progetto, seleziona il nome del servizio dall'elenco dei servizi disponibili nel menu a discesa Servizio.
    5. Nella sezione A, seleziona Al di fuori dell'organizzazione e inserisci il blocco CIDR di un'altra organizzazione nel campo CIDR per consentire le connessioni alla rete di questa organizzazione.
    6. Se il target sono tutti i carichi di lavoro utente, seleziona una delle seguenti opzioni nella sezione Protocolli e porte :
      • Consenti tutto: consente le connessioni utilizzando qualsiasi protocollo o porta.
      • Protocolli e porte specificati: consente le connessioni utilizzando solo i protocolli e le porte specificati nei campi corrispondenti per la regola firewall in uscita.
  4. Nella pagina Dettagli regola firewall, fai clic su Crea.

Ora hai consentito le connessioni a un'altra organizzazione. Dopo aver creato la regola firewall, questa è visibile in una tabella nella pagina Firewall.

API

Per abilitare il traffico in uscita verso servizi esterni all'organizzazione, personalizza la risorsa ProjectNetworkPolicy. Tuttavia, poiché la prevenzione dell'esfiltrazione di dati è abilitata per impostazione predefinita, la policy in uscita ProjectNetworkPolicy personalizzata mostra un errore di convalida nel campo dello stato e il piano dati la ignora. Questo comportamento è intenzionale.

Puoi trasferire i carichi di lavoro da un determinato progetto quando consenti l'esfiltrazione di dati per quel progetto. Il traffico in uscita che consenti è una Network Address Translation (NAT) di origine che utilizza un indirizzo IP noto allocato per il progetto.

Per abilitare la policy in uscita personalizzata:

  1. Configura e applica la tua policy in uscita ProjectNetworkPolicy personalizzata a tutti i carichi di lavoro utente in un progetto.

    Utilizza il seguente esempio:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT
      name: allow-outbound-traffic-to-external
    spec:
      subject:
        subjectType: UserWorkload
      egress:
      - to:
        - ipBlock:
            cidr: CIDR
    EOF
    

    La policy consente il traffico in uscita verso tutti gli host nel blocco CIDR, che si trovano al di fuori dell'organizzazione. Il primo tentativo deve causare un errore di stato previsto e necessario.

  2. Verifica di visualizzare un errore di convalida nello stato.

  3. Chiedi all'amministratore IAM dell'organizzazione di disattivare la prevenzione dell'esfiltrazione di dati. Questa azione abilita la configurazione, impedendo al contempo tutto il resto del traffico in uscita.

  4. Controlla la risorsa ProjectNetworkPolicy che hai creato e verifica che l'errore nel campo dello stato di convalida non sia più presente e che lo stato Ready sia True, a indicare che la policy è attiva:

    kubectl --kubeconfig GLOBAL_API_SERVER \
        get projectnetworkpolicy allow-outbound-traffic-to-external \
        -n PROJECT -o yaml
    

    Sostituisci quanto segue:

    • GLOBAL_API_SERVER: il percorso kubeconfig del server API globale. Per saperne di più, consulta Server API globali e di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta Accedi per dettagli.

    • PROJECT: il nome del progetto GDC.

Dopo aver applicato questa policy e a condizione che non siano state definite altre policy in uscita, tutto il resto del traffico in uscita viene negato per PROJECT.

Creare una policy esterna all'organizzazione per i cluster standard

I cluster standard sono cluster Kubernetes con ambito di progetto che offrono maggiore controllo, flessibilità e autorizzazioni di amministratore del cluster.

Creare una policy in entrata esterna all'organizzazione per i cluster standard

  1. Per creare una policy in entrata esterna all'organizzazione per i cluster standard, 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: STANDARD_CLUSTER_PROJECT
      name: allow-ingress-from-external-endpoint-to-standard-cluster-pod
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
        userWorkloadSelector:
          labelSelector:
            clusters:
              matchLabels:
                kubernetes.io/metadata.name: STANDARD_CLUSTER_NAME
            namespaces:
              matchLabels:
                kubernetes.io/metadata.name: SUBJECT_NAMESPACE
            workloads:
              matchLabels:
                SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      ingress:
      - from:
        - ipBlocks:
          - cidr: EXTERNAL_IP
        ports:
        - protocol: TCP
          port: PORT
    EOF
    

    Sostituisci quanto segue:

    • GLOBAL_API_SERVER: il percorso kubeconfig del server API globale. Per saperne di più, consulta Server API globali e di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta Accedi per i dettagli.
    • STANDARD_CLUSTER_PROJECT: il nome del progetto del cluster standard.
    • STANDARD_CLUSTER_NAME: il nome del cluster standard.
    • SUBJECT_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro del soggetto. Ad esempio, app, tier o role.
    • SUBJECT_LABEL_VALUE: il valore associato a SUBJECT_LABEL_KEY. Ad esempio, se SUBJECT_LABEL_KEY è app e SUBJECT_LABEL_VALUE è backend, i carichi di lavoro con l'etichetta app: backend ricevono il traffico.
    • EXTERNAL_IP: l'indirizzo IP dell'endpoint esterno.
    • PORT: la porta del carico di lavoro del soggetto in cui è consentito il traffico.

Creare una policy in uscita esterna all'organizzazione per i cluster standard

  1. Per creare una policy in uscita esterna all'organizzazione per i cluster standard, 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: STANDARD_CLUSTER_PROJECT
      name: allow-egress-from-standard-cluster-pod-to-external-endpoint
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        userWorkloadSelector:
          labelSelector:
            clusters:
              matchLabels:
                kubernetes.io/metadata.name: STANDARD_CLUSTER_NAME
            namespaces:
              matchLabels:
                kubernetes.io/metadata.name: SUBJECT_NAMESPACE
            workloads:
              matchLabels:
                SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      egress:
      - to:
        - ipBlocks:
          - cidr: EXTERNAL_IP
        ports:
        - protocol: TCP
          port: PORT
    EOF
    

    Sostituisci quanto segue:

    • GLOBAL_API_SERVER: il percorso kubeconfig del server API globale. Per saperne di più, consulta Server API globali e di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta Accedi per i dettagli.
    • STANDARD_CLUSTER_PROJECT: il nome del progetto del cluster standard.
    • STANDARD_CLUSTER_NAME: il nome del cluster standard.
    • SUBJECT_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro del soggetto. Ad esempio, app, tier o role.
    • SUBJECT_LABEL_VALUE: il valore associato a SUBJECT_LABEL_KEY. Ad esempio, se SUBJECT_LABEL_KEY è app e SUBJECT_LABEL_VALUE è backend, i carichi di lavoro con l'etichetta app: backend inviano il traffico.
    • EXTERNAL_IP: l'indirizzo IP dell'endpoint esterno.
    • PORT: la porta dell'endpoint esterno a cui è consentito il traffico.