Configurazione di IAP per Compute Engine

Questa guida descrive come configurare un'istanza di Compute Engine con Identity-Aware Proxy (IAP). Se hai già configurato l'istanza di Compute Engine e devi abilitare solo IAP, consulta Abilitare IAP per Compute Engine.

Obiettivi

Questo tutorial ti fornirà informazioni sui seguenti argomenti:

  • Creazione di un modello di istanza Compute Engine e di un gruppo di istanze gestite (MIG).
  • Recupero di un nome di dominio e del certificato.
  • Creazione di un bilanciatore del carico HTTPS con un certificato.
  • Abilitazione di IAP.
  • È in corso il test del funzionamento di IAP.

Costi

Questo tutorial utilizza componenti fatturabili di Google Cloud, tra cui:

  • Compute Engine
    • 4 macchine virtuali (VM)
  • Reti
    • Regola di forwarding per il bilanciatore del carico globale
    • Traffico in ingresso

Per una stima del costo basato sull'utilizzo previsto, consulta questo Calcolatore prezzi.

I nuovi utenti di Cloud Platform potrebbero essere idonei per una prova senza costi aggiuntivi.

Prima di iniziare

Prima di iniziare questo tutorial, avrai bisogno di quanto segue:

  1. Seleziona o crea un progetto Google Cloud.
    VAI ALLA PAGINA PROGETTI

  2. Abilita la fatturazione per il tuo progetto. Scopri come modificare le impostazioni di fatturazione di un progetto

Passaggio 1: crea un modello Compute Engine

In Google Cloud Console, vai alla pagina Compute Engine > Crea un modello di istanza e seleziona il progetto in cui vuoi creare un modello.

VAI ALLA PAGINA CREA UN MODELLO DI ISTANZA

Utilizza i valori predefiniti, ad eccezione dei seguenti:

  • Tipo di macchina:
    • micro (f1-micro)
  • Ambiti di accesso:
    • Imposta l'accesso per ogni API
    • Compute Engine: sola lettura
  • Firewall:
    • Consenti traffico HTTP
  • Nella sezione Gestione, in Script di avvio e automazione, copia e incolla il seguente script:
    # Copyright 2021 Google LLC
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #      http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    apt-get -y update
    apt-get -y install git
    apt-get -y install virtualenv
    git clone https://github.com/GoogleCloudPlatform/python-docs-samples
    cd python-docs-samples/iap
    virtualenv venv -p python3
    source venv/bin/activate
    pip install -r requirements.txt
    cat example_gce_backend.py |
      sed -e "s/YOUR_BACKEND_SERVICE_ID/$(gcloud compute backend-services describe my-backend-service --global --format="value(id)")/g" |
      sed -e "s/YOUR_PROJECT_ID/$(gcloud config get-value account | tr -cd "[0-9]")/g" > real_backend.py
    gunicorn real_backend:app -b 0.0.0.0:80
    

Dopo aver completato l'aggiornamento dei valori, fai clic su Crea per creare il modello.

Passaggio 2: crea un gruppo di istanze gestite

In Google Cloud Console, vai alla pagina Compute Engine > Crea un nuovo gruppo di istanze e seleziona il progetto in cui vuoi creare un gruppo di istanze gestite.

VAI ALLA PAGINA CREA UN GRUPPO DI ISTANZE

Utilizza i valori predefiniti, ad eccezione dei seguenti:

  • Nome: my-managed-instance-group
  • Località: più zone
  • Modello di istanza: seleziona il modello di istanza creato nel passaggio 1.
  • Numero di istanze: per modificare il numero di istanze, è necessario prima disattivare la scalabilità automatica.
  • Modalità di scalabilità automatica: non scalare automaticamente
  • Controllo di integrità: seleziona Crea controllo di integrità, quindi inserisci i seguenti valori:

    • Nome: my-health-check
    • Protocollo: HTTP

    Utilizza il nuovo controllo di integrità facendo clic su Salva e continua.

Dopo aver completato l'aggiornamento dei valori, fai clic su Crea per creare il gruppo di istanze gestite (MIG).

Passaggio 3: ottieni un nome e un certificato del dominio

Per utilizzare il bilanciatore del carico con il traffico HTTPS, devi disporre di un nome di dominio e di un certificato firmato. Puoi registrare un dominio su Google Domains oppure utilizzare il registrar di domini che preferisci. Registra il tuo dominio prima di continuare la guida.

Configurare il certificato

Crea un certificato che identifichi il tuo sito web per gli utenti. Per informazioni su come creare un certificato, consulta Utilizzo dei certificati SSL gestiti da Google.

