Frontend pubblico e backend privato in un VPC (Virtual Private Cloud)

Questa esercitazione può comportare degli addebiti. Utilizza lo stimatore costi per generare una stima dei costi basata sul tuo utilizzo previsto.

Questa esercitazione ti guida nella creazione del tuo IBM Cloud® Virtual Private Cloud (VPC) con più sottoreti e una VSI (virtual server instance) in ciascuna sottorete. Un VPC è il tuo cloud privato su un'infrastruttura cloud condivisa con isolamento logico da altre reti virtuali.

Una sottorete è un intervallo di indirizzi IP. È collegata ad una singola zona e non può estendersi su più zone o regioni. Ai fini del VPC, la caratteristica importante di una sottorete è data dal fatto che le sottoreti possono essere isolate le une dalle altre, come pure essere interconnesse nel modo consueto. L'isolamento della sottorete può essere realizzato dai gruppi di sicurezza che fungono da firewall per controllare il traffico in entrata e in uscita per una o più istanze del server virtuale.

È opportuno avere una sottorete utilizzata per le risorse che devono essere esposte al mondo esterno. Le risorse con accesso limitato a cui non si dovrebbe mai accedere direttamente dal mondo esterno sono collocate in una sottorete diversa. Le istanze in una sottorete di questo tipo potrebbero essere il tuo database di backend oppure alcuni segreti archiviati che non vuoi siano accessibili pubblicamente. Definirai i gruppi di sicurezza per consentire o negare il traffico alle VSI.

In breve, utilizzando VPC puoi:

  • creare una SDN (software-defined network),
  • isolare i carichi di lavoro,
  • avere un buon controllo del traffico in entrata e in uscita.

Obiettivi

  • Comprendere gli oggetti dell'infrastruttura disponibili per i VPC (virtual private cloud)
  • Apprendere informazioni per creare un VPC (virtual private cloud), sottoreti e istanze del server
  • Sapere come applicare i gruppi di sicurezza per l'accesso sicuro ai server

dell'architettura del

  1. L'amministratore (DevOps) configura l'infrastruttura richiesta (VPC, sottoreti, gruppi di sicurezza con regole, VSI) sul cloud.
  2. L'utente di internet effettua una richiesta HTTP/HTTPS al server web nel frontend.
  3. Il frontend richiede risorse private dal backend protetto e fornisce i risultati all'utente.

Prima di iniziare

  • Controlla le autorizzazioni utente. Assicurati che il tuo account utente disponga di autorizzazioni sufficienti per creare e gestire le risorse VPC. Vedi l'elenco delle autorizzazioni richieste per VPC.
  • Hai bisogno di una chiave SSH per collegarti ai server virtuali. Se non si dispone di una chiave SSH, consultare le istruzioni per la creazione di una chiave per VPC.

Crea un VPC (Virtual Private Cloud) e le sottoreti

Per rafforzare la sicurezza dei server, ti consigliamo di consentire le connessioni solo alle porte richieste dalle applicazioni distribuite sui server. In questa esercitazione, l'applicazione sarà un web server, quindi dovrà consentire le connessioni in entrata solo sulla porta 80.

Per eseguire attività di manutenzione su questi server come l'installazione del software o l'esecuzione di upgrade del sistema operativo, userai un host bastion. Un host bastion è un'istanza di cui viene eseguito il provisioning con un indirizzo IP pubblico e che è accessibile tramite SSH. Una volta configurato, l'host bastion funge da server jump che consente una connessione sicura alle istanze di cui è stato eseguito il provisioning nel VPC.

In questa sezione, creerai il VPC e l'host bastion.

