Scanner automatiquement les colis

Ce document explique comment activer l'API Container Scanning, transférer une image vers Artifact Registry et afficher la liste des failles détectées dans l'image.

Artifact Analysis stocke les informations sur les failles sous forme de notes. Une occurrence est créée pour chaque instance d'une note associée à une image. Pour en savoir plus, consultez les documents Présentation et Tarifs.

Avant de commencer

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Artifact Registry and Container Scanning APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  7. To initialize the gcloud CLI, run the following command:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Artifact Registry and Container Scanning APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  13. To initialize the gcloud CLI, run the following command:

    gcloud init
  14. Créez un dépôt dans Artifact Registry et envoyez-y un package contenant le code de votre application. Si vous ne savez pas comment gérer les packages dans Artifact Registry, consultez les rubriques suivantes :
    1. Stocker des packages Java dans Artifact Registry
    2. Stocker des packages Node.js dans Artifact Registry
    3. Stocker des packages Python dans Artifact Registry

L'activation de cette API permet également l'analyse des packages de langages dans Artifact Registry. Consultez la section Types de packages compatibles.

Afficher les failles du package

Artifact Analysis analyse les nouveaux packages au fur et à mesure de leur importation dans Artifact Registry. Cette analyse extrait des informations sur le package et ses dépendances.

Vous pouvez afficher les occurrences de failles de vos images dans Artifact Registry à l'aide de la console Google Cloud , de Google Cloud CLI ou de l'API Container Analysis. Si une image présente des failles, vous pouvez obtenir les détails.

Artifact Analysis continue d'analyser les images et les packages tant qu'ils ont été extraits au cours des 30 derniers jours. Au bout de 30 jours, les métadonnées des images et des packages analysés ne seront plus mises à jour, et les résultats seront obsolètes.

Artifact Analysis archive les métadonnées obsolètes depuis plus de 90 jours. Ces métadonnées archivées ne peuvent être évaluées qu'à l'aide de l'API. Pour lancer une nouvelle analyse d'une image avec des métadonnées obsolètes ou archivées, vous devez extraire cette image. L'actualisation des métadonnées peut prendre jusqu'à 24 heures. Les packages dont les métadonnées sont obsolètes ou archivées ne peuvent pas être réanalysés.

Afficher les occurrences dans la console Google Cloud

Pour afficher les failles d'un package :

  1. Obtenez la liste des dépôts.

    Ouvrir la page "Dépôts"

  2. Dans la liste des dépôts, cliquez sur un dépôt.

  3. Dans la liste des packages, cliquez sur le nom d'un package.

    Le nombre total de failles par package est affiché dans la colonne Vulnerabilities (Failles).

    Package analysé présentant des failles

  4. Pour afficher la liste des failles d'un package, cliquez sur le lien dans la colonne Vulnerabilities (Failles).

    La section Résultats de l'analyse affiche un récapitulatif des types de packages analysés, du nombre total de failles, des failles pour lesquelles des correctifs sont disponibles, des failles sans correctifs et de la gravité effective.

    Page des résultats de l'analyse listant les failles, les correctifs et le niveau de gravité effectif

    Le tableau des failles liste le nom CVE (Common Vulnerabilities and Exposures) de chaque faille détectée, la gravité effective, le score CVSS (Common Vulnerability Scoring System), les correctifs (le cas échéant), le nom du package contenant la faille et le type de package. Vous pouvez filtrer et trier ces fichiers pour vérifier un fichier, un répertoire ou un type de fichier spécifique par extension de fichier.La console  Google Cloud affiche jusqu'à 1 200 failles par page dans ce tableau.

  5. Pour en savoir plus sur une faille CVE spécifique, cliquez sur son nom.

  6. Pour afficher les détails d'une occurrence de faille, tels que le numéro de version et l'emplacement concerné, cliquez sur Afficher ou Afficher les failles corrigées dans la ligne correspondant au nom de la faille. Le texte du lien est Afficher pour les failles sans correctif et Afficher les correctifs pour les failles auxquelles un correctif a été appliqué.

Afficher les occurrences à l'aide de gcloud

Pour afficher les occurrences des packages dans Artifact Registry, exécutez la commande gcloud artifacts versions describe :

gcloud artifacts versions describe VERSION \
    --location=LOCATION --repository=REPOSITORY --package=PACKAGE --show-package-vulnerability

Où :

  • VERSION correspond à la version du package pour laquelle vous consultez les occurrences.
  • LOCATION est l'emplacement régional ou multirégional du dépôt.
  • REPOSITORY est le nom du dépôt où le package est stocké.
  • PACKAGE est le nom du package dans le dépôt. Vous ne pouvez pas spécifier de tag de package avec cette commande.

Afficher les occurrences à l'aide de l'API

Pour obtenir la liste des occurrences dans votre projet :

 curl -X GET -H "Content-Type: application/json" -H \
    "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences

Pour obtenir un résumé des failles de votre projet :

 curl -X GET -H "Content-Type: application/json" -H \
    "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences:vulnerabilitySummary

Pour obtenir des informations sur une occurrence spécifique :

 curl -X GET -H "Content-Type: application/json" -H \
    "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences/OCCURRENCE_ID

Filtrer les occurrences

Vous pouvez utiliser des chaînes de filtre dans les commandes gcloud et l'API Artifact Analysis pour filtrer les occurrences avant de les afficher. Les sections ci-dessous décrivent les filtres de recherche compatibles.

