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.

Sécuriser les compilations avec Cloud Build

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.

GSP1184

Google Cloud – Ateliers adaptés au rythme de chacun

Présentation

Les failles logicielles sont des points faibles qui peuvent entraîner une défaillance accidentelle du système ou permettre à des personnes malintentionnées de compromettre votre logiciel. Artifact Analysis propose deux types d'analyse de l'OS pour détecter les failles dans les conteneurs :

  • L'API On-Demand Scanning vous permet d'analyser manuellement les images de conteneurs pour détecter les failles de l'OS, en local sur votre ordinateur ou à distance dans Artifact Registry. Vous pouvez ainsi contrôler précisément les conteneurs que vous souhaitez analyser pour détecter les failles.
  • L'API Container Scanning vous permet d'automatiser la détection des failles de l'OS en analysant chaque image que vous transférez vers Artifact Registry. Vous pouvez utiliser On-Demand Scanning pour analyser les images de votre pipeline CI/CD avant de décider de les stocker ou non dans un registre. L'activation de cette API active également les analyses des packages de langage pour les failles Go et Java.

Dans cet atelier, vous allez apprendre à créer des images de conteneurs stockées dans Artifact Registry et à rechercher les failles qu'elles contiennent avec Cloud Build.

Points abordés

Dans cet atelier, vous allez apprendre à réaliser les opérations suivantes :

  • Créer des images avec Cloud Build
  • Utiliser Artifact Registry pour les conteneurs
  • Utiliser l'analyse automatique des failles
  • Configurer On-Demand Scanning
  • Ajouter l'analyse des images de votre pipeline CI/CD dans Cloud Build

Prérequis

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 vous-même les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Nous vous fournissons des identifiants temporaires pour 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 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 : Si vous possédez déjà votre propre compte ou projet Google Cloud, veillez à ne pas l'utiliser pour réaliser cet atelier afin d'éviter que des frais supplémentaires ne vous soient facturés.

Démarrer l'atelier et se connecter à la console Google Cloud

  1. Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, un pop-up s'affiche pour vous permettre de sélectionner un mode de paiement. Sur la gauche, vous trouverez le panneau Détails concernant l'atelier, qui contient les éléments suivants :

    • Le bouton Ouvrir la console Google Cloud
    • Le temps restant
    • Les identifiants temporaires que vous devez utiliser pour cet atelier
    • Des informations complémentaires vous permettant d'effectuer l'atelier
  2. Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans la fenêtre de navigation privée si vous utilisez le navigateur Chrome).

    L'atelier lance les ressources, puis ouvre la page Se connecter dans un nouvel onglet.

    Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.

    Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte.
  3. Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.

    {{{user_0.username | "Username"}}}

    Vous trouverez également le nom d'utilisateur dans le panneau Détails concernant l'atelier.

  4. Cliquez sur Suivant.

  5. Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.

    {{{user_0.password | "Password"}}}

    Vous trouverez également le mot de passe dans le panneau Détails concernant l'atelier.

  6. Cliquez sur Suivant.

    Important : Vous devez utiliser les identifiants fournis pour l'atelier. N'utilisez pas les identifiants de votre compte Google Cloud. Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être facturés.
  7. Procédez tel qu'indiqué ci-dessous sur les pages suivantes :

    • Acceptez les conditions d'utilisation.
    • N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
    • Ne vous inscrivez pas à des essais sans frais.

Après quelques instants, la console Cloud s'ouvre dans cet onglet.

Remarque : Pour afficher un menu contenant la liste des produits et services Google Cloud, cliquez sur le menu de navigation en haut à gauche. Icône du menu de navigation

Activer Cloud Shell

Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.

  1. Cliquez sur Activer Cloud Shell Icône Activer Cloud Shell en haut de la console Google Cloud.

Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET : . Le résultat contient une ligne qui déclare l'ID_PROJET pour cette session :

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.

  1. (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
  1. Cliquez sur Autoriser.

Résultat :

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project

Résultat :

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Remarque : Pour consulter la documentation complète sur gcloud, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.

Configuration de l'environnement

  1. Dans Cloud Shell, définissez l'ID et le numéro de votre projet. Enregistrez-les en tant que variables PROJECT_ID et PROJECT_NUMBER :
export PROJECT_ID=$(gcloud config get-value project) export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \ --format='value(projectNumber)')
  1. Activez tous les services nécessaires :
gcloud services enable \ cloudkms.googleapis.com \ cloudbuild.googleapis.com \ container.googleapis.com \ containerregistry.googleapis.com \ artifactregistry.googleapis.com \ containerscanning.googleapis.com \ ondemandscanning.googleapis.com \ binaryauthorization.googleapis.com

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

Activer les API requises

Tâche 1 : Créer des images avec Cloud Build

Dans cette section, vous allez créer un pipeline de compilation automatisé pour compiler votre image de conteneur, l'analyser, puis évaluer les résultats. Si aucune faille CRITICAL n'est détectée, l'image est transférée vers le dépôt. Si des failles CRITICAL sont détectées, la compilation échoue et se ferme.

  1. Accordez l'accès pour le compte de service Cloud Build :
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com" \ --role="roles/ondemandscanning.admin"

