Configurazione di IAP per Compute Engine


Questa guida descrive come configurare un'istanza Compute Engine con Identity-Aware Proxy (IAP). Se hai già configurato la tua istanza Compute Engine e devi solo attivare IAP, consulta Attivare IAP per Compute Engine.

Obiettivi

In questo tutorial scoprirai quanto segue:

  • Creare un modello di istanza Compute Engine e un gruppo di istanze gestite (MIG).
  • Ottenere un nome di dominio e un certificato.
  • Creazione di un bilanciatore del carico HTTPS con un certificato.
  • Attivazione di IAP.
  • Verificare il funzionamento dell'IAP.

Costi

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

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

Per una stima del costo in base all'utilizzo previsto, consulta questo Calcolatore prezzi.

I nuovi utenti della piattaforma Cloud potrebbero essere idonei per una prova gratuita.

Prima di iniziare

Prima di iniziare questo tutorial, devi disporre 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

Nella console Google Cloud, 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 di quanto segue:

  • 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 Automazione > Script di avvio, 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 aggiornato i valori, fai clic su Crea per creare il modello.

Passaggio 2: crea un gruppo di istanze gestite

Nella console Google Cloud, 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 PER CREARE UN GRUPPO DI ISTANZE

Utilizza i valori predefiniti, ad eccezione di quanto segue:

  • Nome:my-managed-instance-group
  • Località: multizona
  • Modello di istanza:seleziona il modello di istanza creato nel passaggio 1
  • Numero di istanze:per modificare il numero di istanze, devi prima disattivare la scalabilità automatica.
  • Modalità di scalabilità automatica: Non scalare automaticamente
  • Controllo di integrità:seleziona Crea un 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 aggiornato i valori, fai clic su Crea per creare il gruppo di istanze gestite.

Passaggio 3: ottieni un nome di dominio e un certificato

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 o utilizzare il registrar di domini che preferisci. Registra il tuo dominio prima di continuare con questa guida.

Configurare il certificato

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

L'autorità di certificazione deve verificare che tu possieda il nome di dominio che hai registrato. Nei passaggi di seguito, creerai una VM per autenticare il tuo dominio con la CA.

Crea una VM per autenticare la proprietà del dominio

Nella console Google Cloud, vai alla pagina Compute Engine > Crea un'istanza.

VAI ALLA PAGINA CREA UN'ISTANZA

Utilizza i valori predefiniti, ad eccezione di quanto segue:

  • 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

Dopo aver aggiornato i valori, fai clic su Crea per creare l'istanza VM. Prendi nota dell'indirizzo IP esterno della VM appena creata. Ti servirà nel passaggio successivo.

Configura il dominio in modo che rimandi alla VM

Per configurare il 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. Trova la pagina per aggiornare i record DNS del dominio. Il nome della pagina potrebbe essere "Gestione DNS", "Gestione server dei nomi" o "Impostazioni avanzate".
  3. Modifica i record A con i valori seguenti:
    • Nome/Host/Alias: @
    • Valore: l'indirizzo IP esterno della VM creata in precedenza per autenticare la proprietà del dominio.
    • TTL: il valore predefinito per il registrar o 86400 (un giorno).
  4. Attendi l'aggiornamento del record DNS. La propagazione del record che hai aggiunto può richiedere fino a un giorno.

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

testa il server

Per verificare che il server funzioni correttamente, segui questi passaggi:

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

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

  3. Esegui questi comandi 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 visualizzare Hello, mentre la sessione SSH dovrebbe mostrare un messaggio contenente ... response:200. In caso contrario, attendi qualche minuto, quindi ripeti questo passaggio.

  5. Una volta eseguito il test, premi Ctrl+C per interrompere il server web.

Crea un certificato

Per creare un certificato, registrati a Let's Encrypt eseguendo i seguenti comandi sulla VM, dove YOUR_DOMAIN è il nome di dominio, senza protocollo:

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

