Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.
Guide de démarrage rapide: déployer sur Cloud Run et afficher les insights sur la sécurité

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 sur la sécurité du déploiement dans le panneau Sécurité de Software Delivery Shield de Google Cloud Console. Vous allez :

  • Déployer une image dans Cloud Run à l'aide de Google Cloud Deploy Google Cloud Deploy est un service Google Cloud qui automatise la diffusion de vos applications vers une série d'environnements cibles dans une séquence de promotion définie.
  • Affichez les insights de sécurité suivants pour le déploiement:

    • Les informations d'identité et de chiffrement pour le déploiement.
    • Niveau d'approvisionnement des artefacts logiciels (SLSA), qui identifie le niveau d'assurance du déploiement.
    • Vulnérabilités dans les artefacts de compilation
    • Provenance du build : collection de métadonnées vérifiables concernant un build Il inclut des détails tels que les condensés des images compilées, les emplacements de la source d'entrée, 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. Installez et initialisez Google Cloud CLI.
  3. Créez ou sélectionnez un projet Google Cloud.

    • Créez un projet Cloud :

      gcloud projects create PROJECT_ID
    • Sélectionnez le projet Cloud que vous avez créé :

      gcloud config set project PROJECT_ID
  4. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.

  5. Activer les 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. Installez et initialisez Google Cloud CLI.
  7. Créez ou sélectionnez un projet Google Cloud.

    • Créez un projet Cloud :

      gcloud projects create PROJECT_ID
    • Sélectionnez le projet Cloud que vous avez créé :

      gcloud config set project PROJECT_ID
  8. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.

  9. Activer les 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

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 Google 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. Cela est nécessaire pour permettre à Google Cloud Deploy de 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
    

    containers doit apparaître 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 créer et déployer le code. 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 l'ID de votre projet:

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

Compiler l'application

  1. Créer et conteneuriser l'application Java à l'aide de Cloud Build La commande suivante compile et conteneurise l'application Java, et stocke le conteneur compilé 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 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
    

Déployer le conteneur sur Cloud Run à l'aide de Google Cloud Deploy

  1. Enregistrez votre pipeline et vos cibles avec le service Google 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.

  2. Pour vérifier que votre pipeline existe, accédez à la page Pipelines de livraison de Google Cloud Console:

    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 page Delivery pipeline details (Détails du pipeline de livraison) s'ouvre.

  4. Dans Cloud Shell, créez une release dans 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 nouvelle release apparaît dans la section Releases de la page Delivery pipeline details (Détails du pipeline de livraison).

  5. Surveillez la vue Pipeline de visualisation de la page Delivery pipeline plus (Détails du pipeline de livraison) jusqu'à ce que le bouton Promote (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. Elle affiche les détails de la cible que vous promouvez.

  7. Cliquez sur Promouvoir.

    La release est maintenant en file d'attente pour 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 de sécurité pour le déploiement

  1. Ouvrez la page Services Cloud Run pour la sécurité de la chaîne d'approvisionnement logicielle.

    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é du logiciel Software 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 du compte de service Compute Engine par défaut et clé de chiffrement utilisée pour le déploiement.

  • Niveau SLSA : ce build utilise 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 dépendances. Cliquez sur le nom de l'image (java-guestbook-backend) pour afficher les artefacts analysés pour les dépendances. Software Delivery Shield affiche les détails des failles identifiées afin que vous puissiez évaluer l'impact sur votre application et les étapes que vous souhaitez suivre pour y remédier.

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

  • Provenance du build:provenance du build.

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 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 toutes les ressources release et rollout de la chaîne d'approvisionnement logicielle créées 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.

Étapes suivantes