Questa esercitazione include anche script di shell complementari e un modello Terraform, che è possibile utilizzare per generare le risorse che creerai tramite l'IU qui sotto. Sono disponibili in questo repository Github.

  1. Vai alla pagina Virtual Private Clouds e fai clic su Create.
  2. Nella sezione New virtual private cloud:
    1. Immetti vpc-pubpriv come nome per il tuo VPC.
    2. Seleziona un gruppo di risorse (Resource group).
    3. Facoltativamente, aggiungi delle tag per organizzare le tue risorse.
  3. Deselezionare Consenti SSH e Consenti ping dal gruppo di sicurezza predefinito. L'accesso SSH sarà in seguito aggiunto al gruppo di sicurezza di manutenzione. Il gruppo di sicurezza di manutenzione deve essere aggiunto a un'istanza per consentire l'accesso SSH dal server bastion. L'accesso al ping non è necessario per questa esercitazione.
  4. In Sottoreti modificare il nome della sottorete della zona 1. Fare clic sull'icona a forma di matita:
    • Inserire vpc-secure-bastion-subnet come nome univoco della subnet.
    • Seleziona lo stesso Gruppo di risorse del gruppo di risorse VPC.
    • Lasciare i valori predefiniti negli altri valori.
    • Fai clic su Save
  5. In Subnets modificare il nome della sottorete della zona 2. Fare clic sull'icona a forma di matita:
    • Inserire vpc-pubpriv-backend-subnet come nome univoco della subnet.
    • Seleziona lo stesso Gruppo di risorse del gruppo di risorse VPC.
    • Lasciare i valori predefiniti negli altri valori.
    • Fai clic su Save
  6. In Sottoreti modificare il nome della sottorete della zona 3. Fare clic sull'icona a forma di matita:
    • Inserire vpc-pubpriv-frontend-subnet come nome univoco della subnet.
    • Seleziona lo stesso Gruppo di risorse del gruppo di risorse VPC.
    • Lasciare i valori predefiniti negli altri valori.
    • Fai clic su Save
  7. Fai clic su Create virtual private cloud.

Per confermare la creazione della sottorete, accedere alla pagina Sottoreti e attendere che lo stato cambi in Disponibile.

Crea e configura il gruppo di sicurezza bastion

Segui i passi descritti in questa sezione dell'esercitazione sul bastion per creare un gruppo di sicurezza e configurare le regole in entrata per l'istanza del server virtuale bastion.

Crea un'istanza bastion

Segui i passi descritti in questa sezione dell'esercitazione sul bastion per creare l'istanza del server virtuale bastion.

Configura un gruppo di sicurezza con regole di accesso di manutenzione

Segui i passi descritti in questa sezione dell'esercitazione sul bastion per creare il gruppo di sicurezza vpc-secure-maintenance-sg. Questo gruppo di sicurezza verrà utilizzato durante l'esecuzione delle attività di manutenzione sulle istanze del server virtuale, come l'installazione del software o l'aggiornamento del sistema operativo.

Crea un gruppo di sicurezza e una VSI per il backend

In questa sezione, creerai un gruppo di sicurezza e una VSI per il backend.

Crea un gruppo di sicurezza per il backend

Il gruppo di sicurezza per il backend controlla le connessioni in entrata e in uscita per i server di backend.

Per creare un nuovo gruppo di sicurezza per il backend:

  1. Selezionare Gruppi di sicurezza in Rete, quindi fare clic su Crea.
  2. Immetti vpc-pubpriv-backend-sg come nome e seleziona il VPC che hai creato in precedenza.
  3. Seleziona un gruppo di risorse uguale al tuo VPC.
  4. Fai clic su Create security group.

Successivamente, modificherai il gruppo di sicurezza per aggiungere le regole in entrata e in uscita.

Crea una VSI (virtual server instance) per il backend