Durante questa operazione, Let's Encrypt potrebbe richiedere un indirizzo email a cui inviare un promemoria in prossimità della scadenza del certificato (per impostazione predefinita, 3 mesi dopo l'emissione). Devi inoltre accettare i Termini di servizio di Let's Encrypt.

Una volta completata la registrazione, dovresti visualizzare un messaggio simile al seguente: Congratulations! Your certificate and chain have been saved at...

Aggiungi il certificato al progetto

Per aggiungere il certificato al progetto, esegui i seguenti 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

Una volta creato il certificato, dovresti visualizzare un messaggio simile al seguente: 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 avviata nel passaggio precedente. Quando è tutto pronto, segui questi passaggi per creare un bilanciatore del carico:

  1. Nella console Google Cloud, 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 PER LA CREAZIONE DI 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 delle applicazioni esterno visualizzata, 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, inserisci my-backend-service nella casella Nome.

  7. In Nuovo backend, utilizza i valori predefiniti, ad eccezione di quanto segue:

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

  9. Dopo aver aggiornato i valori, fai clic su Crea. Il riquadro Nuovo bilanciatore del carico HTTP(S) viene visualizzato di nuovo.

  10. Fai clic su Regole host e percorso per caricare i valori predefiniti. Non è necessario aggiungere regole.

  11. Fai clic su Configurazione frontend. Utilizza i valori predefiniti, ad eccezione di quanto segue:

    • 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. Quando hai finito di inserire i valori di configurazione del frontend, fai clic su Fine.

  13. Fai clic su Crea. Viene visualizzata la pagina Bilanciamento del carico e il nuovo bilanciatore del carico viene creato nell'elenco dei bilanciatori del carico.

  14. Una volta che la console Google Cloud ha completato la creazione del nuovo bilanciatore del carico, fai clic sul nome del bilanciatore del carico e prendi nota dell'indirizzo IP esterno in Dettagli > Frontend. Ti servirà nel passaggio successivo.

Configura il dominio in modo che rimandi al bilanciatore del carico

Per configurare il dominio in modo che rimandi al bilanciatore del carico, configura i record A seguendo questi passaggi:

  1. Accedi all'account del tuo dominio presso l'host.
  2. Trova la pagina per aggiornare i record DNS del dominio. Il nome della pagina potrebbe essere "Gestione DNS", "Gestione server dei nomi" o "Impostazioni avanzate".
  3. Modifica i record A con i valori seguenti:
    • Nome/Host/Alias: @
    • Valore: l'indirizzo IP esterno del bilanciatore del carico creato sopra. Non includere la porta :443 nel record DNS.
    • TTL: il valore predefinito 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 tuo dominio con un protocollo https://.
    • Se il bilanciatore del carico non è ancora configurato, vengono visualizzati errori "HTTP 502".
    • Quando il bilanciatore del carico è pronto, vedrai il messaggio "Richiesta non autorizzata".

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

Riavvia le VM

Per autenticare correttamente le richieste da IAP, devi riavviare le VM nel tuo gruppo di istanze gestite seguendo questa procedura:

  1. Nella console Google Cloud, vai alla pagina Compute Engine > Gruppi di istanze.
    VAI ALLA PAGINA GRUPPI DI ISTANZE
  2. Fai clic su my-managed-instance-group.
  3. Nella parte superiore dei dettagli del gruppo di istanze visualizzati, fai clic su Riavvio/sostituzione graduale.
  4. Nella pagina Riavvia/sostituisci le istanze di my-managed-instance-group visualizzata, imposta i seguenti valori:
    • Operazione:riavvia
    • Massimo non disponibile: 3 istanze su 3 istanze
    • Tempo di attesa minimo: 0 s
  5. Dopo aver aggiornato i valori, fai clic su Riavvia.

Passaggio 5: configura IAP

Configura il firewall