Cloud Build aura besoin d'autorisations pour accéder à l'API On-Demand Scanning. Accordez l'accès à l'aide des commandes suivantes.

  1. Créez un répertoire et faites-en un répertoire de travail :
mkdir vuln-scan && cd vuln-scan
  1. Définissez un exemple d'image :

Créez un fichier nommé Dockerfile avec le contenu suivant :

cat > ./Dockerfile << EOF FROM gcr.io/google-appengine/debian11 # System RUN apt update && apt install python3-pip -y # App WORKDIR /app COPY . ./ RUN pip3 install Flask==1.1.4 RUN pip3 install gunicorn==20.1.0 CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app EOF
  1. Créez un fichier nommé main.py avec le contenu suivant :
cat > ./main.py << EOF import os from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): name = os.environ.get("NAME", "Worlds") return "Hello {}!".format(name) if __name__ == "__main__": app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 8080))) EOF

Créer le pipeline Cloud Build

Vous allez créer un fichier cloudbuild.yaml dans votre répertoire, qui sera utilisé pour le processus automatisé. Pour cet atelier, les étapes sont limitées au processus de compilation du conteneur. En pratique, vous incluez des instructions et des tests spécifiques à l'application en plus des étapes du conteneur.

  1. Créez le fichier à l'aide de la commande suivante :
cat > ./cloudbuild.yaml << EOF steps: # build - id: "build" name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', '{{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image', '.'] waitFor: ['-'] EOF
  1. Exécutez le pipeline CI :

Envoyez la compilation pour traitement :

gcloud builds submit
  1. Une fois le processus de compilation lancé, ouvrez le tableau de bord Cloud Build dans la console Cloud pour afficher le contenu.

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

Créer les images avec Cloud Build

Tâche 2 : Utiliser Artifact Registry pour les conteneurs

Créer un dépôt Artifact Registry

Vous utiliserez Artifact Registry pour stocker et analyser vos images.

  1. Créez le dépôt à l'aide de la commande suivante :
gcloud artifacts repositories create artifact-scanning-repo \ --repository-format=docker \ --location={{{ project_0.default_region | "REGION" }}} \ --description="Docker repository"
  1. Configurez Docker pour qu'il utilise vos identifiants gcloud lorsque vous accédez à Artifact Registry :
