Accedi alle risorse esterne in una rete privata utilizzando un IP esterno statico

Questa pagina spiega come configurare i pool privati per accedere alle risorse esterne tramite un IP esterno statico.


Per seguire le indicazioni dettagliate per questa attività direttamente nella console Google Cloud, fai clic su Aiuto:

Guidami


Prima di iniziare

  • Abilita le API Cloud Build, Compute Engine, and Service Networking.

    Abilita le API

  • Per ottenere le autorizzazioni necessarie per configurare una connessione privata, chiedi all'amministratore di concederti il ruolo IAM Amministratore rete Compute Engine (roles/compute.networkAdmin) per il progetto Cloud in cui si trova la rete VPC. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

  • Per utilizzare i comandi gcloud in questa pagina, installa Google Cloud CLI.

Crea una rete VPC

Console

Per creare una rete VPC utilizzando la console Google Cloud, completa i seguenti passaggi:

  1. Apri la pagina Reti VPC nella console Google Cloud.

    Vai a Reti VPC

  2. Fai clic su Crea rete VPC per creare una nuova rete.

    Verrà visualizzata la pagina Crea una rete VPC.

  3. Inserisci un nome per la rete.

  4. In Modalità creazione subnet, seleziona Automatica.

  5. Per personalizzare ulteriormente altri campi, consulta Creare e gestire le reti VPC. In caso contrario, lascia tutti i campi invariati.

  6. Fai clic su Crea per creare la tua rete VPC.

    Dopo aver fatto clic su Crea, vedrai la nuova rete VPC nella pagina Reti VPC.

gcloud

Per creare una rete VPC utilizzando lo strumento a riga di comando gcloud, inserisci questo comando nel terminale, dove NETWORK_NAME è il nome della rete VPC:

gcloud compute networks create NETWORK_NAME \
  --subnet-mode=auto

Dopo aver fatto clic su Crea, vedrai la nuova rete VPC nella pagina Reti VPC.

Per saperne di più sulla creazione e sulla gestione delle reti VPC, consulta Creazione e gestione delle reti VPC.

Crea una connessione privata

Console

Per creare una connessione privata tra la tua rete VPC e la rete del producer di servizi, completa questi passaggi:

  1. Apri la pagina Reti VPC nella console Google Cloud.

    Vai a Reti VPC

  2. Fai clic sul nome della tua rete.

    Verrà visualizzata la pagina Dettagli rete VPC.

  3. Fai clic sulla scheda Private Service Connection (Connessione privata ai servizi).

    1. Seleziona la scheda Intervalli IP allocati per i servizi.

    2. Fai clic su Assegna intervallo IP.

      Verrà visualizzata la finestra popup Assegna un intervallo IP interno.

      1. Inserisci un nome per l'intervallo IP.

      2. In Intervallo IP, seleziona Automatico.

      3. Nel campo Lunghezza prefisso, inserisci la lunghezza del prefisso per la tua rete.

      4. Fai clic su Assegna per allocare l'intervallo IP.

    3. Seleziona la scheda Private Connections to Services (Connessioni private ai servizi).

    4. Fai clic su Crea connessione.

      Vedrai il popup Crea una connessione privata.

      1. In Assegnazione assegnata, seleziona il tuo intervallo IP.

      2. Fai clic su Connetti.

      Ora la tua connessione viene visualizzata nella tabella della scheda Connessioni private ai servizi.

      Fai clic su Abilita (esporta route personalizzata) per assicurarti che le route per VPC vengano applicate alla rete su cui sono in esecuzione le istanze del pool privato.

La rete è stata configurata.

gcloud

Per creare una connessione privata tra la tua rete VPC e la rete del producer di servizi, completa questi passaggi:

  1. Inserisci il seguente comando nel terminale per allocare un intervallo IP per il tuo servizio:

        gcloud compute addresses create RESERVED_RANGE_NAME \
          --global \
          --prefix-length=PREFIX_LENGTH \
          --network=VPC_NETWORK \
          --project=PROJECT_ID
    

    Dove:

    • RESERVED_RANGE_NAME è il nome dell'intervallo allocato. Ad esempio, my-allocated-range.
    • PREFIX_LENGTH è la lunghezza del prefisso della tua rete. La lunghezza del prefisso deve essere /24 o inferiore, ad esempio /22, /21 e così via.
    • VPC_NETWORK è il nome della tua rete VPC, ad esempio my-vpc-network.
    • PROJECT_ID è l'ID del progetto che contiene la rete VPC.
  2. Per creare una connessione privata, inserisci il seguente comando nel terminale:

        gcloud services vpc-peerings connect \
          --service=servicenetworking.googleapis.com \
          --ranges=RESERVED_RANGE_NAME \
          --network=VPC_NETWORK \
          --project=PROJECT_ID
    

    Dove:

    • RESERVED_RANGE_NAME è il nome dell'intervallo allocato che hai creato nel passaggio precedente.
    • VPC_NETWORK è il nome della tua rete VPC, ad esempio my-vpc-network.
    • PROJECT_ID è l'ID del progetto che contiene la rete VPC.
  3. Inserisci il seguente comando nel terminale per assicurarti che le route per il VPC vengano applicate alla rete su cui sono in esecuzione le tue istanze del pool privato:

        gcloud compute networks peerings update servicenetworking-googleapis-com \
          --export-custom-routes \
          --network=VPC_NETWORK \
          --project=PROJECT_ID
    

    Dove:

    • VPC_NETWORK è il nome della tua rete VPC, ad esempio my-vpc-network.
    • PROJECT_ID è l'ID del progetto che contiene la rete VPC.

