Instructions et exigences de configuration de l'atelier
Protégez votre compte et votre progression. Utilisez toujours une fenêtre de navigation privée et les identifiants de l'atelier pour exécuter cet atelier.

Livraison sécurisée de logiciels : atelier challenge

Atelier 20 minutes universal_currency_alt 5 crédits show_chart Intermédiaire
info Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.
Ce contenu n'est pas encore optimisé pour les appareils mobiles.
Pour une expérience optimale, veuillez accéder à notre site sur un ordinateur de bureau en utilisant un lien envoyé par e-mail.

GSP521

Logo des ateliers d'auto-formation Google Cloud

Présentation

Dans un atelier challenge, vous devez suivre un scénario et effectuer une série de tâches. Aucune instruction détaillée n'est fournie : vous devez utiliser les compétences acquises au cours des ateliers du cours correspondant pour déterminer comment procéder par vous-même. Vous saurez si vous avez exécuté correctement les différentes tâches grâce au score calculé automatiquement (affiché sur cette page).

Lorsque vous participez à un atelier challenge, vous n'étudiez pas de nouveaux concepts Google Cloud. Vous allez approfondir les compétences précédemment acquises. Par exemple, vous devrez modifier les valeurs par défaut ou encore examiner des messages d'erreur pour corriger vous-même les problèmes.

Pour atteindre le score de 100 %, vous devez mener à bien l'ensemble des tâches dans le délai imparti.

Cet atelier est recommandé aux participants inscrits au cours Livraison sécurisée de logiciels. Êtes-vous prêt pour le challenge ?

Scénario du challenge

Vous êtes ingénieur logiciel chez Cymbal Bank et vous devez déployer une nouvelle application Web dans le cloud de manière sécurisée. L'application gère des données client sensibles, ce qui rend la sécurité primordiale. Votre objectif est d'implémenter un pipeline robuste et automatisé qui compile, analyse, signe et déploie l'application conteneurisée tout en respectant des normes de sécurité strictes. Pour ce défi, vous allez utiliser des services Google Cloud tels qu'Artifact Registry, l'autorisation binaire et Cloud Build pour atteindre cet objectif sur un exemple d'application.

Compétences évaluées

  • Créer des dépôts Artifact Registry : configurez des dépôts Artifact Registry pour stocker les images Docker à analyser et à utiliser en production.
  • Transférer des images Docker : compilez et transférez des images Docker vers Artifact Registry à l'aide de Cloud Build pour effectuer une analyse des failles.
  • Configurer l'autorisation binaire : configurez l'autorisation binaire avec des certificateurs et des clés pour appliquer des règles de signature d'image.
  • Afficher les analyses de failles : examinez les résultats des analyses de failles dans Artifact Registry pour identifier et comprendre les risques de sécurité potentiels.
  • Créer un pipeline CI/CD sécurisé : compilez un pipeline Cloud Build qui automatise la création d'images, l'analyse des failles et la signature d'images.
  • Examen et correction : analysez un échec de compilation dû à des failles critiques et corrigez les problèmes dans le code de l'application.
  • Recompiler et déployer : réexécutez le pipeline CI/CD avec le code corrigé et assurez-vous que le déploiement vers Cloud Run s'est déroulé correctement.

Préparation

Avant de cliquer sur le bouton "Démarrer l'atelier"

Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.

Cet atelier pratique vous permet de suivre les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Des identifiants temporaires vous sont fournis pour vous permettre de vous connecter à Google Cloud le temps de l'atelier.

Pour réaliser cet atelier :

  • Vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome).
Remarque : Ouvrez une fenêtre de navigateur en mode incognito (recommandé) ou de navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
  • Vous disposez d'un temps limité. N'oubliez pas qu'une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Utilisez uniquement le compte de participant pour cet atelier. Si vous utilisez un autre compte Google Cloud, des frais peuvent être facturés à ce compte.

Tâche 1 : Activer les API et configurer l'environnement

