Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.
Guida rapida: deployment su Cloud Run e visualizzazione di insight sulla sicurezza

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

Questa guida rapida spiega come eseguire il deployment di un'immagine container su Cloud Run e visualizzare gli insight di sicurezza per il deployment nel riquadro Security di Security Delivery in Google Cloud Console. Imparerai a:

  • Eseguire il deployment di un'immagine in Cloud Run utilizzando Google Cloud Deploy. Google 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 per la sicurezza del deployment:

    • Informazioni su identità e crittografia per il deployment.
    • Livello di catena di fornitura per gli artefatti software (SLSA), che identifica il livello di garanzia per il deployment.
    • Vulnerabilità negli artefatti della build.
    • Origine della build, ovvero una raccolta di metadati verificabili relativi a una build. Include dettagli come i digest delle immagini build, le posizioni di origine di input, la catena degli strumenti di build, i passi della 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 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 Cloud Build, Artifact Registry, Google 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
  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 Cloud Build, Artifact Registry, Google 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 l'area geografica predefinita per Google Cloud Deploy:

    gcloud config set deploy/region us-central1
    

Concedi l'accesso

Concedi i ruoli IAM all'account di servizio predefinito di Compute Engine. Questo è necessario affinché Google Cloud Deploy possa 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 problemi 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

Ti servirà un codice sorgente di esempio per creare ed eseguire il deployment. In questa sezione clonerai 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. Creare e containerizzare l'applicazione Java utilizzando Cloud Build. Il comando seguente crea e containerizza l'applicazione Java e archivia il container creato nel repository docker 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
    

Esegui il deployment del container su Cloud Run utilizzando Google Cloud Deploy

  1. Registra la pipeline e le destinazioni con il servizio Google Cloud Deploy:

    gcloud deploy apply --file cloudrun.clouddeploy.yaml
    

    Ora hai una pipeline, con target, pronta per il deployment dell'applicazione nel primo target.

  2. Per verificare l'esistenza della pipeline, vai alla pagina Pipeline di distribuzione in Google Cloud Console:

    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 della pipeline di distribuzione.

  4. In Cloud Shell, crea una release in Google 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 nella pagina Dettagli della pipeline di distribuzione.

  5. Monitora la visualizzazione Visualizzazione pipeline nella pagina Dettagli pipeline di distribuzione finché non viene visualizzato il pulsante Promuovi per dev-cluster. Potresti dover 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 per cui fai promozione.

  7. Fai clic su Promuovi.

    La release è ora in coda per il deployment in cloudrun-prod. Al termine del deployment, nella visualizzazione della pipeline di distribuzione viene mostrato il deployment:

    Screenshot del deployment

Visualizza gli insight di sicurezza per il deployment

  1. Apri la pagina Servizi Cloud Run Security di sicurezza della catena di fornitura del software.

    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 visualizzato il riquadro Sicurezza di Software Delivery Shield per il deployment.

Screenshot del riquadro Sicurezza

In questo riquadro vengono visualizzate 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 è al livello 3. Fai clic sul link Scopri di più per comprendere il significato di questo livello di sicurezza.

  • Vulnerabilità:eventuali vulnerabilità rilevate nelle tue dipendenze. Fai clic sul nome dell'immagine (java-guestbook-backend) per vedere gli artefatti scansionati per le dipendenze. Software Delivery Shield mostra i dettagli delle vulnerabilità identificate per consentirti di valutare l'impatto sull'applicazione e i passaggi da seguire per risolverli.

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

  • Origine della build: pertinenza per la build.

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.

  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, incluse 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 di sicurezza della catena di fornitura del software create per la 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