La rete è stata configurata.

Per saperne di più sulla configurazione di una rete, consulta Configurazione di una connessione privata tra la tua rete VPC e la rete del producer di servizi.

Crea un pool privato

Console

Per creare un pool privato utilizzando la console Google Cloud, segui questi passaggi:

  1. Apri la pagina Pool di worker nella console Google Cloud:

    Apri la pagina del pool di worker di Cloud Build

  2. Seleziona il progetto in cui vuoi creare il pool privato.

  3. Nella pagina Pool di worker, fai clic su Crea.

    Vedrai il riquadro Crea pool privato.

  4. Nel riquadro laterale Crea pool privato, inserisci le seguenti informazioni:

    1. Inserisci un nome per il pool privato.

    2. Seleziona una Regione dal menu a discesa.

    3. In Rete, inserisci le seguenti informazioni:

    • Progetto: inserisci l'ID o il numero del progetto.
    • Rete: inserisci il nome della tua rete VPC.
    1. (Facoltativo) Deseleziona la casella per Assegna IP esterni per la configurazione di rete più limitata.

Ora hai creato un pool privato.

gcloud

Per creare un pool privato utilizzando lo strumento a riga di comando gcloud, inserisci il seguente comando nel terminale:

      gcloud builds worker-pools create PRIVATEPOOL_ID \
        --project=PRIVATEPOOL_PROJECT_ID \
        --region=REGION \
        --peered-network=PEERED_NETWORK \
        --no-public-egress

Dove:

  • PRIVATEPOOL_ID è l'identificatore univoco del pool privato.
  • PRIVATEPOOL_PROJECT_ID è l'ID del progetto Google Cloud in cui vuoi creare il pool privato.
  • REGION è una delle regioni supportate.
  • PEERED_NETWORK è l'URL della risorsa di rete
  • --no-public-egress: se questo flag è impostato, il pool privato viene creato senza un indirizzo IP esterno.

Ora hai creato un pool privato.

Per scoprire di più su come creare e gestire i pool privati, vedi Creazione e gestione dei pool privati.

Accedi a risorse esterne in una rete privata

Per impostazione predefinita, gli indirizzi IP esterni associati ai pool privati di Cloud Build non sono statici o configurabili. che vengono assegnate da Google Cloud. Se vuoi configurare i pool privati per l'accesso alle risorse esterne dalla tua rete privata con un IP esterno statico, devi configurare una macchina virtuale (VM) nel tuo progetto che agisca da gateway NAT autogestito per le richieste proxy sulla rete internet pubblica. A questo punto, devi configurare route personalizzate per inoltrare queste richieste alla tua VM e garantire che le route vengano scambiate con il progetto di networking di servizi.