Avant de commencer à créer votre pipeline CI/CD sécurisé, vous devez activer les API Google Cloud nécessaires et configurer votre environnement de développement. Vous aurez ainsi accès à tous les services et outils requis.

  1. Activez les API requises pour cet atelier :
gcloud services enable \ cloudkms.googleapis.com \ run.googleapis.com \ cloudbuild.googleapis.com \ container.googleapis.com \ containerregistry.googleapis.com \ artifactregistry.googleapis.com \ containerscanning.googleapis.com \ ondemandscanning.googleapis.com \ binaryauthorization.googleapis.com
  1. Dans Cloud Shell, exécutez la commande suivante pour télécharger les exemples de fichiers Python, Docker et Cloud Build :
mkdir sample-app && cd sample-app gcloud storage cp gs://spls/gsp521/* .
  1. Créez deux dépôts Artifact Registry : un pour l'analyse et un pour la production. Nommez les dépôts respectivement artifact-scanning-repo et artifact-prod-repo.

Le dépôt d'analyse servira à stocker l'image Docker avant qu'une analyse de failles ne soit effectuée. Le dépôt de production stockera l'image une fois qu'elle aura été signée et sera prête à être déployée.

Cliquez sur Vérifier ma progression pour valider l'objectif.

Activer les API et configurer les dépôts Artifact Registry

Tâche 2 : Créer le pipeline Cloud Build

Dans cette tâche, vous allez jeter les bases de votre pipeline CI/CD en créant une configuration Cloud Build de base pour compiler votre image Docker et la transférer vers Artifact Registry. Cette première étape vous permettra d'analyser l'image à la recherche de failles plus tard dans l'atelier.

  1. Commencez par ajouter les rôles suivants au compte de service Cloud Build :

    • roles/iam.serviceAccountUser
    • roles/ondemandscanning.admin
  2. Dans l'éditeur Cloud Shell, ouvrez le fichier sample-app/cloudbuild.yaml.

  3. Remplir les sections TODO : renseignez les espaces réservés pour le nom de l'image (<image-name>). Pour cela, vous devez faire référence au dépôt artifact-scanning-repo. Le nom de l'image doit être sample-image. Assurez-vous d'utiliser la région .

  4. Envoyez la création.

  5. Consultez l'image que vous avez transférée vers le dépôt artifact-scanning-repo et vérifiez que les résultats de l'analyse indiquent un certain nombre de failles critiques.

Cliquez sur Vérifier ma progression pour valider l'objectif.

Créer un pipeline Cloud Build

Tâche 3 : Configurer l'autorisation binaire

Pour appliquer des règles de sécurité strictes aux déploiements de conteneurs, vous allez utiliser l'autorisation binaire. Ce service vous permet de définir qui peut déployer quelles images et dans quelles conditions. Dans cette tâche, vous allez créer et configurer les composants nécessaires de l'autorisation binaire, y compris les certificateurs, les notes et les clés KMS. Vous pourrez ainsi intégrer l'autorisation binaire à votre pipeline CI/CD.

Créer un certificateur

  1. Dans Cloud Shell, créez un fichier JSON. Ce fichier définit une note "Certificateur" contenant l'indication d'attestation. Le champ human_readable_name de l'indication d'attestation doit être défini sur "Container Vulnerabilities attestation authority".

  2. Utilisez l'API Container Analysis pour créer une note avec l'ID vulnerability_note. Les détails de la note doivent être définis dans le fichier de note que vous avez créé à l'étape précédente. Veillez à inclure une authentification appropriée et à définir l'en-tête "Content-Type" adéquat dans votre requête API.

  3. Utilisez l'API Container Analysis pour récupérer les détails de la note "Certificateur" que vous venez de créer. Assurez-vous d'inclure une authentification appropriée dans votre requête API.

  4. Utilisez l'outil de ligne de commande gcloud pour créer un certificateur de l'autorisation binaire. L'ID du certificateur doit être vulnerability-attestor et doit être associé à la note "Certificateur" que vous avez créée précédemment.

  5. Utilisez l'outil de ligne de commande gcloud pour répertorier tous les certificateur de l'autorisation binaire existants. Vérifiez que le certificateur que vous venez de créer figure dans la liste.

  6. Créez une stratégie IAM qui attribue au compte de service de l'autorisation binaire le rôle roles/containeranalysis.notes.occurrences.viewer sur la note "Certificateur" que vous avez créée. Ensuite, utilisez l'API Container Analysis pour définir cette stratégie IAM sur la note.