Afficher les occurrences d'un type spécifique

Vous pouvez utiliser la valeur kind pour filtrer par type d'occurrence. Consultez les types disponibles.

Les exemples suivants montrent comment filtrer les occurrences de failles de package :

gcloud

Le filtrage des occurrences n'est pas compatible avec la Google Cloud CLI pour l'analyse basée sur les packages.

API

Dans votre requête API, utilisez l'expression de filtre suivante :

kind="PACKAGE_VULNERABILITY" AND resourceUrl="RESOURCE_URL"

Où :

  • PACKAGE_VULNERABILITY est le genre de l'occurrence.
  • RESOURCE_URL est l'URL complète du package au format projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/packages/PACKAGE_ID/PACKAGE_TYPE/VERSION_ID :
    • PROJECT_ID est l'ID de projet de votre console Google Cloud .
    • LOCATION est l'emplacement régional ou multirégional du dépôt.
    • REPOSITORY est le nom du dépôt où l'image est stockée.
    • PACKAGE_ID est le nom du package dans lequel l'image est stockée.
    • PACKAGE_TYPE correspond au type de module linguistique de l'application. Les types disponibles sont les suivants : pythonPackages, mavenArtifacts et npmPackages.
    • VERSION correspond au numéro de version du package.

Vous pouvez utiliser la fonction hasPrefix pour filtrer avec une portée plus large.

Par exemple, les filtres suivants s'appliquent aux occurrences d'un type spécifique dans plusieurs versions du même package :

kind="NOTE_KIND" AND has_prefix(resourceUrl, "RESOURCE_URL_PREFIX")

Où :

  • RESOURCE_URL_PREFIX spécifie une sous-chaîne à partir d'une URL de ressource.
    • Pour filtrer toutes les versions d'un package, omettez la version. Utilisez le format suivant : projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID.
    • Pour filtrer tous les packages d'un projet, spécifiez uniquement l'emplacement de la ressource et le projet. Utilisez le format suivant : projects/PROJECT_ID/locations/LOCATION.

Afficher les occurrences de failles

Vous pouvez afficher des listes d'occurrences de failles à l'aide de la gcloud CLI ou de l'API Artifact Analysis.

gcloud

Pour récupérer la liste des occurrences de failles pour un package, utilisez l'indicateur --show-package-vulnerability :

gcloud artifacts versions describe VERSION_ID --repository=REPOSITORY_ID
  --package=GROUP_ID:ARTIFACT_ID --show-package-vulnerability

Où :

  • VERSION correspond au numéro de version du package.
  • REPOSITORY est le nom du dépôt où le package est stocké.
  • GROUP_ID est l'identifiant de groupe de votre package.
  • ARTIFACT_ID est l'identifiant d'artefact de votre package.

API

Dans votre requête API, utilisez l'expression de filtre suivante :

GET https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences?filter=kind%3D%22VULNERABILITY%22%20AND%20resourceUrl%3D%22ENCODED_RESOURCE_URL%22

Où :

  • ENCODED_RESOURCE_URL est le chemin d'accès encodé à votre image. Pour en savoir plus sur l'encodage, consultez Encodage d'URL.

Pour en savoir plus sur l'utilisation de l'API, consultez projects.occurrences.get.

Afficher les images associées à une note spécifique

Vous pouvez récupérer une liste de ressources associées à un ID de note spécifique. Par exemple, vous pouvez répertorier les images avec une faille CVE spécifique.

Pour répertorier toutes les images d'un projet associées à une note particulière, utilisez l'expression de filtre suivante :

gcloud

Le filtrage des occurrences n'est pas compatible avec la Google Cloud CLI pour l'analyse basée sur les packages.

API

GET https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences?filter=noteProjectId%3D%22goog-vulnz%22%20AND%20resourceUrl%3D%22ENCODED_RESOURCE_URL%22%20AND%20noteId%3D%22NOTE_ID%22

Où :

  • goog-vulnz est le PROVIDER_PROJECT_ID pour l'analyse des failles Artifact Analysis. Si vous utilisez Artifact Analysis dans un projet personnalisé, vous pouvez remplacer cette valeur par l'ID de votre propre projet de fournisseur.
  • ENCODED_RESOURCE_URL est le chemin d'accès encodé à votre image. Pour en savoir plus sur l'encodage, consultez Encodage d'URL.
  • NOTE_ID est l'ID de la note. Par exemple, lorsqu'une faille est détectée dans les résultats de l'analyse Artifact Analysis, elle utilise souvent un format d'ID CVE semblable à CVE-2019-12345.

Pour consulter une image spécifique pour une note spécifique, utilisez l'expression de filtre suivante :

gcloud

Le filtrage des occurrences n'est pas compatible avec la Google Cloud CLI pour l'analyse basée sur les packages.

API

Dans votre requête API, ajoutez l'expression de filtre suivante :

resourceUrl="RESOURCE_URL" AND noteProjectId="goog-vulnz" \
AND noteId="NOTE_ID"

Où :

  • RESOURCE_URL correspond à l'URL complète du package au format projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/packages/PACKAGE_ID/PACKAGE_TYPE/VERSION_ID.
  • goog-vulnz est le PROVIDER_PROJECT_ID pour l'analyse des failles Artifact Analysis.
  • NOTE_ID est l'ID de la note. Les notes relatives à la sécurité sont souvent au format CVE-2019-12345.

Étapes suivantes