Questa sezione descrive come configurare i pool privati per accedere alle risorse esterne tramite un IP esterno statico completando i seguenti passaggi:

  1. Crea uno script di avvio per configurare la VM in modo che esegua il proxy del traffico instradato alla VM e mascheralo come proveniente dal suo indirizzo IP:

    #! /bin/bash
    set -e
    
    sysctl -w net.ipv4.ip_forward=1
    IFACE=$(ip -brief link | tail -1 | awk  {'print $1'})
    iptables -t nat -A POSTROUTING -o "$IFACE" -j MASQUERADE
    
  2. Configura una VM nello stesso VPC del pool privato con una regola per consentire l'invio tramite proxy delle richieste tramite il VPC:

    gcloud compute instances create VM_NAME \
      --image-project=ubuntu-os-cloud --image-family=ubuntu-2204-lts \
      --network=NETWORK_NAME \
      --private-network-ip=INTERNAL_IP --can-ip-forward \
      --zone=ZONE \
      --subnet=SUBNETWORK \
      --tags=NAT_TAG  \
      --metadata-from-file=startup-script=STARTUP_SCRIPT
    

    Dove:

    • VM_NAME è il nome che vuoi fornire per la tua VM.
    • NETWORK_NAME è il nome della rete creata nella sezione precedente.
    • INTERNAL_IP è qualsiasi indirizzo IP interno valido all'interno dell'intervallo della subnet della regione della VM. Ad esempio, 10.128.0.2.
    • ZONE è la zona associata alla rete, ad esempio us-central1-a.
    • (Facoltativo) SUBNETWORK è il nome della subnet. Il nome della subnet si trova nel file REST equivalente per la subnet nel seguente formato: projects/project-id/regions/region/subnetworks/subnetwork-name. Se hai selezionato Automatica in Modalità di connessione subnet durante la creazione di una rete VPC, non è necessario specificare questo campo.
    • NAT_TAG è il nome del tag gateway NAT che consente di instradare le richieste in modo condizionale, a seconda che abbiano o meno un tag di questa VM. Puoi specificare qualsiasi nome per il tag.
    • STARTUP_SCRIPT è il nome dello script di avvio creato nel passaggio precedente. Ad esempio, startup-script-example.sh. In questo esempio, il flag --metadata-from-file viene utilizzato per passare i contenuti dello script di avvio specificato a una chiave denominata startup-script.

    Dopo aver eseguito questo comando, vedrai un output contenente il valore dell'IP esterno. Prendi nota del valore dell'IP esterno. Tutto il traffico dal pool privato alla risorsa esterna passa attraverso questo indirizzo. Puoi scegliere di utilizzare questo indirizzo per ulteriori configurazioni, ad esempio per configurare regole firewall nella tua rete esterna.

  3. Configura una route per indirizzare tutte le richieste alla risorsa esterna per passare all'istanza creata nel passaggio precedente, in modo che le richieste vengano inoltrate alle istanze del pool privato:

    gcloud compute routes create PRIVATE_POOL_ROUTE_NAME \
      --destination-range=DESTINATION_RANGE \
      --next-hop-address=INTERNAL_IP \
      --network=NETWORK_NAME \
      --priority=POOL_ROUTE_PRIORITY
    

    Dove:

    • PRIVATE_POOL_ROUTE_NAME è il nome che vuoi assegnare al percorso.
    • DESTINATION_RANGE è un intervallo di indirizzi CIDR valido contenente la destinazione a cui vuoi eseguire il routing. ad esempio un'istanza GitHub Enterprise Edition. Ad esempio, 8.8.8.0/24.
    • INTERNAL_IP è il valore IP interno ottenuto dal passaggio precedente. Ad esempio, 10.128.0.2.
    • NETWORK_NAME è il nome della rete creata nella sezione precedente.
    • POOL_ROUTE_PRIORITY è il numero di priorità che vuoi specificare per il percorso.

    Questo comando garantisce che tutto il traffico proveniente da una build all'interno di un'istanza di pool privato venga instradato alla VM proxy che hai creato, non direttamente alla rete internet pubblica.

  4. Configura una route per inoltrare le richieste dal proxy dalle istanze con tag all'intervallo IP di destinazione esterna. Il comando seguente crea una route per inoltrare le richieste alla rete internet pubblica associata alle istanze del pool privato.

    gcloud compute routes create NAT_EGRESS_ROUTE_NAME \
      --destination-range=DESTINATION_RANGE \
      --next-hop-gateway=default-internet-gateway \
      --network=NETWORK_NAME \
      --priority=NAT_ROUTE_PRIORITY \
      --tags=NAT_TAG
    

    Dove:

    • NAT_EGRESS_ROUTE_NAME è il nome che vuoi assegnare alla route del gateway NAT.
    • DESTINATION_RANGE è l'indirizzo della destinazione verso cui vuoi indirizzare gli annunci. ad esempio un'istanza GitHub Enterprise Edition. Ad esempio, 8.8.8.0/24.
    • NETWORK_NAME è il nome della rete creata nella sezione precedente.
    • NAT_TAG è il nome del tag gateway NAT che consente di instradare le richieste in modo condizionale, a seconda che abbiano o meno un tag da questa VM. Puoi specificare qualsiasi nome per il tag.
    • NAT_ROUTE_PRIORITY è il numero di priorità che vuoi specificare per il percorso.

    Questo comando garantisce che tutto il traffico proveniente dalla VM proxy possa essere indirizzato alla rete internet pubblica.

  5. Aggiungi una regola firewall per consentire il traffico dal pool privato alla VM gateway NAT:

    gcloud compute firewall-rules create RULE_NAME \
      --direction=INGRESS --priority=FIREWALL_PRIORITY --action=ALLOW --rules=all \
      --network=NETWORK_NAME \
      --source-ranges=RESERVED_RANGE \
      --target-tags=NAT_TAG
    

    Dove:

    • RULE_NAME è il nome che vuoi assegnare alla regola firewall.
    • FIREWALL_PRIORITY è il numero di priorità che vuoi specificare per la regola firewall.
    • NETWORK_NAME è il nome della rete creata nella sezione precedente.
    • RESERVED_RANGE è l'intervallo CIDR allocato durante la configurazione della rete VPC.
    • NAT_TAG è il nome del tag gateway NAT che consente di instradare le richieste in modo condizionale, a seconda che abbiano o meno un tag di questa VM. Puoi specificare qualsiasi nome per il tag.

Ora puoi accedere alle risorse esterne dall'indirizzo IP statico del gateway NAT autogestito nel tuo VPC.

Passaggi successivi