Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Eseguire il deployment di un'app in GKE e visualizzare gli insight sulla sicurezza

Scopri come eseguire il deployment di un container vulnerabile intenzionalmente in un cluster GKE e ottieni insight sulla sicurezza nella vulnerabilità nella dashboard sulla strategia di sicurezza. La dashboard della strategia di strategia di sicurezza GKE mostra informazioni sulle vulnerabilità dei sistemi operativi note. 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 utilizzando Cloud Build.
  • Creare una pipeline di distribuzione in Google Cloud Deploy.
  • Eseguire il deployment dell'applicazione in un cluster GKE temporaneo e promuoverla in un cluster di produzione.
  • Visualizza insight sulle vulnerabilità nell'applicazione di cui hai eseguito il deployment utilizzando la dashboard per la strategia di strategia di sicurezza nella console Google Cloud.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Installa e inizializza Google Cloud CLI.
  3. Crea o seleziona un progetto Google Cloud.

    • Creare un progetto Cloud:

      gcloud projects create PROJECT_ID
    • Seleziona il progetto Cloud che hai creato:

      gcloud config set project PROJECT_ID
  4. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

  5. Abilita le API Artifact Registry, Cloud Build, Google Cloud Deploy, Google Kubernetes Engine, Container Security, and Container Analysis.

    gcloud services enable artifactregistry.googleapis.comcloudbuild.googleapis.comclouddeploy.googleapis.comcontainer.googleapis.comcontainersecurity.googleapis.com containeranalysis.googleapis.com
  6. Installa e inizializza Google Cloud CLI.
  7. Crea o seleziona un progetto Google Cloud.

    • Creare un progetto Cloud:

      gcloud projects create PROJECT_ID
    • Seleziona il progetto Cloud che hai creato:

      gcloud config set project PROJECT_ID
  8. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

  9. Abilita le API Artifact Registry, Cloud Build, Google Cloud Deploy, Google Kubernetes Engine, Container Security, and Container Analysis.

    gcloud services enable artifactregistry.googleapis.comcloudbuild.googleapis.comclouddeploy.googleapis.comcontainer.googleapis.comcontainersecurity.googleapis.com containeranalysis.googleapis.com

Al termine di questo tutorial, puoi evitare una fatturazione continua eliminando le risorse che hai creato. Per scoprire di più, vedi Pulizia.

prepara l'ambiente

  1. Imposta l'ID progetto come variabile di ambiente:

    export PROJECT_ID=$(gcloud config get project)
    
  2. Imposta la regione Google Cloud predefinita per Google Cloud Deploy:

    gcloud config set deploy/region us-central1
    
  3. Clona il repository GitHub che contiene il codice di esempio per questa attività:

    git clone https://github.com/googlecloudplatform/software-delivery-shield-demo-java.git
    cd ~/software-delivery-shield-demo-java/backend
    
  4. Crea un account di servizio IAM per il tuo GKE

    cluster da utilizzare:

    gcloud iam service-accounts create sds-runtime \
        --display-name="SDS with GKE service account"
    
  5. 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"
    
  6. Concedi all'account di servizio Compute Engine predefinito l'accesso ai cluster GKE. Google Cloud Deploy utilizza questo accesso per eseguire il deployment delle app nei cluster nella 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

  1. Crea il repository:

    gcloud artifacts repositories create containers \
        --repository-format=docker \
        --location=us-central1 \
        --description="SDS with GKE repository"
    
  2. 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

Crea due cluster GKE, un cluster temporaneo denominato dev-cluster e un cluster di produzione denominato prod-cluster e abilita l'analisi delle vulnerabilità su entrambi i cluster:

gcloud beta container clusters create-auto dev-cluster \
    --region=us-central1 \
    --release-channel=rapid \
    --service-account=sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \
    --enable-workload-vulnerability-scanning
gcloud beta container clusters create-auto prod-cluster \
    --region=us-central1 \
    --release-channel=rapid \
    --service-account=sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \
    --enable-workload-vulnerability-scanning