gcloud auth configure-docker {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev
  1. Modifiez le pipeline Cloud Build pour transférer l'image obtenue vers Artifact Registry :
cat > ./cloudbuild.yaml << EOF steps: # build - id: "build" name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', '{{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image', '.'] waitFor: ['-'] # push to artifact registry - id: "push" name: 'gcr.io/cloud-builders/docker' args: ['push', '{{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image'] images: - {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image EOF
  1. Exécutez le pipeline CI :
gcloud builds submit

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

Créer un dépôt Artifact Registry

Tâche 3 : Analyse automatique des failles

L'analyse se déclenche automatiquement chaque fois que vous transférez une nouvelle image vers Artifact Registry. Les informations sur les failles sont mises à jour en continu lorsque de nouvelles failles sont découvertes.

Dans cette section, vous allez examiner l'image que vous venez de créer et de transférer vers Artifact Registry, et explorer les résultats de l'analyse des failles.

Examiner les détails de l'image

Une fois le processus de compilation terminé, examinez les résultats de l'image et des failles dans le tableau de bord Artifact Registry.

  1. Dans la console Cloud, ouvrez Artifact Registry.
  2. Cliquez sur artifact-scanning-repo pour afficher le contenu.
  3. Cliquez sur les détails de l'image.
  4. Cliquez sur le dernier condensé de votre image.
  5. Une fois l'analyse terminée, cliquez sur l'onglet Failles correspondant à l'image.

Dans l'onglet "Failles", vous verrez les résultats de l'analyse automatique de l'image que vous venez de créer.

Page Artifact Registry affichant l&#39;onglet &quot;Failles&quot;

L'analyse automatique est activée par défaut. Explorez les paramètres d'Artifact Registry pour découvrir comment activer ou désactiver l'analyse automatique.

Tâche 4 : On-Demand Scanning

Dans différents scénarios, vous devrez peut-être effectuer une analyse avant de transférer l'image vers un dépôt. Par exemple, un développeur de conteneurs peut vouloir analyser une image et corriger les problèmes qu'il trouve avant de transférer le code vers le contrôle de source.

Dans l'exemple ci-dessous, vous allez créer et analyser l'image localement avant d'agir en fonction des résultats.

  1. Utilisez Docker en local pour créer l'image dans votre cache local :
docker build -t {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image .
  1. Une fois l'image créée, demandez son analyse :
gcloud artifacts docker images scan \ {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image \ --format="value(response.scan)" > scan_id.txt

Les résultats de l'analyse sont stockés dans un serveur de métadonnées. La tâche se termine en indiquant l'emplacement des résultats dans le serveur de métadonnées.

  1. Examinez le résultat stocké dans le fichier scan_id.txt :
cat scan_id.txt

Notez l'emplacement du rapport des résultats de l'analyse dans le serveur de métadonnées.

  1. Pour afficher les résultats réels de l'analyse, utilisez la commande list-vulnerabilities à l'emplacement du rapport indiqué dans le fichier de sortie :
gcloud artifacts docker images list-vulnerabilities $(cat scan_id.txt)

La sortie contient une quantité importante de données sur toutes les failles de l'image. Les humains utilisent rarement les données stockées directement dans le rapport. Les résultats sont généralement utilisés par un processus automatisé.

  1. Utilisez les commandes ci-dessous pour lire les détails du rapport et consigner les éventuelles failles CRITICAL détectées :
export SEVERITY=CRITICAL gcloud artifacts docker images list-vulnerabilities $(cat scan_id.txt) --format="value(vulnerability.effectiveSeverity)" | if grep -Fxq ${SEVERITY}; then echo "Failed vulnerability check for ${SEVERITY} level"; else echo "No ${SEVERITY} Vulnerabilities found"; fi

Le résultat de cette commande sera :

Failed vulnerability check for CRITICAL level

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

Analyser les images à l'aide d'On-Demand Scanning.

Tâche 5 : Utiliser l'analyse des artefacts du pipeline CI/CD dans Cloud Build

Tout d'abord, vous allez accorder à Cloud Build les droits d'accès à l'API On-Demand Scanning.

  1. Utilisez les commandes suivantes :
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com" \ --role="roles/ondemandscanning.admin"
  1. Mettez à jour le pipeline Cloud Build avec la commande suivante. Elle crée un fichier cloudbuild.yaml qui sera utilisé pour le processus automatisé :
cat > ./cloudbuild.yaml << EOF steps: # build - id: "build" name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', '{{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image', '.'] waitFor: ['-'] #Run a vulnerability scan at _SECURITY level - id: scan name: 'gcr.io/cloud-builders/gcloud' entrypoint: 'bash' args: - '-c' - | (gcloud artifacts docker images scan \ {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image \ --location us \ --format="value(response.scan)") > /workspace/scan_id.txt #Analyze the result of the scan - 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 CRITICAL; \ then echo "Failed vulnerability check for CRITICAL level" && exit 1; else echo "No CRITICAL vulnerability found, congrats !" && exit 0; fi #Retag - id: "retag" name: 'gcr.io/cloud-builders/docker' args: ['tag', '{{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image', '{{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image:good'] #pushing to artifact registry - id: "push" name: 'gcr.io/cloud-builders/docker' args: ['push', '{{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image:good'] images: - {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image EOF

Pour cet exemple, les étapes sont limitées au processus de compilation du conteneur. En pratique, vous incluez des instructions et des tests spécifiques à l'application en plus des étapes du conteneur.

  1. Envoyez la compilation pour traitement afin de vérifier qu'elle échoue lorsqu'une faille de gravité CRITICAL est détectée.
gcloud builds submit
  1. Examinez l'échec de la compilation sur la page Historique Cloud Build.

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

Vérifiez que la compilation échoue lorsqu'une faille de gravité CRITICAL est détectée.

Corriger la faille

Mettez à jour le fichier Dockerfile de façon à utiliser une image de base qui ne contient pas de failles CRITICAL.

  1. Écrasez le fichier Dockerfile de façon à utiliser l'image Debian 10 avec la commande suivante :
cat > ./Dockerfile << EOF FROM python:3.8-alpine # App WORKDIR /app COPY . ./ RUN pip3 install Flask==2.1.0 RUN pip3 install gunicorn==20.1.0 RUN pip3 install Werkzeug==2.2.2 CMD exec gunicorn --bind :\$PORT --workers 1 --threads 8 main:app EOF
  1. Envoyez la compilation pour traitement afin de vérifier qu'elle réussira si aucune faille de gravité CRITICAL n'est détectée :
gcloud builds submit
  1. Dans la console Cloud, accédez à Cloud Build > Historique Cloud Build pour vérifier que la compilation a réussi.

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

Corriger la faille

Examiner les résultats de l'analyse

Vérifiez l'image correcte dans Artifact Registry.

  1. Ouvrez Artifact Registry dans la console Cloud.
  2. Cliquez sur artifact-scanning-repo pour afficher le contenu.
  3. Cliquez sur les détails de l'image.
  4. Cliquez sur le dernier condensé de votre image.
  5. Cliquez sur l'onglet Failles correspondant à l'image.

Félicitations !

Vous avez appris à créer une image avec Cloud Build et à la stocker dans Artifact Registry. Vous avez également vu comment l'analyse d'artefacts se déclenche automatiquement. Vous savez également comment analyser les images "à la demande", avant qu'elles ne soient transférées au contrôle du code source.

Étapes suivantes et informations supplémentaires

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 modification du manuel : 23 juillet 2025

Dernier test de l'atelier : 23 juillet 2025

Copyright 2024 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms de société et de produit peuvent être des marques des sociétés 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.