Eseguire il deployment di un'app in GKE e visualizzare gli insight sulla sicurezza
Scopri come eseguire il deployment di un container intenzionalmente vulnerabile in un cluster GKE e ottieni insight sulla sicurezza sulla vulnerabilità nella dashboard della postura di sicurezza. La dashboard della strategia di sicurezza di GKE mostra informazioni sulle vulnerabilità note del sistema operativo. Se vuoi anche l'analisi del linguaggio per rilevare le vulnerabilità nei pacchetti Go o Java, consulta Creare un'applicazione e visualizzare gli insight sulla sicurezza.
Obiettivi
- Crea ed esegui il push di un'applicazione containerizzata in Artifact Registry mediante Cloud Build.
- Creare una pipeline di distribuzione in Cloud Deploy.
- Eseguire il deployment dell'applicazione in un cluster GKE di gestione temporanea e promuoverla in cluster di produzione.
- Visualizza insight sulle vulnerabilità nell'applicazione di cui è stato eseguito il deployment utilizzando la dashboard della postura di sicurezza nella console Google Cloud.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Deploy, Google Kubernetes Engine, Container Security, and Container Analysis APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com clouddeploy.googleapis.com container.googleapis.com containersecurity.googleapis.com containeranalysis.googleapis.com - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Deploy, Google Kubernetes Engine, Container Security, and Container Analysis APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com clouddeploy.googleapis.com container.googleapis.com containersecurity.googleapis.com containeranalysis.googleapis.com
Al termine delle attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la sezione Pulizia.
prepara l'ambiente
Imposta l'ID progetto come variabile di ambiente:
export PROJECT_ID=$(gcloud config get project)
Imposta la regione Google Cloud predefinita per Cloud Deploy:
gcloud config set deploy/region us-central1
Clona il repository GitHub che contiene il codice campione per questa attività:
git clone https://github.com/googlecloudplatform/software-delivery-shield-demo-java.git cd ~/software-delivery-shield-demo-java/backend
Crea un account di servizio IAM per GKE
i cluster da utilizzare:
gcloud iam service-accounts create sds-runtime \ --display-name="SDS with GKE service account"
Concedi le autorizzazioni all'account di servizio IAM:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/container.nodeServiceAccount" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/clouddeploy.jobRunner" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/container.developer" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/artifactregistry.reader"
Concedi all'account di servizio Compute Engine predefinito l'accesso ai cluster GKE. Cloud Deploy utilizza questo accesso per eseguire il deployment delle app nei cluster nella tua pipeline di distribuzione.
PROJECT_NUMBER="$(gcloud projects describe ${PROJECT_ID} --format='get(projectNumber)')" gcloud projects add-iam-policy-binding ${PROJECT_NUMBER} \ --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \ --role=roles/container.developer
Crea il repository Artifact Registry per la tua immagine
Crea il repository:
gcloud artifacts repositories create containers \ --repository-format=docker \ --location=us-central1 \ --description="SDS with GKE repository"
Verifica che il repository esista:
gcloud artifacts repositories list \ --location=us-central1 \ --filter="REPOSITORY:containers"
L'output mostra il repository
containers
che hai creato.
crea i cluster GKE
Creare due cluster GKE, uno di gestione temporanea denominato dev-cluster
e un cluster di produzione denominato prod-cluster
. In Autopilot, l'analisi delle vulnerabilità del carico di lavoro viene abilitata automaticamente per i nuovi cluster che eseguono la versione 1.27 e successive. Se utilizzi un cluster Standard, specifica il flag --workload-vulnerability-scanning=standard
.
gcloud container clusters create-auto dev-cluster \
--region=us-central1 \
--release-channel=rapid \
--service-account=sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
gcloud container clusters create-auto prod-cluster \
--region=us-central1 \
--release-channel=rapid \
--service-account=sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
La creazione del cluster può richiedere fino a cinque minuti. Puoi anche abilitare l'analisi delle vulnerabilità dei carichi di lavoro aggiornando i cluster GKE esistenti.
Crea l'immagine
Crea e invia l'immagine utilizzando Cloud Build:
gcloud builds submit --region us-central1 --config cloudbuild.yaml
Una volta completata la build, l'output sarà simile al seguente:
DONE
-----------------------------------------------------------------------------
ID: 3e23094f-7f57-4449-bc68-51c37hn34d03
CREATE_TIME: 2022-09-19T15:41:07+00:00
DURATION: 54S
SOURCE: gs://my-project_cloudbuild/source/1663602066.777581-6ebe4b2d6fd741ffa18936d7f.tgz
IMAGES: us-central1-docker.pkg.dev/PROJECT_ID/containers/java-guestbook-backend:quickstart
STATUS: SUCCESS
Esegui il deployment dell'immagine in GKE utilizzando Cloud Deploy
Aggiorna il file di configurazione di Cloud Deploy con il tuo ID progetto:
sed -i "s/PROJECT_ID/${PROJECT_ID}/g" clouddeploy.yaml
Registra la pipeline e i target:
gcloud deploy apply --file=clouddeploy.yaml
Per verificare l'esistenza della pipeline, vai alla pagina Pipeline di distribuzione nella console Google Cloud:
Vai a Pipeline di distribuzione
L'elenco delle pipeline mostra la nuova pipeline,
guestbook-app-delivery
.Fai clic sul nome della pipeline per monitorare l'avanzamento. Si apre la pagina Dettagli della pipeline di distribuzione.
Crea una nuova release in Cloud Deploy:
gcloud deploy releases create guestbook-release-001 \ --delivery-pipeline=guestbook-app-delivery \ --images=java-guestbook-backend=us-central1-docker.pkg.dev/${PROJECT_ID}/containers/java-guestbook-backend:quickstart
La nuova release viene visualizzata nella sezione Uscite della pagina Dettagli pipeline di pubblicazione.
Nella pagina Dettagli pipeline di pubblicazione, monitora la visualizzazione Visualizzazione pipeline fino a quando non viene visualizzato il pulsante Promuovi per
dev-cluster
. Potresti dover aggiornare la pagina.Fai clic su Promuovi nella visualizzazione
dev-cluster
.Nel riquadro Promuovi release, fai clic su Promuovi per confermare la promozione nel cluster di produzione.
Per verificare l'esito positivo della release, controlla la sezione Release. La colonna Stato ultima implementazione mostra
Successfully deployed to prod-cluster
.
Visualizza vulnerabilità
In questa sezione puoi visualizzare gli insight sulle vulnerabilità del sistema operativo utilizzando la dashboard della postura di sicurezza. La dashboard mostra informazioni sulle vulnerabilità nei carichi di lavoro in esecuzione dopo che ne hai eseguito il deployment nei cluster.
Vai alla pagina Postura di sicurezza di GKE nella console Google Cloud.
Per visualizzare i risultati della scansione, aggiorna la pagina. Il completamento della scansione iniziale potrebbe richiedere fino a 15 minuti.
Nella pagina Postura di sicurezza di GKE, rivedi la sezione Vulnerabilità del sistema operativo dei carichi di lavoro. Questa sezione elenca le principali CVE che interessano il carico di lavoro di cui hai eseguito il deployment.
Per maggiori dettagli, fai clic su Visualizza tutti i problemi di vulnerabilità. La scheda Dubbi si apre e applica un filtro per il tipo di problema Vulnerabilità. La tabella mostra una panoramica di ogni vulnerabilità e del relativo impatto.
Per informazioni dettagliate su una vulnerabilità specifica, fai clic sul nome del problema nella tabella. Si apre il riquadro Vulnerabilità. In questo riquadro puoi:
- Leggi una descrizione dettagliata della CVE, inclusi le versioni interessate, i pacchetti e il punteggio CVSS.
- Visualizza le azioni consigliate per attenuare il problema, ad esempio informazioni sulla documentazione e sulla versione delle patch.
- Visualizza i carichi di lavoro specifici interessati dalla vulnerabilità nella scheda Carichi di lavoro interessati.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, elimina il progetto Google Cloud con le risorse.
Elimina singole risorse
Elimina la pipeline di Cloud Deploy:
gcloud deploy delivery-pipelines delete guestbook-app-delivery --force
Elimina i cluster GKE:
gcloud container clusters delete dev-cluster \ --region=us-central1 gcloud container clusters delete prod-cluster \ --region=us-central1
Elimina il repository Artifact Registry:
gcloud artifacts repositories delete containers \ --location=us-central1
Elimina l'account di servizio IAM:
gcloud iam service-accounts delete sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
Elimina il progetto
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Passaggi successivi
- Esegui il deployment di un'app vulnerabile in Cloud Run e visualizza gli insight.
- Crea un'applicazione e visualizza gli approfondimenti sulla sicurezza.
- Scopri di più sulla sicurezza della catena di fornitura del software.
- Scopri di più sulle funzionalità della dashboard della strategia di sicurezza di GKE.