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

Questa guida rapida spiega come eseguire il deployment di un'immagine container su Cloud Run e visualizzare gli insight sulla sicurezza per il deployment nella scheda Sicurezza della consoleGoogle Cloud . Imparerai a:

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

    • Informazioni su identità e crittografia per il deployment.
    • Livello Supply-chain Levels for Software Artifacts (SLSA), che identifica il livello di garanzia per il deployment.
    • Vulnerabilità negli artefatti della build.
    • Software Bill of Materials (SBOM) per gli artefatti di build.
    • Provenienza della build, ovvero una raccolta di metadati verificabili su una build. Include dettagli come i digest delle immagini create, le posizioni delle origini di input, la toolchain di build, i passaggi di build e la durata della build.

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. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere alla gcloud CLI con la tua identità federata.

  4. Per inizializzare gcloud CLI, esegui questo comando:

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

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Cloud Build, Artifact Registry, Cloud Deploy, Cloud Run, and Container Scanning APIs:

    gcloud services enable cloudbuild.googleapis.com  artifactregistry.googleapis.com  clouddeploy.googleapis.com  run.googleapis.com  containerscanning.googleapis.com
  8. Install the Google Cloud CLI.

  9. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere alla gcloud CLI con la tua identità federata.

  10. Per inizializzare gcloud CLI, esegui questo comando:

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

  12. Verify that billing is enabled for your Google Cloud project.

  13. Enable the Cloud Build, Artifact Registry, Cloud Deploy, Cloud Run, and Container Scanning APIs:

    gcloud services enable cloudbuild.googleapis.com  artifactregistry.googleapis.com  clouddeploy.googleapis.com  run.googleapis.com  containerscanning.googleapis.com
  14. Impostare 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 al service account Compute Engine predefinito. Questo è necessario per Cloud Deploy per 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, avrai bisogno di un codice sorgente di esempio. In questa sezione, clonerai un repository di origine esistente contenente un esempio di codice Java.

    1. Clona il repository che contiene il 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 seguente comando 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 la SBOM per l'immagine creata

    Una 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 la SBOM per l'immagine creata 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 pipeline e i target con il servizio Cloud Deploy:

      gcloud deploy apply --file cloudrun.clouddeploy.yaml
      

      Ora hai una pipeline con target, pronta per il deployment della tua applicazione nel primo target.

    2. Per verificare che la pipeline esista, vai alla pagina Pipeline di distribuzione nella console Google Cloud :

      Apri la pagina Pipeline di distribuzione

      Viene visualizzata la pipeline di distribuzione che hai appena creato, cloudrun-guestbook-backend-delivery.

    3. Fai clic su cloudrun-guestbook-backend-delivery per monitorare l'avanzamento. Viene visualizzata la pagina Dettagli della 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 Release della pagina Dettagli pipeline di distribuzione.

    5. Monitora la visualizzazione Visualizzazione delle pipeline nella pagina Dettagli pipeline di distribuzione finché non viene visualizzato il pulsante Promuovi per dev-cluster. Potresti dover aggiornare la pagina.

    6. Nella prima destinazione della visualizzazione della pipeline di pubblicazione, cloudrun-dev, fai clic su Promuovi.

      Viene visualizzata la finestra di dialogo Promuovi release. Mostra i dettagli della destinazione che stai promuovendo.

    7. Fai clic su Promuovi.

      La release è ora in coda per il deployment in cloudrun-prod. Al termine del deployment, la visualizzazione della pipeline di pubblicazione mostra lo stato come deployment eseguito:

      Pipeline che mostra la promozione da cloudrun-dev a cloudrun-prod

    Visualizzare gli insight sulla sicurezza in Cloud Deploy

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

      Apri la pagina Cloud Deploy

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

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

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

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

    Viene visualizzata la scheda Sicurezza per l'implementazione.

    Scheda Sicurezza

    Questa scheda mostra le seguenti informazioni nella sezione Approfondimenti sulla sicurezza:

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

    • Vulnerabilità:eventuali vulnerabilità trovate negli artefatti. Fai clic sul nome dell'immagine (java-guestbook-backend) per visualizzare gli artefatti scansionati per rilevare le vulnerabilità.

    • Dipendenze per gli artefatti della build.

    • Dettagli build:dettagli della build, ad esempio il builder e il link per visualizzare i log.

    Visualizza gli insight sulla sicurezza in Cloud Run

    1. Apri la pagina Servizi di Cloud Run.

      Apri la pagina Servizi Cloud Run

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

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

    4. Nel riquadro Revisioni, fai clic su Sicurezza.

    Viene visualizzata la scheda Sicurezza per l'implementazione.

    Scheda Sicurezza

    Questa scheda mostra le seguenti informazioni nella sezione Approfondimenti sulla sicurezza:

    • Identità e crittografia:l'indirizzo email del account di servizio predefinito di Compute Engine 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 cosa significa questo livello di sicurezza.

    • Vulnerabilità:eventuali vulnerabilità trovate negli artefatti. Fai clic sul nome dell'immagine (java-guestbook-backend) per visualizzare gli artefatti scansionati per rilevare le vulnerabilità.

    • Dipendenze per gli artefatti della build.

    • Dettagli build:dettagli della build, ad esempio il builder 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 la release e i rollout:

      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 create da Software supply chain security per quella pipeline.

    5. Elimina il repository Artifact Registry:

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

    Ecco fatto, hai completato questa guida rapida.

    Passaggi successivi