La tua CA deve verificare la proprietà del nome di dominio che hai registrato. Nei passaggi seguenti, creerai una VM per autenticare il tuo dominio con l'autorità di certificazione.

Crea una VM per autenticare la proprietà del dominio

In Google Cloud Console, vai alla pagina Creare un'istanza di Compute Engine.

VAI ALLA PAGINA CREA UN'ISTANZA

Utilizza i valori predefiniti, ad eccezione dei seguenti:

  • Nome: certbot-vm
  • Tipo di macchina: micro (f1-micro)
  • Ambiti di accesso:
    • Imposta l'accesso per ogni API
    • Compute Engine: lettura/scrittura
  • Immagine disco di avvio:
    • Debian GNU/Linux 9 (stretch)
  • Firewall:
    • Consenti traffico HTTP
    • Consenti traffico HTTPS

Quando hai finito di aggiornare i valori, fai clic su Crea per creare l'istanza VM. Prendi nota dell'indirizzo IP esterno della VM appena creata Ne avrai bisogno nel prossimo passaggio.

Configura il tuo dominio in modo che rimandi alla VM

Per configurare il tuo dominio in modo che rimandi alla VM, segui questi passaggi per configurare i record A:

  1. Accedi all'account del tuo dominio presso l'host.
  2. Individua la pagina per aggiornare i record DNS del dominio. Questa pagina potrebbe essere denominata "Gestione DNS", "Gestione server dei nomi" o "Impostazioni avanzate".
  3. Modifica i record A impostando questi valori:
    • Nome/Host/Alias: @
    • Valore: l'indirizzo IP esterno della VM che hai creato per autenticare la proprietà del dominio riportata sopra.
    • TTL: l'impostazione predefinita per il registrar o 86400 (un giorno).
  4. Attendi l'aggiornamento del record DNS. La propagazione del record aggiunto può richiedere fino a un giorno.

Per saperne di più, vedi Informazioni sui record A.

Testa il server

Per verificare che il server funzioni correttamente, procedi nel seguente modo:

  1. In Google Cloud Console, vai alla pagina Istanze Compute Engine > Istanze.
    VAI ALLA PAGINA ISTANZE VM

  2. In Connetti per certbot-vm, fai clic su SSH.

  3. Esegui i comandi seguenti per eseguire un piccolo server web sulla VM:

      mkdir web
      cd web
      echo "Hello" > index.html
      sudo busybox httpd -v -f
    
  4. In un browser web, vai al nome di dominio che hai registrato in precedenza. Il browser web dovrebbe mostrare Hello, mentre la sessione SSH dovrebbe mostrare un messaggio contenente ... response:200. In caso contrario, attendi qualche minuto e ripeti questo passaggio.

  5. Dopo aver completato il test, premi Ctrl+C per arrestare il server web.

Creare un certificato

Per creare un certificato, registrati con Let's Encrypt eseguendo i seguenti comandi sulla VM in cui YOUR_DOMAIN è il tuo nome di dominio, escluso il protocollo:

sudo pkill busybox
sudo apt-get install -y certbot
sudo certbot certonly --standalone -d YOUR-DOMAIN

Durante questo processo, Let's Encrypt potrebbe richiedere un indirizzo email per inviare un promemoria alla scadenza del certificato (per impostazione predefinita, 3 mesi dopo l'emissione). Devi inoltre accettare i Termini di servizio stabiliti da Let's Encrypt.

Quando avrai completato la registrazione, dovresti vedere un messaggio che dice Congratulations! Your certificate and chain have been saved at...

Aggiungi il certificato al tuo progetto

Per aggiungere il certificato al tuo progetto, esegui questi comandi sulla VM:

sudo su
cd /etc/letsencrypt/live/YOUR_DOMAIN
gcloud compute ssl-certificates create my-cert --certificate=fullchain.pem --private-key=privkey.pem

