Déployer sur Cloud Run et afficher des insights sur la sécurité
Ce guide de démarrage rapide explique comment déployer une image de conteneur dans Cloud Run et comment afficher les insights de sécurité pour le déploiement dans le panneau Sécurité de Software Delivery Shield (Sécurité) de la console Google Cloud. Vous allez :
- Déployer une image sur Cloud Run à l'aide de Cloud Deploy Cloud Deploy est un service Google Cloud qui automatise la diffusion de vos applications dans une série d'environnements cibles selon une séquence de promotion définie.
Consultez les insights de sécurité suivants pour le déploiement:
- Informations sur l'identité et le chiffrement du déploiement.
- Niveaux de la chaîne d'approvisionnement pour les artefacts logiciels (SLSA) : indique le niveau d'assurance du déploiement.
- Failles des artefacts de compilation.
- Nomenclature logicielle (SBOM) pour les artefacts de compilation
- La provenance de la compilation, qui est une collection de métadonnées vérifiables concernant une compilation. Il inclut des détails tels que les condensés des images compilées, les emplacements des sources d'entrée, la chaîne d'outils de compilation, les étapes de compilation et la durée de compilation.
Avant de commencer
- 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
Définir les paramètres par défaut
Définissez une variable d'environnement pour l'ID de projet:
export PROJECT_ID=$(gcloud config get project)
Définissez la région par défaut pour Cloud Deploy:
gcloud config set deploy/region us-central1
Accorder l'accès
Attribuez des rôles IAM au compte de service Compute Engine par défaut. Il est nécessaire pour que Cloud Deploy puisse déployer des charges de travail dans 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"
Si vous ne parvenez pas à ajouter l'un de ces rôles, contactez l'administrateur de votre projet.
Créer un dépôt Docker dans Artifact Registry
Créez un dépôt Docker nommé
containers
à l'emplacementus-central1
, avec comme description "dépôt Docker" :gcloud artifacts repositories create containers --repository-format=docker \ --location=us-central1 --description="Docker repository"
Vérifiez que votre dépôt a bien été créé :
gcloud artifacts repositories list
Vous devriez voir
containers
dans la liste des dépôts affichés.
Préparer l'exemple d'application
Vous aurez besoin d'un exemple de code source pour compiler et déployer. Dans cette section, vous allez cloner un dépôt source existant contenant un exemple de code Java.
Clonez le dépôt contenant l'exemple de code Java:
git clone https://github.com/googlecloudplatform/software-delivery-shield-demo-java.git cd software-delivery-shield-demo-java/backend
Mettez à jour
cloudrun.clouddeploy.yaml
pour remplacerPROJECT_ID
par l'ID de votre projet:sed -i "s/PROJECT_ID/${PROJECT_ID}/g" cloudrun.clouddeploy.yaml
Compiler l'application
Créer et intégrer en conteneur l'application Java à l'aide de Cloud Build La commande suivante crée et conteneurise l'application Java, puis stocke le conteneur créé dans le dépôt Docker Artifact Registry:
gcloud builds submit --config=cloudbuild.yaml --region=us-central1
Une fois la compilation terminée, un message d'état de réussite semblable à celui-ci s'affiche:
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
Générer un SBOM pour l'image compilée
Un SBOM est un inventaire complet d'une application, qui identifie les packages sur lesquels repose votre logiciel. Le contenu peut inclure des logiciels tiers de fournisseurs, des artefacts internes et des bibliothèques Open Source.
Générez le SBOM pour l'image que vous avez créée à la section précédente:
gcloud artifacts sbom export
--uri=us-central1-docker.pkg.dev/${PROJECT_ID}/containers/java-guestbook-backend:quickstart
Déployer le conteneur sur Cloud Run à l'aide de Cloud Deploy
Enregistrez votre pipeline et vos cibles avec le service Cloud Deploy:
gcloud deploy apply --file cloudrun.clouddeploy.yaml
Vous disposez maintenant d'un pipeline avec des cibles prêt à déployer votre application sur votre première cible.
Pour vérifier que votre pipeline existe, accédez à la page Pipelines de livraison dans la console Google Cloud:
Ouvrir la page Pipelines de diffusion
Le pipeline de livraison que vous venez de créer,
cloudrun-guestbook-backend-delivery
, s'affiche.Cliquez sur
cloudrun-guestbook-backend-delivery
pour suivre la progression. La page Détails du pipeline de livraison s'ouvre.Dans Cloud Shell, créez une version dans 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 nouvelle version apparaît dans la section Versions de la page Informations sur le pipeline de livraison.
Surveillez la vue Visualisation du pipeline sur la page Détails du pipeline de livraison jusqu'à ce que le bouton Promouvoir s'affiche pour
dev-cluster
. Vous devrez peut-être actualiser la page.Sur la première cible de la visualisation du pipeline de livraison,
cloudrun-dev
, cliquez sur Promouvoir.La boîte de dialogue Promouvoir la version s'affiche. Elle affiche les détails de la cible sur laquelle vous diffusez la promotion.
Cliquez sur Promouvoir.
La version est maintenant mise en file d'attente pour être déployée dans
cloudrun-prod
. Une fois le déploiement terminé, la visualisation du pipeline de livraison indique qu'il est déployé:
Afficher les insights sur la sécurité dans Cloud Deploy
Ouvrez la page Pipelines de livraison de Cloud Deploy dans la console Google Cloud.
Dans le tableau Pipelines de livraison, cliquez sur cloudrun-guestbook-backend-delivery.
Sur la page Détails des pipelines de livraison, cliquez sur test-release-008.
Sur la page Détails de la release, cliquez sur l'onglet Artefacts.
Dans le tableau Artefacts de compilation, localisez la ligne contenant l'artefact java-guestbook-backend, puis dans la colonne Security Insights (Insights sur la sécurité) correspondante, cliquez sur Afficher.
Le panneau Sécurité de Software Delivery Shield s'affiche pour le déploiement.
Ce panneau affiche les informations suivantes:
Niveau SLSA:ce build a atteint le niveau SLSA 3 du programme. Cliquez sur le lien En savoir plus pour connaître la signification de ce niveau de sécurité.
Failles:toutes les failles détectées dans vos artefacts. Cliquez sur le nom de l'image (java-guestbook-backend) pour afficher les artefacts qui ont été analysés pour détecter les failles.
Dépendances pour les artefacts de compilation
Informations sur la compilation:détails de la compilation, tels que le compilateur et le lien pour afficher les journaux.
Afficher les insights sur la sécurité dans Cloud Run
Ouvrez la page Services de Cloud Run.
Dans la table Services de Cloud Run, cliquez sur guestbook-backend-prod.
Sur la page Détails du service, cliquez sur Révisions.
Dans le panneau Révisions, cliquez sur Sécurité.
Le panneau Sécurité de Software Delivery Shield s'affiche pour le déploiement.
Ce panneau affiche les informations suivantes:
Identité et chiffrement:adresse e-mail du compte de service Compute Engine par défaut et clé de chiffrement utilisée pour le déploiement.
Niveau SLSA:ce build a atteint le niveau SLSA 3 du programme. Cliquez sur le lien En savoir plus pour connaître la signification de ce niveau de sécurité.
Failles:toutes les failles détectées dans vos artefacts. Cliquez sur le nom de l'image (java-guestbook-backend) pour afficher les artefacts qui ont été analysés pour détecter les failles.
Dépendances pour les artefacts de compilation
Informations sur la compilation:détails de la compilation, tels que le compilateur et le lien pour afficher les journaux.
Effectuer un nettoyage
Pour éviter que les ressources utilisées sur cette page ne soient facturées sur votre compte Google Cloud, supprimez le projet Google Cloud contenant les ressources.
Désactivez l'API Container Scanning:
gcloud services disable containerscanning.googleapis.com --force
Supprimez le service Cloud Run
guestbook-backend-dev
:gcloud run services delete guestbook-backend-dev --region=us-central1 \ --project=${PROJECT_ID}
Supprimez le service
guestbook-backend-prod
:gcloud run services delete guestbook-backend-prod --region=us-central1 \ --project=${PROJECT_ID}
Supprimez le pipeline de livraison, y compris la version et les déploiements:
gcloud deploy delivery-pipelines delete cloudrun-guestbook-backend-delivery \ --force --region=us-central1 --project=${PROJECT_ID}
Cette commande supprime le pipeline de livraison lui-même, ainsi que toutes les ressources
release
etrollout
. Sécurité sur la chaîne d'approvisionnement logicielle créée pour ce pipeline.Supprimez le dépôt Artifact Registry:
gcloud artifacts repositories delete containers \ --location=us-central1 --async
Voilà ! Vous avez terminé le guide de démarrage rapide.
Étapes suivantes
- En savoir plus sur le panneau d'insights sur la sécurité de Software Delivery Shield dans Cloud Run
- Découvrez comment afficher les insights sur la sécurité lors du déploiement sur GKE.
- Découvrez comment afficher les insights sur la sécurité pour les builds.
- En savoir plus sur Software Delivery Shield.