Générer une paire KMS

Dans cette section, vous allez générer une paire de clés KMS pour signer les attestations.

  1. Configurer la gestion des clés :

    • Créez un trousseau de clés KMS nommé binauthz-keys à l'emplacement global pour stocker les clés.
    • Dans ce trousseau de clés, générez une paire de clés de signature asymétriques. Nommez cette clé lab-key et assurez-vous qu'il s'agit de la version 1.
  2. Associer la clé au certificateur :

    • Utilisez l'outil de ligne de commande gcloud pour associer la clé lab-key (version 1) à votre certificateur de l'autorisation binaire. Veillez à spécifier l'emplacement global et le trousseau de clés binauthz-keys lorsque vous faites référence à la clé.

Mettre à jour la stratégie d'autorisation binaire

  1. Modifier la stratégie : ajustez la stratégie d'autorisation binaire pour appliquer la nécessité de certificateurs comme règle par défaut.

  2. Intégrer votre certificateur : incluez le certificateur vulnerability-attestor que vous avez créé précédemment dans la configuration de la stratégie.

Cliquez sur Vérifier ma progression pour valider l'objectif.

Créer un certificateur, une paire KMS et mettre à jour la stratégie

Tâche 4 : Créer un pipeline CI/CD Cloud Build avec analyse des failles

En vous basant sur le pipeline de base de la tâche 2, vous allez l'améliorer en y ajoutant des fonctionnalités de sécurité essentielles. Ces fonctionnalités incluent l'analyse des failles pour identifier les points faibles potentiels dans vos images de conteneurs, ainsi que la signature des images pour garantir leur intégrité. Dans cette tâche, vous allez intégrer l'analyse des failles et la signature des images à votre pipeline CI/CD, ce qui le rendra plus robuste et sécurisé.

Ajouter les rôles requis au compte de service Cloud Build

  1. Attribuez les rôles IAM suivants au compte de service Cloud Build dans votre projet :

    • roles/binaryauthorization.attestorsViewer
    • roles/cloudkms.signerVerifier
    • roles/containeranalysis.notes.attacher
    • roles/iam.serviceAccountUser
    • roles/ondemandscanning.admin
  2. Assurez-vous également que le compte de service Compute Engine par défaut dispose du rôle cloudkms.signerVerifier.

Installer l'étape de compilation personnalisée

  1. Vous allez utiliser une étape de compilation personnalisée dans Cloud Build pour simplifier le processus d'attestation. Google fournit cette étape de compilation personnalisée qui contient des fonctions d'assistance pour simplifier le processus. Avant toute utilisation, le code de l'étape de compilation personnalisée doit être intégré à un conteneur et transféré vers Cloud Build. Pour ce faire, exécutez la commande suivante :
git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git cd cloud-builders-community/binauthz-attestation gcloud builds submit . --config cloudbuild.yaml cd ../.. rm -rf cloud-builders-community

Mettre à jour le pipeline Cloud Build

Dans cette section, vous allez compléter le pipeline Cloud Build pour inclure l'analyse des failles, les vérifications des niveaux de gravité, la signature d'image et le déploiement sur Cloud Run. Le code ci-dessous est une implémentation partielle du pipeline. Vous devrez remplir les parties manquantes pour terminer le pipeline.

  1. Effectuez les tâches TODO : complétez les parties manquantes du pipeline, y compris :
    • Spécifier l'emplacement de l'image dans Artifact Registry pour l'analyse des failles. Notez que vous voulez analyser l'image dans le dépôt artifact-scanning-repo.
    • Définir le niveau de gravité approprié pour les vérifications de failles. Le pipeline doit échouer si des failles CRITICAL sont détectées.
    • Configurer l'étape de signature de l'image avec les informations correctes sur le certificateur et la clé KMS. Le nom du certificateur est vulnerability-attestor, et la version de la clé correspond au chemin d'accès complet à la version 1 de lab-key.
    • Retaguer l'image pour la production et la transférer vers le dépôt de production. Vous devez utiliser le dépôt artifact-prod-repo à cet effet.
    • Déployer l'image dans Cloud Run. Pour cette étape, vous allez utiliser l'image de production du dépôt artifact-prod-repo.