Dopo aver creato correttamente il certificato, dovrebbe essere visualizzato un messaggio simile a: Created [https://www.googleapis.com/compute/v1/projects/example-project/global/sslCertificates/my-cert]

Prima di continuare, chiudi la sessione SSH.

Passaggio 4: crea un bilanciatore del carico

Prima di iniziare questo passaggio, assicurati di aver chiuso la sessione SSH che hai iniziato nel passaggio precedente. Quando è tutto pronto, segui i passaggi riportati di seguito per creare un bilanciatore del carico:

  1. In Google Cloud Console, vai alla pagina Servizi di rete > Crea un bilanciatore del carico e seleziona il progetto per cui vuoi creare un bilanciatore del carico.
    VAI ALLA PAGINA CREA UN Bilanciatore del carico

  2. In Bilanciamento del carico HTTP(S), fai clic su Avvia configurazione.

  3. Seleziona Da Internet alle mie VM.

  4. Nella pagina Nuovo bilanciatore del carico HTTP(S) esterno che viene visualizzato, inserisci un Nome per il bilanciatore del carico.

  5. Fai clic su Configurazione backend, quindi seleziona Servizi di backend > Crea un servizio di backend.

  6. Nel riquadro Crea servizio di backend, nella casella Nome, inserisci my-backend-service.

  7. In Nuovo backend, utilizza i valori predefiniti, esclusi quelli seguenti:

    • Gruppo di istanze: my-managed-instance-group
  8. In Controllo di integrità, seleziona my-health-check.

  9. Dopo avere aggiornato i valori, fai clic su Crea. Viene visualizzato di nuovo il riquadro Nuovo bilanciatore del carico HTTP(S).

  10. Fai clic su Regole host e percorso per caricare i valori predefiniti. Non devi aggiungere alcuna regola.

  11. Fai clic su Configurazione frontend. Utilizza i valori predefiniti, ad eccezione dei seguenti:

    • Protocollo: HTTPS
    • Indirizzo IP: fai clic su Crea indirizzo IP
      • Inserisci un Nome da associare al nuovo indirizzo IP statico.
      • Fai clic su Prenota per prenotare l'indirizzo IP statico.
    • Certificato: my-cert
  12. Dopo avere inserito i valori di configurazione frontend, fai clic su Fine. Viene visualizzato di nuovo il riquadro Nuovo bilanciatore del carico HTTP(S) esterno.

  13. In Nuovo bilanciatore del carico HTTP(S) esterno, fai clic su Crea. Viene visualizzata la pagina Bilanciamento del carico e il tuo nuovo bilanciatore del carico verrà creato nell'elenco dei bilanciatori del carico.

  14. Una volta che Google Cloud Console termina la creazione del nuovo bilanciatore del carico, fai clic sul nome del bilanciatore del carico e annota l'indirizzo IP esterno nella sezione Dettagli &front-end. Ti servirà nel passaggio successivo.

Configurare il dominio per puntare al bilanciatore del carico

Per impostare il tuo dominio in modo che rimandi al bilanciatore del carico, configura i record A seguendo questa procedura:

  1. Accedi all'account del tuo dominio presso l'host.
  2. Individua la pagina per aggiornare i record DNS del dominio. Questa pagina potrebbe essere denominata "Gestione DNS", "Gestione server dei nomi" o "Impostazioni avanzate".
  3. Modifica i record A impostando questi valori:
    • Nome/Host/Alias: @
    • Valore: l'indirizzo IP esterno del bilanciatore del carico che hai creato in precedenza. Non includere la porta :443 nel record DNS.
    • TTL: l'impostazione predefinita per il registrar o 86400 (un giorno).
  4. Attendi l'aggiornamento del record DNS. La propagazione del record appena aggiunto può richiedere fino a un giorno.
  5. Per testare il bilanciatore del carico, utilizza un browser web per accedere al dominio con un protocollo https://.
    • Se il bilanciatore del carico non è ancora configurato, vedrai errori "HTTP 502".
    • Quando il bilanciatore del carico è pronto, vedrai "Richiesta non autorizzata"."

Per saperne di più, vedi Informazioni sui record A.

Riavvia le VM

Per autenticare correttamente le richieste da IAP, devi riavviare le VM nel tuo MIG procedendo nel seguente modo:

  1. In Google Cloud Console, vai alla pagina Gruppi di istanze di Compute Engine.
    VAI ALLA PAGINA GRUPPI DI ISTANZE
  2. Fai clic su my-managed-instance-group.
  3. Nella parte superiore dei dettagli del gruppo di istanze che vengono visualizzati, fai clic su Riavvio/sostituzione in sequenza.
  4. Nella pagina Riavvia/sostituisci le istanze di my-managed-instance-group visualizzata, imposta i seguenti valori:
    • Operazione: riavvio
    • Numero massimo di istanze non disponibili: 3 istanze su 3.
    • Tempo di attesa minimo: 0 s
  5. Al termine dell'aggiornamento dei valori, fai clic su Riavvia.

Passaggio 5: configura IAP

Configura il firewall

Dopodiché configurerai il firewall in modo da bloccare l'accesso alle VM sottostanti e consentirai l'accesso solo tramite IAP:

  1. Vai alla sezione Rete VPC e regole firewall di Google Cloud Console.
    VAI ALLA PAGINA REGOLE FIREWALL
  2. Seleziona la casella di controllo accanto alle seguenti regole:
    • default-allow-http
    • default-allow-https
    • default-allow-internal
  3. Fai clic su Elimina.
  4. Fai clic su Crea regola firewall e imposta i seguenti valori:
    • Nome: allow-iap-traffic
    • Target. Tutte le istanze della rete.
    • Intervalli IP di origine (premi Invio dopo aver incollato ciascun valore nella casella):
      • 130.211.0.0/22
      • 35.191.0.0/16
    • Protocolli e porte:
      • Protocolli e porte specificati
      • tcp:80
  5. Dopo avere aggiornato i valori, fai clic su Crea.

Configura IAP

Per configurare IAP per il tuo progetto:

  1. In Google Cloud Console, vai alla pagina Sicurezza > Identity-Aware Proxy e seleziona il progetto per cui vuoi abilitare IAP.
    VAI ALLA PAGINA PROXY DI IDENTITÀ
  2. Se non hai configurato la schermata per il consenso OAuth del progetto, ti verrà chiesto di farlo:

    1. Vai alla schermata di consenso OAuth.
      Configurare la schermata per il consenso
    2. In Email di assistenza, seleziona l'indirizzo email che vuoi visualizzare come contatto pubblico. L'indirizzo email deve appartenere all'account utente attualmente connesso o a un gruppo Google di cui fa parte l'utente che ha eseguito l'accesso.
    3. Inserisci il Nome applicazione che vuoi visualizzare.
    4. Aggiungi eventuali dettagli facoltativi.
    5. Fai clic su Salva.

    Per modificare in seguito le informazioni sulla schermata di consenso OAuth, ad esempio il nome del prodotto o l'indirizzo email, ripeti i passaggi precedenti per configurare la schermata di consenso.

  3. Accanto a my-backend-service,

  4. Nella finestra Attiva IAP visualizzata, seleziona la casella di controllo accanto a "Ho letto i requisiti di configurazione e configurato la mia risorsa Compute Engine in base alla documentazione".

  5. Fai clic su Attiva.

Aggiungi entità all'elenco per gli accessi

Dopodiché aggiungerai le entità all'elenco di accesso IAP per il tuo progetto.

  1. Nella sezione IAM & admin > Identity-Aware Proxy lato destro Accedi, fai clic su Aggiungi.
  2. Inserisci le entità a cui vuoi concedere l'accesso, incluso te. Le entità possono essere:
    • Account Google: utente@gmail.com
    • Google Gruppi: amministratori@googlegroups.com
    • Account di servizio: server@example.gserviceaccount.com
    • Domini di Google Workspace: example.com

Passaggio 6: prova IAP

Per verificare che IAP funzioni correttamente, segui questi passaggi:

  1. Nel browser web, vai al tuo dominio.
    1. Se vedi "Richiesta non autorizzata", riprova tra qualche minuto.
  2. Quando viene visualizzata una schermata di accesso con Google, accedi con l'Account Google a cui hai concesso l'accesso nel passaggio precedente.
  3. Dovresti vedere un messaggio simile a "Ciao, utente@example.com. Sono il mio-gruppo-gestito-29z6."
  4. Prova ad aggiornare la pagina. Il browser dovrebbe mostrare i nomi delle tre macchine nel tuo gruppo di istanze gestite. Questo è il bilanciatore del carico che distribuisce il traffico nelle VM nel gruppo.

Complimenti! Hai attivato un servizio con bilanciamento del carico utilizzando IAP.

Esegui la pulizia

Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Dopo aver completato la configurazione di IAP per Compute Engine, puoi pulire le risorse create su Google Cloud in modo da non ricevere più fatture in futuro. Le seguenti sezioni descrivono come eliminare o disattivare queste risorse.

Elimina il progetto

Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.

Per eliminare il progetto:

  1. In Cloud Console, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto da eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Eliminazione di istanze

Per eliminare un'istanza di Compute Engine:

  1. In Cloud Console, vai alla pagina Istanze VM.

    Vai alle istanze VM

  2. Seleziona la casella di controllo l'istanza che vuoi eliminare.
  3. Per eliminare l'istanza, fai clic su Altre azioni, quindi su Elimina e segui le istruzioni.

Eliminazione delle regole firewall per la rete predefinita

Per eliminare una regola firewall:

  1. In Cloud Console, vai alla pagina Firewall.

    Vai a Firewall

  2. Seleziona la casella di controllo in corrispondenza di la regola firewall che vuoi eliminare.
  3. Per eliminare la regola firewall, fai clic su Elimina.

Passaggi successivi

  • Prova a modificare l'app di esempio che abbiamo usato in questo tutorial per pubblicare altri dati.
  • Leggi le best practice per capire come scrivere le tue app e proteggerle con IAP.