Configurare servizi privati solo per uso interno

Questa pagina mostra la configurazione richiesta per esporre un servizio dell'ambiente flessibile App Engine solo sul relativo indirizzo IP interno.

Per impostazione predefinita, i servizi dell'ambiente flessibile ricevono sia un indirizzo IP interno sia un indirizzo IP esterno temporaneo al momento del primo deployment. L'indirizzo IP esterno temporaneo consente al tuo servizio di inviare richieste ai servizi App Engine con domini personalizzati e alle risorse su internet. Gli indirizzi IP esterni temporanei comportano dei costi.

Se il tuo servizio non richiede un indirizzo IP esterno, puoi impedire al servizio di inviare richieste alle risorse su internet e ridurre i costi limitando il servizio all'utilizzo solo del suo indirizzo IP interno. In questo modo, il tuo servizio non viene bloccato dalla ricezione di richieste da internet o dai servizi App Engine con domini personalizzati, perché il nome di dominio completo del tuo servizio è ancora visibile esternamente.

Limitazioni

La disattivazione degli indirizzi IP esterni temporanei presenta le seguenti limitazioni:

  • Servizi con domini personalizzati: per inviare richieste ai servizi App Engine con domini personalizzati, devi configurare Cloud NAT.
  • Risorse esterne: per inviare richieste a risorse esterne, devi configurare Cloud NAT.
  • Dipendenza dall'accesso privato Google: le istanze con la modalità IP impostata su internal richiedono l'accesso privato Google sulla subnet di destinazione.
  • Reti legacy: le reti legacy non possono utilizzare l'accesso privato Google e, di conseguenza, non possono disattivare gli indirizzi IP esterni temporanei.

Prima di iniziare

Per eseguire il deployment di app in ambiente flessibile senza indirizzi IP esterni, devi abilitare l'accesso privato Google nella subnet di destinazione.

Prepara la rete VPC condiviso

Se utilizzi il VPC condiviso, segui questi passaggi per preparare la rete VPC condiviso per un'ulteriore configurazione.

  1. Verifica di avere una route compatibile con l'accesso privato Google. In genere, la route predefinita di una rete è compatibile con l'accesso privato Google. Per le altre route, verifica che siano configurate come segue.

    Network: SHARED_VPC_NETWORK_NAME
    Destination IP address range: 0.0.0.0/0
    Instance tags: INSTANCE_TAGS
    Next hop: DEFAULT_INTERNET_GATEWAY
    

    Sostituisci quanto segue:

    • SHARED_VPC_NETWORK_NAME: il nome della tua rete VPC condiviso.
    • INSTANCE_TAGS: se non utilizzi tag di istanza, non specificare nulla in questo campo. Se utilizzi i tag di istanza, includi aef-instances nell'elenco dei tag di istanza.
    • DEFAULT_INTERNET_GATEWAY: il gateway internet predefinito.

    Per scoprire di più sulle route compatibili per l'accesso privato Google, consulta la documentazione sull'accesso privato Google relativa alle opzioni di routing.

  2. Verifica di avere una regola firewall compatibile con l'accesso privato Google. La regola firewall deve essere configurata come segue.

    Network: SHARED_VPC_NETWORK_NAME
    Destination IP address range: 0.0.0.0/0
    Destination filter: IP ranges
    Direction of traffic: Egress
    Attach on match: Allow
    Instance tags: INSTANCE_TAGS
    

    Sostituisci quanto segue:

    • SHARED_VPC_NETWORK_NAME: il nome della tua rete VPC condiviso.
    • INSTANCE_TAGS: se non utilizzi tag di istanza, non specificare nulla in questo campo. Se utilizzi i tag di istanza, includi aef-instances nell'elenco dei tag di istanza.

    Per scoprire di più sulle regole firewall compatibili per l'accesso privato Google, consulta la documentazione sull'accesso privato Google relativa alla configurazione del firewall.

Configura il servizio in modo che utilizzi solo il proprio indirizzo IP interno

  1. Aggiorna Google Cloud CLI. In questo modo ti assicuri di utilizzare una versione di gcloud CLI che supporta gli indirizzi IP privati per le app dell'ambiente flessibile.

    gcloud components update
  2. Nel file app.yaml, aggiungi il campo instance_ip_mode alla sezione network e impostalo su internal.

    • Se il file app.yaml contiene già una sezione network, aggiungi la seguente riga all'interno della sezione network:

      instance_ip_mode: internal

    • Se il file app.yaml non contiene una sezione network, crea la sezione e specifica la modalità IP dell'istanza aggiungendo le seguenti righe:

      network:
       instance_ip_mode: internal

    Salva queste modifiche.

  3. Esegui il deployment del servizio.

    gcloud beta app deploy
  4. Verifica la configurazione controllando la pagina Istanze della console Google Cloud .

    Vai a Istanze

    Scorri verso il basso fino alla tabella Istanze (sotto il grafico Riepilogo). Nella colonna IP esterno, verifica che non sia elencato alcun indirizzo IP. L'assenza di un indirizzo IP in questa colonna indica che l'istanza non ha un indirizzo IP esterno. Anche se questo campo è vuoto, l'istanza ha comunque un indirizzo IP interno.

Invia richieste esterne senza un indirizzo IP esterno

Se il tuo servizio invia richieste a internet, ma vuoi limitarlo all'utilizzo solo del suo indirizzo IP interno, puoi utilizzare Cloud NAT per creare un gateway. Il tuo servizio può inviare richieste in uscita tramite il gateway Cloud NAT utilizzando indirizzi IP esterni statici riservati anziché indirizzi IP esterni temporanei predefiniti.

Configura il servizio in modo che utilizzi instance_ip_mode: internal con Cloud NAT e indirizzi IP esterni statici dedicati nelle seguenti situazioni:

  • Ti connetti a un database o a un'API esterni che richiedono una lista consentita di indirizzi IP o una regola firewall.
  • Ti connetti a endpoint esterni sensibili alla reputazione, come gateway di pagamento, database ospitati o API partner protette da web application firewall (WAF) di terze parti. Il traffico precedente o rumoroso su pool di indirizzi IP temporanei condivisi può peggiorare la reputazione degli IP e causare il blocco o la limitazione delle richieste da parte dei WAF esterni con errori HTTP 403 o timeout di connessione.
  • Esegui workload di scansione di rete autorizzata, enumerazione delle porte, fingerprinting degli host, rilevamento delle vulnerabilità, web scraping o test di carico.

Per instradare le richieste internet in uscita tramite Cloud NAT:

  1. Segui i passaggi descritti nella sezione Configura il servizio in modo che utilizzi solo il proprio indirizzo IP interno.

  2. Segui i passaggi per configurare Cloud NAT e assegnare indirizzi IP esterni statici prenotati al gateway.

Se il tuo servizio scala fino a molte istanze o apre molte connessioni simultanee, ad esempio durante la scansione di reti autorizzate, assegna più indirizzi IP statici a Cloud NAT. Puoi anche aumentare il numero minimo di porte per istanza o abilitare l'allocazione dinamica delle porte per evitare l'esaurimento delle porte. Scopri di più su come i gateway Cloud NAT utilizzano indirizzi IP e porte.

Per scoprire di più su questo approccio, consulta la documentazione di Cloud Architecture Center sul deployment di Cloud NAT per il recupero.