La creazione del cluster può richiedere fino a cinque minuti. Puoi anche abilitare l'analisi delle vulnerabilità dei carichi di lavoro utilizzando la console Google Cloud e 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

Al completamento della build, l'output è 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 Google Cloud Deploy

  1. Aggiorna il file di configurazione di Google Cloud Deploy con il tuo ID progetto:

    sed -i "s/PROJECT_ID/${PROJECT_ID}/g" clouddeploy.yaml
    
  2. Registra la pipeline e i target:

    gcloud deploy apply --file=clouddeploy.yaml
    
  3. Per verificare l'esistenza della pipeline, vai alla pagina Pipeline di distribuzione in Google Cloud Console:

    Vai a Pipeline di distribuzione

    L'elenco delle pipeline visualizza la tua nuova pipeline, guestbook-app-delivery.

  4. Fai clic sul nome della pipeline per monitorare l'avanzamento. Viene visualizzata la pagina Dettagli della pipeline di distribuzione.

  5. Crea una nuova release in Google 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 Release nella pagina Dettagli pipeline di distribuzione.

  6. Nella pagina Dettagli pipeline di distribuzione, monitora la visualizzazione Visualizzazione pipeline finché non viene visualizzato il pulsante Promuovi per dev-cluster. Potresti dover aggiornare la pagina.

  7. Fai clic su Promuovi nella visualizzazione dev-cluster.

  8. Nel riquadro Promuovi release, fai clic su Promuovi per confermare la promozione nel tuo cluster di produzione.

  9. Per verificare che la release sia andata a buon fine, controlla la sezione Uscite. Nella colonna Stato ultima implementazione è visualizzato Successfully deployed to prod-cluster.

Visualizza vulnerabilità

In questa sezione, potrai visualizzare gli insight sulle vulnerabilità del sistema operativo utilizzando la dashboard della strategia di strategia di sicurezza. La dashboard visualizza informazioni sulle vulnerabilità nei carichi di lavoro in esecuzione dopo il deployment nei cluster.

  1. Vai alla pagina Sicurezza in Google Cloud Console.

    Vai a Postura di sicurezza

  2. Per visualizzare i risultati della scansione, aggiorna la pagina. La scansione iniziale può richiedere fino a 15 minuti.

  3. Nella pagina Livello di sicurezza, consulta la sezione Vulnerabilità relative alla gravità. Questa sezione elenca i principali CVE che interessano il tuo carico di lavoro di cui hai eseguito il deployment.

  4. Per informazioni dettagliate, fai clic su Vedi tutti i problemi di vulnerabilità. Si apre la scheda Problemi e viene applicato un filtro per il tipo di problema Vulnerabilità. La tabella mostra una panoramica di ciascuna vulnerabilità e del suo impatto.

  5. Per informazioni dettagliate su una vulnerabilità specifica, fai clic sul nome del problema nella tabella. Viene visualizzato il riquadro Vulnerabilità. In questo riquadro puoi:

    • Leggi una descrizione dettagliata del CVE, che include le versioni interessate, i pacchetti e il punteggio CVSS.
    • Visualizza le azioni consigliate per risolvere il problema, ad esempio informazioni sulla documentazione e sulla versione della 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 Cloud con le risorse.

Elimina singole risorse

  1. Elimina la pipeline di Google Cloud Deploy:

    gcloud deploy delivery-pipelines delete guestbook-app-delivery --force
    
  2. Elimina i cluster GKE:

    gcloud container clusters delete dev-cluster \
        --region=us-central1
    gcloud container clusters delete prod-cluster \
        --region=us-central1
    
  3. Elimina il repository Artifact Registry:

    gcloud artifacts repositories delete containers \
        --location=us-central1
    
  4. Elimina l'account di servizio IAM:

    gcloud iam service-accounts delete sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
    

Elimina il progetto

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

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi 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.

Passaggi successivi