Remarque : Vous avez déjà rempli les premières sections "TODO" du fichier cloudbuild.yaml lors de la deuxième tâche de cet atelier. Veillez à remplacer les autres espaces réservés par les valeurs correctes pour les sections TODO restantes.

cloudbuild.yaml

steps: # TODO : #1. Étape de compilation. Remplacez l'espace réservé <image-name> par la valeur correcte. - id: "build" name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', '<image-name>', '.'] waitFor: ['-'] # TODO : #2. Transférer vers Artifact Registry. Remplacez l'espace réservé <image-name> par la valeur correcte. - id: "push" name: 'gcr.io/cloud-builders/docker' args: ['push', '<image-name>'] # TODO : #3. Exécuter une analyse des failles. Remplacez l'espace réservé <image-name> par la valeur correcte. - id: scan name: 'gcr.io/cloud-builders/gcloud' entrypoint: 'bash' args: - '-c' - | (gcloud artifacts docker images scan \ <image-name> \ --location us \ --format="value(response.scan)") > /workspace/scan_id.txt # TODO : #4. Analysez le résultat de l'analyse. SI des failles "CRITICAL" sont détectées, la compilation échoue. # Remplacez les espaces réservés <correct vulnerability> par les valeurs correctes. Ils sont sensibles à la casse ! - id: severity check name: 'gcr.io/cloud-builders/gcloud' entrypoint: 'bash' args: - '-c' - | gcloud artifacts docker images list-vulnerabilities $(cat /workspace/scan_id.txt) \ --format="value(vulnerability.effectiveSeverity)" | if grep -Fxq <correct vulnerability>; \ then echo "Failed vulnerability check for <correct vulnerability> level" && exit 1; else echo \ "No <correct vulnerability> vulnerability found, congrats !" && exit 0; fi # TODO : #5. Signer l'image uniquement si la vérification du niveau de gravité précédent est réussie. # Remplacez les espaces réservés par les valeurs correctes : <image-name>, <attestor-name> et <key-version>. # Notez que <key-version> doit être le chemin d'accès **complet** à la version de la clé. - id: 'create-attestation' name: 'gcr.io/${PROJECT_ID}/binauthz-attestation:latest' args: - '--artifact-url' - '<image-name>' - '--attestor' - '<attestor-name>' - '--keyversion' - '<key-version>' # TODO : #6. Retaggez l'image pour la production et transférez-la vers le dépôt de production en utilisant le tag "latest". # Remplacez les espaces réservés <image-name> et <production-image-name> par les valeurs correctes. - id: "push-to-prod" name: 'gcr.io/cloud-builders/docker' args: - 'tag' - '<image-name>' - '<production-image-name>' - id: "push-to-prod-final" name: 'gcr.io/cloud-builders/docker' args: ['push', '<production-image-name>'] # TODO : #7. Déployer sur Cloud Run. Remplacez les espaces réservés <image-name> et <your-region> par les valeurs appropriées. - id: 'deploy-to-cloud-run' name: 'gcr.io/cloud-builders/gcloud' entrypoint: 'bash' args: - '-c' - | gcloud run deploy auth-service --image=<image-name> \ --binary-authorization=default --region=<your-region> --allow-unauthenticated # TODO : #8. Remplacez l'espace réservé <image-name> par la valeur de l'étape de compilation. images: - <image-name>
  1. Déclencher la compilation :

    • Envoyez la configuration Cloud Build que vous avez créée pour lancer le processus de compilation.
    • Faites attention à la région dans laquelle vous travaillez lorsque vous envoyez la compilation.
  2. Observer l'échec de la compilation :

    • Accédez à la page "Cloud Build History" dans la console Google Cloud.
    • Recherchez la compilation que vous venez de déclencher et examinez son état.
    • Confirmez que la compilation échoue en raison de la présence d'une faille de gravité CRITICAL.