Per creare una VSI (virtual server instance) nella sottorete appena creata:

  1. Fare clic sulla sottorete del backend sotto Subnet.
  2. Fare clic su Risorse collegate, in Istanze collegate fare clic su Crea.
  3. Per configurare l'istanza:
    1. Scegliere una posizione e assicurarsi di utilizzare nuovamente la stessa posizione in seguito.
    2. Imposta il nome su vpc-pubpriv-backend-vsi.
    3. Selezionare il gruppo di risorse come in precedenza.
    4. In Immagine fare clic su Modifica immagine. Utilizza il campo di ricerca per selezionare Ubuntu Linux come tuo Sistema operativo. Puoi scegliere qualsiasi versione dell'immagine.
    5. Fai clic su Change profile, seleziona Compute come categoria e scegli cx2-2x4 (2 vCPUs e 4 GB RAM) come tuo profilo.
    6. Impostare le chiavi SSH sulla chiave SSH creata in precedenza.
    7. In Opzioni avanzate impostare Dati utente su
      #!/bin/bash
      apt-get update
      apt-get install -y nginx
      echo "I'm the backend server" > /var/www/html/index.html
      service nginx start
      
      Ciò installerà un semplice server web nell'istanza.
  4. In Rete, seleziona il VPC che hai creato.
  5. Assicurati che sia selezionata l'interfaccia di rete virtuale e che vpc - pubpriv - backend - subnet sia elencato come sottorete. Fare clic sull'icona di modifica per tale sottorete.
    1. Per prima cosa, in Network attachment and virtual network interface details, verifica che sia selezionato vpc - pubpriv - backend - subnet. Fai clic su Next.
    2. Deseleziona il gruppo di sicurezza predefinito e seleziona vpc-pubpriv-backend-sg e vpc-secure-maintenance-sg.
    3. Nella finestra di dialogo Configurazione IP lasciare tutto così com' è e fare clic su Avanti.
    4. Infine, rivedere tutto e terminare facendo clic su Salva.
  6. Fai clic su Create virtual server instance.

Creare un gruppo di sicurezza frontend e VSI

Analogamente al backend, si creerà un'istanza del server virtuale frontend e un gruppo di sicurezza.

Crea un gruppo di sicurezza per il frontend

Per creare un nuovo gruppo di sicurezza per il frontend:

  1. Fare clic su Gruppi di protezione in Rete, quindi fare clic su Crea.
  2. Immetti vpc-pubpriv-frontend-sg come nome e seleziona il VPC che hai creato in precedenza.
  3. Seleziona un gruppo di risorse uguale al tuo VPC.
  4. Fai clic su Create security group.

Crea una VSI (virtual server instance) per il frontend

Per creare una VSI (virtual server instance) nella sottorete appena creata:

  1. Fare clic sulla sottorete del frontend sotto Subnet.
  2. Fare clic su Risorse collegate, in Istanze collegate fare clic su Crea.
  3. Per configurare l'istanza:
    1. Scegliere una posizione e assicurarsi di utilizzare nuovamente la stessa posizione in seguito.
    2. Imposta il nome su vpc-pubpriv-frontend-vsi.
    3. Selezionare il gruppo di risorse come in precedenza.
    4. In Immagine fare clic su Modifica immagine. Utilizza il campo di ricerca per selezionare Ubuntu Linux come tuo Sistema operativo. Puoi scegliere qualsiasi versione dell'immagine.
    5. Fai clic su Change profile, seleziona Compute come categoria e scegli cx2-2x4 (2 vCPUs e 4 GB RAM) come tuo profilo.
    6. Imposta SSH keys sulla chiave SSH che hai creato in precedenza.
    7. In Opzioni avanzate impostare Dati utente su
      #!/bin/bash
      apt-get update
      apt-get install -y nginx
      echo "I'm the frontend server" > /var/www/html/index.html
      service nginx start
      
      Ciò installerà un semplice server web nell'istanza.
  4. In Rete, seleziona il VPC che hai creato.
  5. Assicurati che sia selezionato Virtual network interface e che vpc - pubpriv - frontend - subnet sia elencato come sottorete. Fare clic sull'icona di modifica per tale sottorete.
    1. Per prima cosa, in Dettagli del collegamento di rete e dell'interfaccia di rete virtuale, verifica che sia selezionato vpc - pubpriv - frontend - subnet. Fai clic su Next.
    2. Deselezionare il gruppo di sicurezza predefinito e selezionare vpc-pubpriv-frontend-sg e vpc-secure-maintenance-sg.
    3. Nella finestra di dialogo Configurazione IP lasciare tutto così com' è e fare clic su Avanti.
    4. Infine, rivedere tutto e terminare facendo clic su Salva.
  6. Fai clic su Create virtual server instance.

