Esegui il deployment su Cloud Run e visualizza gli insight sulla sicurezza

Questa guida rapida spiega come eseguire il deployment di un'immagine container in Cloud Run e come visualizzare gli insight sulla sicurezza per il deployment nel riquadro Sicurezza di Software Delivery Shield nella console Google Cloud. Imparerai a:

  • Esegui il deployment di un'immagine in Cloud Run utilizzando Cloud Deploy. Cloud Deploy è un servizio Google Cloud che automatizza la distribuzione delle tue applicazioni in una serie di ambienti di destinazione in una sequenza di promozione definita.
  • Visualizza i seguenti insight sulla sicurezza per il deployment:

    • Informazioni su identità e crittografia per il deployment.
    • Supply-chain Levels for Software Artifacts (SLSA), che identifica il livello di garanzia del deployment.
    • Vulnerabilità negli artefatti della build.
    • Fattura software (SBOM) per gli elementi della build.
    • Provenienza build, ovvero una raccolta di metadati verificabili relativi a una build. Include dettagli come le sintesi delle immagini create, le località delle origini di input, la Toolchain di build, i passi di build e la durata della build.

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 Google Cloud CLI.
  3. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  4. Crea o seleziona un progetto Google Cloud.

    • Crea un progetto Google Cloud:

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il progetto Google Cloud che stai creando.

    • Seleziona il progetto Google Cloud che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del tuo progetto Google Cloud.

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  6. Abilita le API Cloud Build, Artifact Registry, Cloud Deploy, Cloud Run, and Container Scanning.

    gcloud services enable cloudbuild.googleapis.com  artifactregistry.googleapis.com  clouddeploy.googleapis.com  run.googleapis.com  containerscanning.googleapis.com
  7. Installa Google Cloud CLI.
  8. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  9. Crea o seleziona un progetto Google Cloud.

    • Crea un progetto Google Cloud:

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il progetto Google Cloud che stai creando.

    • Seleziona il progetto Google Cloud che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del tuo progetto Google Cloud.

  10. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  11. Abilita le API Cloud Build, Artifact Registry, Cloud Deploy, Cloud Run, and Container Scanning.

    gcloud services enable cloudbuild.googleapis.com  artifactregistry.googleapis.com  clouddeploy.googleapis.com  run.googleapis.com  containerscanning.googleapis.com

Configura le impostazioni predefinite

  1. Imposta una variabile di ambiente per l'ID progetto:

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

    gcloud config set deploy/region us-central1
    

Concedi l'accesso

Concedi ruoli IAM all'account di servizio Compute Engine predefinito. Questo è necessario per consentire a Cloud Deploy di eseguire il deployment dei carichi di lavoro in Cloud Run.

 gcloud projects add-iam-policy-binding $PROJECT_ID \
     --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \
     --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
     --role="roles/clouddeploy.jobRunner"
 gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe $PROJECT_ID \
     --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
     --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \
     --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
     --role="roles/iam.serviceAccountUser" \
     --project=$PROJECT_ID
 gcloud projects add-iam-policy-binding $PROJECT_ID \
     --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \
     --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
     --role="roles/run.developer"

Se hai difficoltà ad aggiungere uno di questi ruoli, contatta l'amministratore del progetto.

Crea un repository Docker in Artifact Registry

  1. Crea un nuovo repository Docker denominato containers nella località us-central1 con la descrizione "Docker repository" (Repository Docker):

    gcloud artifacts repositories create containers --repository-format=docker \
        --location=us-central1 --description="Docker repository"
    
  2. Verifica che il repository sia stato creato:

    gcloud artifacts repositories list
    

    Dovresti vedere containers nell'elenco dei repository visualizzati.

Prepara l'applicazione di esempio

Per creare ed eseguire il deployment, ti servirà del codice sorgente di esempio. In questa sezione clonirai un repository di codice sorgente esistente contenente un esempio di codice Java.

  1. Clona il repository che contiene l'esempio di codice Java:

    git clone https://github.com/googlecloudplatform/software-delivery-shield-demo-java.git
    cd software-delivery-shield-demo-java/backend
    
  2. Aggiorna cloudrun.clouddeploy.yaml per sostituire PROJECT_ID con l'ID progetto:

    sed -i "s/PROJECT_ID/${PROJECT_ID}/g" cloudrun.clouddeploy.yaml
    

Crea l'applicazione

  1. Crea e containerizza l'applicazione Java utilizzando Cloud Build. Il comando seguente crea e containerizza l'applicazione Java e archivia il container creato nel repository Docker di Artifact Registry:

    gcloud builds submit --config=cloudbuild.yaml --region=us-central1
    

    Al termine della build, viene visualizzato un messaggio di stato di operazione riuscita simile al seguente:

    DONE
    -----------------------------------------------------------------------------
    ID: 3e08565f-7f57-4449-bc68-51c46cf33d03
    CREATE_TIME: 2022-09-19T15:41:07+00:00
    DURATION: 54S
    SOURCE: gs://sds-docs-project_cloudbuild/source/1663602066.777581-6ebe4b2d6fd741ffa18936d7f78055e9.tgz
    IMAGES: us-central1-docker.pkg.dev/sds-docs-project/containers/java-guestbook-backend:quickstart
    STATUS: SUCCESS
    

Genera SBOM per l'immagine creata

Un SBOM è un inventario completo di un'applicazione, che identifica i pacchetti su cui si basa il tuo software. I contenuti possono includere software di terze parti di fornitori, artefatti interni e librerie open source.

Genera l'SBOM per l'immagine che hai creato nella sezione precedente:

gcloud artifacts sbom export
    --uri=us-central1-docker.pkg.dev/${PROJECT_ID}/containers/java-guestbook-backend:quickstart

