Déployer sur Cloud Run et afficher les insights sur la sécurité

Ce guide de démarrage rapide explique comment déployer une image de conteneur dans Cloud Run et afficher les insights de sécurité pour le déploiement dans le panneau Sécurité de Software Delivery Shield dans la console Google Cloud. Vous découvrirez comment :

  • Déployer une image dans 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 promotions définie.
  • Consultez les insights de sécurité suivants pour le déploiement :

    • Informations sur l'identité et le chiffrement pour le déploiement.
    • Niveau SLSA (Supply-chain Levels for Software Artifacts) qui détermine le niveau d'assurance du déploiement.
    • Failles dans les artefacts de compilation
    • Nomenclature logicielle (SBOM) pour les artefacts de compilation.
    • Provenance de la compilation : collection de métadonnées vérifiables concernant une compilation. Il inclut des détails tels que les condensés des images compilées, l'entrée les emplacements sources, la chaîne d'outils de compilation, les étapes de compilation et la durée de compilation.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

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

  5. Make sure that billing is enabled for your Google Cloud project.

  6. 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
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

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

  10. Make sure that billing is enabled for your Google Cloud project.

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

  1. Définissez une variable d'environnement pour l'ID de projet :

    export PROJECT_ID=$(gcloud config get project)
    
  2. 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. Obligatoire pour Cloud Deploy pour 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

  1. Créez un dépôt Docker nommé containers à l'emplacement us-central1, avec comme description "dépôt Docker" :

    gcloud artifacts repositories create containers --repository-format=docker \
        --location=us-central1 --description="Docker repository"
    
  2. Vérifiez que votre dépôt a bien été créé :

    gcloud artifacts repositories list
    

    Vous devriez voir containers dans la liste des des dépôts.

Préparer l'exemple d'application

Vous aurez besoin d'un exemple de code source pour procéder à la compilation et au déploiement. Dans cette section, vous allez cloner un dépôt source existant contenant un exemple de code Java.

  1. 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
    
  2. Mettez à jour cloudrun.clouddeploy.yaml pour remplacer PROJECT_ID par votre ID de projet :

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

Compiler l'application

  1. Créez et conteneurisez l'application Java à l'aide de Cloud Build. La la commande suivante crée et conteneurise l'application Java, puis stocke dans le dépôt Docker d'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 : suivantes:

    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 votre logiciel s'appuie. Il peut s'agir de logiciels tiers de fournisseurs, d'artefacts internes et de 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

  1. Enregistrez votre pipeline et vos cibles auprès du service Cloud Deploy:

    gcloud deploy apply --file cloudrun.clouddeploy.yaml
    

    Vous disposez désormais d'un pipeline avec des cibles, prêt à déployer votre application sur votre première cible.

  2. Pour vérifier que votre pipeline existe, accédez à la page Pipelines de diffusion 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.

  3. Cliquez sur cloudrun-guestbook-backend-delivery pour suivre la progression. La La page Détails du pipeline de livraison s'ouvre.

  4. 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 Détails du pipeline de diffusion.

  5. Surveillez la visualisation du pipeline dans le pipeline de livraison d'informations jusqu'à ce que le bouton Promouvoir s'affiche pour dev-cluster. Vous devrez peut-être actualiser la page.

  6. 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. Il affiche les détails de la cible à laquelle vous faites la promotion.

  7. Cliquez sur Promouvoir.

    La version est désormais en file d'attente en vue d'un déploiement dans cloudrun-prod. Une fois le déploiement terminé, la visualisation du pipeline de livraison indique qu'il est déployé :

    Capture d'écran du déploiement

Afficher les insights sur la sécurité dans Cloud Deploy

  1. Ouvrez la page Pipelines de livraison de Cloud Deploy dans la console Google Cloud.

    Ouvrir la page Cloud Deploy

  2. Dans la table Pipelines de livraison, cliquez sur cloudrun-guestbook-backend-delivery.

  3. Sur la page Détails des pipelines de diffusion, cliquez sur test-release-008.

  4. Sur la page Détails de la version, cliquez sur l'onglet Artefacts.

  5. Dans le tableau Build artifacts (Artefacts de compilation), recherchez la ligne contenant l'artefact java-guestbook-backend, puis, dans la colonne Security insights (Informations de sécurité) correspondante, cliquez sur View (Afficher).

Le panneau Sécurité de Software Delivery Shield s'affiche pour le déploiement.

Capture d'écran du panneau de sécurité

Ce panneau affiche les informations suivantes :

  • Niveau SLSA:ce build a atteint le niveau SLSA 3. Cliquez sur le lien En savoir plus pour découvrir la signification de ce niveau de sécurité.

  • Failles : failles détectées dans vos artefacts. Cliquez sur l'icône (java-guestbook-backend) pour voir les artefacts qui ont été mis à jour pour détecter d'éventuelles failles.

  • Dépendances pour les artefacts de compilation.

  • Informations sur la compilation:informations sur la compilation, telles que le compilateur et le lien vers afficher les journaux.

Afficher les insights de sécurité dans Cloud Run

  1. Ouvrez la page Services de Cloud Run.

    Ouvrir la page "Services Cloud Run"

  2. Dans le tableau Services de Cloud Run, cliquez sur guestbook-backend-prod.

  3. Sur la page Détails du service, cliquez sur Révisions.

  4. Dans le panneau Révisions, cliquez sur Sécurité.

Le panneau Sécurité de Software Delivery Shield s'affiche pour le déploiement.

Capture d'écran du panneau de sécurité

Ce panneau affiche les informations suivantes:

  • Identité et chiffrement:adresse e-mail de l'instance Compute Engine par défaut compte de service et la clé de chiffrement utilisée pour le déploiement.

  • Niveau SLSA:ce build a atteint le niveau SLSA 3. Cliquez sur le lien En savoir plus pour découvrir la signification de ce niveau de sécurité.

  • Failles : failles détectées dans vos artefacts. Cliquez sur l'icône (java-guestbook-backend) pour voir les artefacts qui ont été mis à jour pour détecter d'éventuelles failles.

  • Dépendances pour les artefacts de compilation.

  • Informations sur le build : détails de la compilation, tels que le compilateur et le lien permettant d'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.

  1. Désactivez l'API Container Scanning :

    gcloud services disable containerscanning.googleapis.com --force
    
  2. Supprimez le service Cloud Run guestbook-backend-dev :

    gcloud run services delete guestbook-backend-dev --region=us-central1 \
        --project=${PROJECT_ID}
    
  3. Supprimez le service guestbook-backend-prod:

    gcloud run services delete guestbook-backend-prod --region=us-central1 \
        --project=${PROJECT_ID}
    
  4. 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 tous les release et Ressources rollout : sécurité sur la chaîne d'approvisionnement logicielle créée pour ce pipeline.

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

Étape suivante