Remarque : Votre compilation doit échouer en raison d'une faille de sécurité de gravité CRITICAL. Vous résoudrez ce problème dans la prochaine tâche.

Cliquez sur Vérifier ma progression pour valider l'objectif.

Intégrer l'analyse des failles au pipeline CI/CD

Tâche 5 : Corriger la faille et redéployer le pipeline CI/CD

Dans un scénario réel, les analyses de failles révèlent souvent des problèmes qui doivent être résolus. Cette tâche simule ce type de scénario, dans lequel votre compilation échoue en raison d'une faille critique. Dans cette tâche, vous allez analyser l'échec de la compilation, identifier la faille et la corriger en mettant à jour les dépendances de votre application. Vous déclencherez ensuite à nouveau le pipeline Cloud Build pour vous assurer que la compilation se termine correctement sans aucune faille critique.

  1. Mettre à jour le fichier Dockerfile : modifiez votre fichier Dockerfile pour utiliser l'image de base python:3.8-alpine. Mettez à jour les dépendances Flask, Gunicorn et Werkzeug vers les versions suivantes :

    • Flask : 3.0.3
    • Gunicorn : 23.0.0
    • Werkzeug : 3.0.4
  2. Redéclencher la compilation : envoyez votre configuration Cloud Build mise à jour pour lancer une nouvelle compilation.

  3. Vérifier la réussite de la compilation : consultez la page "Cloud Build History" pour vérifier que la compilation s'est terminée correctement et qu'aucune faille de sécurité CRITICAL n'a été détectée.

  4. À des fins de test, exécutez la commande suivante pour autoriser l'accès non authentifié au service Cloud Run afin de valider le déploiement. Remplacez <your-region> par la région dans laquelle vous avez déployé le service.

gcloud beta run services add-iam-policy-binding --region=<your-region> --member=allUsers --role=roles/run.invoker auth-service Remarque : Cette commande est destinée à des fins de test uniquement et ne doit pas être utilisée dans un environnement de production.
  1. Valider le déploiement : accédez à l'URL du service Cloud Run pour vous assurer que votre application est déployée et fonctionne correctement.

Cliquez sur Vérifier ma progression pour valider l'objectif.

Corriger la faille et redéployer le pipeline CI/CD

Félicitations !

Félicitations ! Dans cet atelier, vous avez implémenté un pipeline CI/CD sécurisé qui compile, analyse, signe et déploie une application Web dans le cloud. Cette expérience pratique vous a permis d'acquérir des compétences essentielles pour compiler et déployer des applications sécurisées dans le cloud, intégrer les bonnes pratiques de sécurité à vos workflows de développement et assurer l'intégrité de votre processus de livraison de logiciels.

Badge de compétence &quot;Livraison sécurisée de logiciels&quot;

Étapes suivantes et informations supplémentaires

Consultez ces ressources pour approfondir les sujets abordés dans cet atelier :

Formations et certifications Google Cloud

Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.

Dernière mise à jour du manuel : 10 décembre 2025

Dernier test de l'atelier : 4 septembre 2024

Copyright 2026 Google LLC. Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.

Avant de commencer

  1. Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
  2. Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
  3. En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.

Utilisez la navigation privée

  1. Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
  2. Cliquez sur Ouvrir la console en navigation privée

Connectez-vous à la console

  1. Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
  2. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
  3. Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.

Ce contenu n'est pas disponible pour le moment

Nous vous préviendrons par e-mail lorsqu'il sera disponible

Parfait !

Nous vous contacterons par e-mail s'il devient disponible

Un atelier à la fois

Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci

Utilisez la navigation privée pour effectuer l'atelier

Le meilleur moyen d'exécuter cet atelier consiste à utiliser une fenêtre de navigation privée. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.