Una volta che l'istanza è attiva e in esecuzione, seleziona la VSI di frontend vpc - pubpriv - frontend - vsi, scorri fino a Network attachments with Virtual network interface e seleziona Edit floating IPs dal menu a tre punti per eth0. Fai clic su Collega, quindi su Prenota un nuovo IP mobile e utilizza vpc - pubpriv - frontend - vsi - ip come nome. Dopo aver terminato con Prenota, potrebbe essere necessario aggiornare la pagina per visualizzare l'IP appena collegato.

Configura la connettività tra il frontend e il backend

Con tutti i server in esecuzione, in questa sezione configurerai la connettività per consentire le normali operazioni tra i server di frontend e di backend.

Configura il gruppo di sicurezza per il frontend

L'istanza di frontend ha il suo software installato, ma non può essere ancora raggiunta a causa della configurazione.

  1. Per confermare che non è ancora possibile accedere al server web, aprire un browser web che punti a http://<floating-ip-address-of-the-frontend-vsi> o utilizzare:

    curl -v -m 30 http://<floating-ip-address-of-the-frontend-vsi>
    

    La connessione dovrebbe infine scadere.

  2. Per abilitare la connessione in entrata al server web installato sull'istanza di frontend, devi aprire la porta su cui è in ascolto il server web.

  3. Passa a Security groups nella sezione Network, poi fai clic su vpc-pubpriv-frontend-sg.

  4. Fai clic sulla scheda Rules e sotto Inbound rules fai clic su Create. Aggiungere le regole della tabella seguente, che consentono le richieste HTTP e Ping (ICMP) in entrata. .

    Regole in entrata
    Protocollo Tipo di origine Origine Valore Descrizione
    TCP Qualsiasi 0.0.0.0/0 Porte 80-80 Questa regola consente connessioni da qualsiasi indirizzo IP al server web di frontend.
    ICMP Qualsiasi 0.0.0.0/0 Tipo: 8,Codice: Lasciare vuoto Questa regola consente il ping al server di frontend da qualsiasi host.
  5. In seguito, aggiungi la regola in uscita. La porta del backend dipende dal software che installerai sul server virtuale. Questa esercitazione utilizza un server web in ascolto sulla porta 80. Vedi la seguente tabella Regole in uscita per i valori.

    Regole in uscita
    Protocollo Tipo di destinazione Destinazione Valore Descrizione
    TCP Gruppo di sicurezza vpc-pubpriv-backend-sg Porte 80-80 Questa regola consente al server di frontend di comunicare con il server di backend.
  6. Accedere nuovamente all'istanza di frontend all'indirizzo http://<floating-ip-address-of-the-frontend-vsi> per visualizzare la pagina di benvenuto del server web.

Verifica la connettività tra il frontend e il backend

