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 visualizzare gli insight sulla sicurezza per il deployment nella scheda Sicurezza della 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 applicazioni in una serie di ambienti di destinazione in una sequenza di promozione definita.
Visualizza i seguenti approfondimenti 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 elementi della build.
- Software Bill of Materials (SBOM) per gli elementi di compilazione.
- La provenienza della build, ovvero una raccolta di metadati verificabili su una build. Sono inclusi dettagli quali 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
- 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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
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 - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
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
Impostare le impostazioni predefinite
Imposta una variabile di ambiente per l'ID progetto:
export PROJECT_ID=$(gcloud config get project)
Imposta la regione predefinita per Cloud Deploy:
gcloud config set deploy/region us-central1
Concedi l'accesso
Concedi i 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
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"
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 la compilazione e 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.
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
Aggiorna
cloudrun.clouddeploy.yaml
sostituendoPROJECT_ID
con l'ID del tuo progetto:sed -i "s/PROJECT_ID/${PROJECT_ID}/g" cloudrun.clouddeploy.yaml
Crea l'applicazione
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 compilazione, viene visualizzato un messaggio di stato di esito positivo 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 compilata
Un SBOM è un inventario completo di un'applicazione che identifica i pacchetti su cui si basa il software. I contenuti possono includere software di terze parti di fornitori, elementi interni e librerie open source.
Genera l'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
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 eseguire il deployment dell'applicazione nel primo target.
Per verificare che la pipeline esista, vai alla pagina Pipeline di distribuzione nella console Google Cloud:
Apri la pagina Pipeline di pubblicazione
Viene visualizzata la pipeline di distribuzione
cloudrun-guestbook-backend-delivery
che hai appena creato.Fai clic su
cloudrun-guestbook-backend-delivery
per monitorare l'avanzamento. Viene visualizzata la pagina Dettagli pipeline di distribuzione.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 sulla pipeline di distribuzione.
Monitora la visualizzazione Visualizzazione delle pipeline nella pagina Dettagli della pipeline di distribuzione finché non viene visualizzato il pulsante Promuovi per
dev-cluster
. Potrebbe essere necessario aggiornare la pagina.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 pubblico di destinazione per il quale stai promuovendo.
Fai clic su Promuovi.
La release è ora in coda per il deployment in
cloudrun-prod
. Al termine del deployment, la visualizzazione della pipeline di importazione lo mostra come di seguito:
Visualizzare gli approfondimenti sulla sicurezza in Cloud Deploy
Apri la pagina Pipeline di distribuzione di Cloud Deploy nella console Google Cloud.
Nella tabella Pipeline di distribuzione, fai clic su cloudrun-guestbook-backend-delivery.
Nella pagina Dettagli pipeline di importazione, fai clic su test-release-008.
Nella pagina Dettagli uscita, fai clic sulla scheda Artefatti.
Nella tabella Artefatti build, individua la riga con l'artefatto java-guestbook-backend e fai clic su Visualizza nella colonna Approfondimenti sulla sicurezza corrispondente.
Viene visualizzata la scheda Sicurezza per il deployment.
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 il significato di questo livello di sicurezza.
Vulnerabilità:eventuali vulnerabilità rilevate nei tuoi elementi. Fai clic sul nome dell'immagine (java-guestbook-backend) per visualizzare gli elementi sottoposti a scansione per rilevare le vulnerabilità.
Dipendenze per gli elementi di build.
Dettagli build:dettagli della build, ad esempio il generatore e il link per visualizzare i log.
Visualizzare gli approfondimenti sulla sicurezza in Cloud Run
Apri la pagina Servizi di Cloud Run.
Nella tabella Servizi di Cloud Run, fai clic su guestbook-backend-prod.
Nella pagina Dettagli del servizio, fai clic su Revisioni.
Nel riquadro Revisioni, fai clic su Sicurezza.
Viene visualizzata la scheda Sicurezza per il deployment.
Questa scheda mostra le seguenti informazioni nella sezione Approfondimenti sulla sicurezza:
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à:eventuali vulnerabilità rilevate nei tuoi elementi. Fai clic sul nome dell'immagine (java-guestbook-backend) per visualizzare gli elementi sottoposti a scansione per rilevare le vulnerabilità.
Dipendenze per gli elementi di build.
Dettagli build:dettagli della build, ad esempio 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 su questa pagina, elimina il progetto Google Cloud con le risorse.
Disattiva l'API Container Scanning:
gcloud services disable containerscanning.googleapis.com --force
Elimina il servizio Cloud Run
guestbook-backend-dev
:gcloud run services delete guestbook-backend-dev --region=us-central1 \ --project=${PROJECT_ID}
Elimina il servizio
guestbook-backend-prod
:gcloud run services delete guestbook-backend-prod --region=us-central1 \ --project=${PROJECT_ID}
Elimina la pipeline di distribuzione, incluse la release e le 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
erollout
per la sicurezza della catena di fornitura del software create per la pipeline.Elimina il repository Artifact Registry:
gcloud artifacts repositories delete containers \ --location=us-central1 --async
È tutto, hai completato questa guida rapida.
Passaggi successivi
- Scopri di più sugli approfondimenti sulla sicurezza in Cloud Run.
- Scopri come visualizzare gli approfondimenti sulla sicurezza durante il deployment su GKE.
- Scopri come visualizzare gli approfondimenti sulla sicurezza per le build.
- Scopri di più sulla sicurezza della catena di approvvigionamento del software.