Esegui il deployment di un'app in GKE e visualizza gli insight sulla sicurezza

Scopri come eseguire il deployment di un container intenzionalmente vulnerabile cluster GKE e ottieni insight sulla sicurezza relativi alla vulnerabilità la dashboard della security posture. La dashboard della postura di sicurezza di GKE mostra informazioni sulle vulnerabilità note del sistema operativo. Se vuoi eseguire anche la scansione linguistica per rilevare le vulnerabilità in Go o per i pacchetti Java, fai riferimento Crea un'applicazione e visualizza insight sulla sicurezza.

Obiettivi

  • Crea ed esegui il push di un'applicazione containerizzata in Artifact Registry utilizzando in Cloud Build.
  • Crea una pipeline di distribuzione in Cloud Deploy.
  • Esegui il deployment dell'applicazione in un cluster GKE di staging e promuovila in un cluster di produzione.
  • Visualizza insight sulle vulnerabilità nell'applicazione di cui è stato eseguito il deployment utilizzando il nella dashboard della strategia di sicurezza nella console Google Cloud.

Prima di iniziare

  1. 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.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. 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.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. 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
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. 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.

  10. Make sure that billing is enabled for your Google Cloud project.

  11. 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

Una volta completate le attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la pagina 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 Cloud Deploy:

    gcloud config set deploy/region us-central1
    
  3. Clona il repository GitHub contenente 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 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 a cluster GKE. Cloud Deploy utilizza questo accesso per eseguire il deployment delle app nei cluster della 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 di gestione temporanea denominato dev-cluster e un cluster di produzione denominato prod-cluster. In Autopilot, l'analisi delle vulnerabilità dei carichi di lavoro viene abilitata automaticamente per i nuovi cluster in esecuzione versione 1.27 e successive. Se utilizzi un cluster 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 attivare 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

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 Cloud Deploy

  1. Aggiorna il file di configurazione di 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 tua pipeline, vai alla pagina Pipeline di distribuzione nella console Google Cloud:

    Vai alle pipeline di pubblicazione

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

  4. Fai clic sul nome della pipeline per monitorare l'avanzamento. La pipeline di distribuzione dei dettagli.

  5. 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 scheda Pubblicazione dei dettagli della pipeline.

  6. Nella pagina Dettagli pipeline di distribuzione, monitora la pipeline di visualizzazione finché non viene visualizzato il pulsante Promuovi 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. al tuo cluster di produzione.

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

Visualizza vulnerabilità

In questa sezione, visualizza gli insight sulle vulnerabilità del sistema operativo utilizzando la dashboard della security posture. Nella dashboard vengono visualizzate informazioni su le vulnerabilità nei carichi di lavoro in esecuzione dopo il deployment cluster.

  1. Vai alla pagina Postura di sicurezza GKE nella console Google Cloud.

    Vai alla postura di sicurezza di GKE

  2. Per visualizzare i risultati della scansione, aggiorna la pagina. La scansione iniziale potrebbe richiedere fino a 15 minuti per il completamento.

  3. Nella pagina Postura di sicurezza di GKE, esamina il Sezione Vulnerabilità del sistema operativo per il carico di lavoro. Questa sezione elenca i principali CVE che interessano il carico di lavoro di cui è stato eseguito il deployment.

  4. 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 ciascuna vulnerabilità e del suo impatto.

  5. Per i dettagli su una vulnerabilità specifica, fai clic sul nome del problema in nella tabella. Si apre il riquadro Vulnerabilità. In questo riquadro puoi eseguire seguenti:

    • Leggi una descrizione dettagliata della CVE, incluse le versioni interessate, e il punteggio CVSS.
    • Visualizza le azioni consigliate per attenuare il problema, ad esempio la documentazione e informazioni 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 per le risorse utilizzate in questa pagina, elimina il progetto Google Cloud Google Cloud.

Elimina singole risorse

  1. Elimina la pipeline di 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 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.

Passaggi successivi