Successivamente, configurerai il firewall per bloccare l'accesso alle VM sottostanti e consentire solo l'accesso tramite IAP:

  1. Vai alla console Google Cloud Rete VPC > Regole firewall.
    VAI ALLA PAGINA DELLE 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
    • Destinazioni:tutte le istanze nella rete
    • Intervalli IP di origine (premi Invio dopo aver incollato ciascun valore nella casella). Gli intervalli IP sono inclusi nella lista consentita perché è un prerequisito per la comunicazione del bilanciatore del carico con i backend.
      • 130.211.0.0/22
      • 35.191.0.0/16
    • Protocolli e porte:
      • Protocolli e porte specificati
      • tcp:80
  5. Dopo aver aggiornato i valori, fai clic su Crea.

Configurare IAP

Per configurare IAP per il tuo progetto:

  1. Nella console Google Cloud, vai alla pagina Sicurezza > Identity-Aware Proxy e seleziona il progetto per cui vuoi attivare IAP.
    VAI ALLA PAGINA IDENTITY-AWARE PROXY
  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.
      Configura la schermata di consenso
    2. In Email dell'assistenza, seleziona l'indirizzo email da visualizzare come contatto pubblico. L'indirizzo email deve appartenere all'account utente che ha eseguito l'accesso o a un gruppo Google di cui l'utente che ha eseguito l'accesso è amministratore o proprietario.
    3. Inserisci il nome dell'applicazione da visualizzare.
    4. Aggiungi eventuali dettagli facoltativi.
    5. Fai clic su Salva.

    Per modificare in un secondo momento le informazioni nella 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 ho configurato la mia risorsa Compute Engine in base alla documentazione".

  5. Fai clic su Attiva.

Aggiungi entità all'elenco di accesso

A questo punto, dovrai aggiungere i principali all'elenco di accesso IAP per il tuo progetto.

  1. Nella sezione Accesso a destra di IAM e amministrazione > Identity-Aware Proxy, fai clic su Aggiungi.
  2. Inserisci le entità a cui vuoi concedere l'accesso, incluso te stesso, e assegna loro il ruolo Utente applicazione web con protezione IAP. Le entità possono essere:
    • Account Google: user@gmail.com
    • Google Gruppi: admins@googlegroups.com
    • Account di servizio: server@example.gserviceaccount.com
    • Domini Google Workspace: example.com

Passaggio 6: testa gli acquisti in-app

Per verificare che IAP funzionino correttamente, segui i passaggi riportati di seguito:

  1. Nel browser web, vai al tuo dominio.
    1. Se visualizzi il messaggio "Richiesta non autorizzata", riprova tra qualche minuto.
  2. Quando viene visualizzata una schermata di accesso a Google, accedi utilizzando l'Account Google a cui hai concesso l'accesso nel passaggio precedente.
  3. Dovresti vedere un messaggio simile a "Un saluto da user@example.com. Sono my-managed-instance-group-29z6."
  4. Prova ad aggiornare la pagina. Il browser dovrebbe mostrare i nomi delle tre macchine nel gruppo di istanze gestite. Si tratta del bilanciatore del carico che distribuisce il traffico tra le VM del gruppo.

Complimenti! Hai attivato un servizio bilanciato in base al 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 eliminare le risorse che hai creato su Google Cloud in modo che non ti vengano addebitate in futuro. Le sezioni seguenti 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 the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Eliminazione di istanze

Per eliminare un'istanza di Compute Engine:

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. Select the checkbox for the instance that you want to delete.
  3. To delete the instance, click More actions, click Delete, and then follow the instructions.

Eliminazione delle regole firewall per la rete predefinita

Per eliminare una regola firewall:

  1. In the Google Cloud console, go to the Firewall page.

    Go to Firewall

  2. Select the checkbox for the firewall rule that you want to delete.
  3. To delete the firewall rule, click Delete.

Passaggi successivi

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