Esegui il deployment del container su Cloud Run utilizzando Cloud Deploy

  1. Registra la tua pipeline e i tuoi target con il servizio Cloud Deploy:

    gcloud deploy apply --file cloudrun.clouddeploy.yaml
    

    Ora hai una pipeline con destinazioni pronta per eseguire il deployment dell'applicazione nella tua prima destinazione.

  2. Per verificare l'esistenza della pipeline, vai alla pagina pipeline di distribuzione nella console Google Cloud:

    Apri la pagina Pipeline di distribuzione

    Viene visualizzata la pipeline di distribuzione appena creata cloudrun-guestbook-backend-delivery.

  3. Fai clic su cloudrun-guestbook-backend-delivery per monitorare l'avanzamento. Viene visualizzata la pagina Dettagli pipeline di distribuzione.

  4. In Cloud Shell, crea una release in Cloud Deploy:

    gcloud deploy releases create test-release-007 \
        --delivery-pipeline=cloudrun-guestbook-backend-delivery \
        --skaffold-file=cloudrun.skaffold.yaml \
        --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.

  5. Monitora la visualizzazione Visualizzazione pipeline nella pagina Dettagli della pipeline di pubblicazione fino a quando non viene visualizzato il pulsante Promuovi per dev-cluster. Potrebbe essere necessario aggiornare la pagina.

  6. Sul primo target nella visualizzazione della pipeline di distribuzione, cloudrun-dev, fai clic su Promuovi.

    Viene visualizzata la finestra di dialogo Promuovi release. Mostra i dettagli del target che stai promuovendo.

  7. Fai clic su Promuovi.

    La release è ora in coda per il deployment in cloudrun-prod. Una volta completato il deployment, la visualizzazione della pipeline di distribuzione lo mostra come deployment:

    Screenshot dell'implementazione

Visualizza insight sulla sicurezza in Cloud Deploy

  1. Apri la pagina pipeline di distribuzione di Cloud Deploy nella console Google Cloud.

    Apri la pagina di Cloud Deploy

  2. Nella tabella pipeline di distribuzione, fai clic su cloudrun-guestbook-backend-delivery.

  3. Nella pagina Dettagli delle pipeline di pubblicazione, fai clic su test-release-008.

  4. Nella pagina Dettagli sulla release, fai clic sulla scheda Elementi.

  5. Nella tabella Artefatti build, individua la riga con l'elemento java-guestbook-backend e fai clic su Visualizza nella colonna Approfondimenti sulla sicurezza corrispondente.

Viene visualizzato il riquadro Sicurezza di Software Delivery Shield per l'implementazione.

Screenshot del riquadro di sicurezza

Questo riquadro mostra le seguenti informazioni:

  • Livello SLSA: questa build ha raggiunto il livello SLSA 3. Fai clic sul link Scopri di più per scoprire il significato di questo livello di sicurezza.

  • Vulnerabilità: qualsiasi vulnerabilità trovata negli artefatti. Fai clic sul nome dell'immagine (java-guestbook-backend) per visualizzare gli artefatti che sono stati analizzati per rilevare eventuali vulnerabilità.

  • Dipendenze per gli artefatti della build.

  • Dettagli build: dettagli della build come il generatore e il link per visualizzare i log.

Visualizza insight sulla sicurezza in Cloud Run

  1. Apri la pagina Servizi di Cloud Run.

    Apri la pagina dei servizi Cloud Run

  2. Nella tabella Servizi di Cloud Run, fai clic su guestbook-backend-prod.

  3. Nella pagina Dettagli servizio, fai clic su Revisioni.

  4. Nel riquadro Revisioni, fai clic su Sicurezza.

Viene visualizzato il riquadro Sicurezza di Software Delivery Shield per l'implementazione.

Screenshot del riquadro di sicurezza

Questo riquadro mostra le seguenti informazioni:

  • Identità e crittografia:l'indirizzo email dell'account di servizio Compute Engine predefinito e la chiave di crittografia utilizzata per il deployment.

  • Livello SLSA: questa build ha raggiunto il livello SLSA 3. Fai clic sul link Scopri di più per scoprire il significato di questo livello di sicurezza.

  • Vulnerabilità: qualsiasi vulnerabilità trovata negli artefatti. Fai clic sul nome dell'immagine (java-guestbook-backend) per visualizzare gli artefatti che sono stati analizzati per rilevare eventuali vulnerabilità.

  • Dipendenze per gli artefatti della build.

  • Dettagli build: dettagli della build come il generatore e il link per visualizzare i log.

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.

  1. Disabilita l'API Container Scanning:

    gcloud services disable containerscanning.googleapis.com --force
    
  2. Elimina il servizio Cloud Run guestbook-backend-dev:

    gcloud run services delete guestbook-backend-dev --region=us-central1 \
        --project=${PROJECT_ID}
    
  3. Elimina il servizio guestbook-backend-prod:

    gcloud run services delete guestbook-backend-prod --region=us-central1 \
        --project=${PROJECT_ID}
    
  4. Elimina la pipeline di distribuzione, inclusi release e implementazioni:

    gcloud deploy delivery-pipelines delete cloudrun-guestbook-backend-delivery \
        --force --region=us-central1 --project=${PROJECT_ID}
    

    Questo comando elimina la pipeline di distribuzione stessa, oltre a tutte le risorse release e rollout Sicurezza della catena di fornitura del software creata per la pipeline.

  5. Elimina il repository Artifact Registry:

    gcloud artifacts repositories delete containers \
        --location=us-central1 --async
    

È tutto. Hai completato questa guida rapida.

Passaggi successivi