Il server di backend esegue lo stesso software di server web del server di frontend. Potrebbe essere considerato come un microservizio che espone un'interfaccia HTTP richiamata dal frontend. In questa sezione, tenterai di connetterti al backend dall'istanza del server di frontend.

  1. Nell'elenco Istanze server virtuali, recuperare l'indirizzo IP flottante dell'host del server bastion (vpc-secure-bastion ) e gli indirizzi IP privati delle istanze server frontend (vpc-pubpriv-frontend-vsi ) e backend (vpc-pubpriv-backend-vsi ).

  2. Utilizza ssh per connetterti al server virtuale di frontend:

    ssh -J root@<floating-ip-address-of-the-bastion-vsi> root@<private-ip-address-of-the-frontend-vsi>
    

    SSH al frontend è possibile solo tramite il bastion e solo quando vpc-secure-maintenance-sg è stato collegato all'istanza di frontend.

  3. Chiama il server web di backend:

    curl -v -m 30 http://<private-ip-address-of-the-backend-vsi>
    

    Dopo 30 secondi, la chiamata dovrebbe andare in timeout. In effetti, il gruppo di sicurezza per il server di backend non è stato ancora configurato e non consente alcuna connessione in entrata.

Configura il gruppo di sicurezza per il backend

Per consentire le connessioni in entrata al server di backend, devi configurare il gruppo di sicurezza associato.

  1. Passa a Security groups nella sezione Network, poi fai clic su vpc-pubpriv-backend-sg.

  2. Fai clic sulla scheda Rules e sotto Inbound rules fai clic su Create. Aggiungere la regola seguente.

    Regole in entrata
    Protocollo Tipo origine Origine Valore Descrizione
    TCP Gruppo di protezione vpc - pubpriv - frontend - sg Porte 80-80 Questa regola consente le connessioni in entrata sulla porta 80 dal server di frontend al server di backend.

Conferma la connettività

  1. Chiama il server web di backend dal server di frontend:
    curl -v -m 30 http://<private-ip-address-of-the-backend-vsi>
    
  2. La richiesta viene restituita rapidamente ed emette il messaggio I'm the backend server dal server web di backend. Questo completa la configurazione della connettività tra i server.

Completa la manutenzione

Con il software del server di frontend e di backend correttamente installato e funzionante, è possibile rimuovere i server dal gruppo di sicurezza di manutenzione.

  1. Passa a Security groups nella sezione Network, quindi fai clic su vpc-secure-maintenance-sg.
  2. Selezionare Risorse collegate.
  3. Fare clic su Modifica interfacce, espandere e deselezionare le interfacce vpc-pubpriv-frontend-vsi e vpc-pubpriv-backend-vsi.
  4. Salva la configurazione.
  5. Accedere nuovamente all'istanza di frontend all'indirizzo http://<floating-ip-address-of-the-frontend-vsi> per verificare che funzioni ancora come previsto.

Una volta rimossi i server dal gruppo di manutenzione, non è più possibile accedervi con ssh. Consentiranno solo il traffico verso i loro server web.

In questa esercitazione, hai distribuito due livelli di un'applicazione, un server di frontend visibile da Internet pubblico e un server di backend accessibile solo nel VPC dal server di frontend. Hai configurato le regole del gruppo di sicurezza per garantire che al traffico siano consentite solo le porte specifiche richieste dall'applicazione.

Rimuovi le risorse

  1. Nel sito Console dell'infrastruttura VPC, fare clic su IP fluttuanti sotto Rete, poi sull'indirizzo IP dei VSI, quindi nel menu di azione selezionare Rilascio. Conferma che vuoi rilasciare l'indirizzo IP.
  2. Passa quindi a Virtual server instances, Stop e Delete le tue istanze facendo clic sul rispettivo menu delle azioni.
  3. Una volta terminato con le VSI, passa a Subnets. Se la sottorete ha un gateway pubblico collegato, fai clic sul nome della sottorete. Nei dettagli della sottorete, scollega il gateway pubblico. Le sottoreti senza gateway pubblico possono essere eliminate dalla pagina della panoramica. Elimina le tue sottoreti.
  4. Dopo aver eliminato le sottoreti, passare alla scheda VPC ed eliminare la VPC.

Quando utilizzi la console, potresti dover aggiornare il tuo browser per vedere le informazioni sullo stato aggiornate dopo l'eliminazione di una risorsa.