Lorsque vous entendez parler d'une nouvelle faille, il est important d'agir rapidement. Cette page fournit une liste d'appels d'API et de filtres essentiels préconstruits pour vous. Utilisez ces appels d'API pour récupérer les résultats d'analyse d'Artifact Analysis et collecter des informations sur l'état de vos artefacts.
Ce contenu est conçu pour être utilisé avec les métadonnées de l'analyse automatique. Si vos images ont dépassé la période d'analyse continue de 30 jours, vous pouvez exécuter une nouvelle analyse en les transférant à nouveau vers Artifact Registry.
Tous les exemples de cette page accèdent directement à l'API, mais vous pouvez également utiliser les bibliothèques clientes Container Analysis ou les commandes gcloud.
Autorisations requises
Tous ces exemples utilisent la méthode d'API ListOccurrences
. Pour appeler cette méthode, vous aurez besoin du rôle Lecteur d'occurrences Container Analysis
(roles/containeranalysis.occurrences.viewer)
pour le projet que vous analysez.
Si vous analysez des projets dont vous êtes propriétaire, vous disposez déjà des autorisations requises.
Si vous analysez des projets qui ne vous appartiennent pas, suivez les instructions de gestion des accès IAM pour accorder des autorisations.
Pour en savoir plus sur les types d'accès pour les fournisseurs et les clients qui utilisent Artifact Analysis, consultez les autorisations.
Afficher toutes les métadonnées de failles d'une image
Utilisez le filtre kind=VULNERABILITY
avec l'ID de votre projet et l'URL complète de la ressource pour votre image, y compris https://
:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(kind=\"VULNERABILITY\" AND resourceUrl=\"RESOURCE_URL\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Où :
- PROJECT_ID est l'ID de votre projet Google Cloud .
- RESOURCE_URL est l'URL complète de l'image, au format
https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH
. Lehttps://
doit être inclus au début de l'URL. Si vous devez trouver l'URL d'une image, vous pouvez utiliser l'appel dans Afficher toutes les métadonnées d'un projet.
Le résultat inclut une liste des failles avec des informations telles que la gravité, les options d'atténuation (le cas échéant) et le nom du package contenant la faille.
Rechercher une faille spécifique dans un projet
Dans la plupart des cas, Artifact Analysis utilise l'ID CVE comme identifiant de la faille. Toutefois, certaines failles listées dans la base de données Advisory GitHub n'ont pas d'ID CVE associé. Dans ce cas, Artifact Analysis utilise l'ID GHSA.
L'ID de la faille est inclus dans le champ noteName
. Il commence par le préfixe CVE
pour les ID CVE et GHSA
pour les ID GHSA. Considérez l'exemple de résultat suivant obtenu en exécutant la commande permettant d'afficher toutes les failles d'une image :
vulnerabilities:
HIGH:
- name: projects/my-project/occurrences/1234fh2c-699a-462f-b920-93a80f56f544
resourceUri: https://my_region-docker.pkg.dev/my-project/my-repo/my-image@sha256:8a1a79b587797c5164ec95977cf7aaaa828694a615947bdaed6a327d5b6a17bb
noteName: projects/goog-vulnz/notes/CVE-2021-32798
kind: VULNERABILITY
...
- name: projects/my-project/occurrences/OCCURRENCE_ID
resourceUri: https://my_region-docker.pkg.dev/my-project/my-repo/my-image@sha256:8a1a79b587797c5164ec95977cf7aaaa828694a615947bdaed6a327d5b6a17bb
noteName: projects/goog-vulnz/notes/GHSA-884p-74jh-xrg2
kind: VULNERABILITY
...
Dans cet exemple, la première faille de sécurité a l'ID CVE-2021-32798
et la seconde a l'ID GHSA-884p-74jh-xrg2
.
Une fois que vous avez votre ID de faille, vous pouvez exécuter la commande suivante pour récupérer la liste des images concernées dans votre projet qui ont un ID d'occurrence VULN_ID :
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(noteProjectId=\"goog-vulnz\" AND noteId=\"VULN_ID\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Où :
- PROJECT_ID est l'ID de votre projet Google Cloud .
- VULN_ID est l'ID de la faille sous la forme d'un ID CVE ou GHSA, tel que
CVE-2021-32798
ouGHSA-884p-74jh-xrg2
.
Rechercher des failles dans plusieurs projets
Utilisez le globbing curl pour effectuer des requêtes dans plusieurs projets.
Par exemple, l'extrait de code suivant définit une variable pour contenir deux ID de projet, puis envoie un appel d'API pour chaque projet afin de rechercher des occurrences.
PROJECT_IDS="PROJECT_ID_1,PROJECT_ID_2"
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://containeranalysis.googleapis.com/v1/projects/{$PROJECT_IDS}/occurrences"
Où :
- PROJECT_ID_1 est l'ID de projet Google Cloud du premier projet que vous souhaitez examiner.
- PROJECT_ID_2 est l'ID de projet Google Cloud du deuxième projet que vous souhaitez examiner.
Afficher toutes les métadonnées d'un projet
Demandez toutes les occurrences associées à votre ID de 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
Où :
- PROJECT_ID est l'ID de votre projet Google Cloud .
Le résultat inclut des informations sur les failles et d'autres types de métadonnées compatibles associés à votre projet. Par exemple, votre projet peut comporter des informations sur la compilation ou des attestations.
Rechercher un package spécifique dans un projet
Artifact Analysis crée des dépendances de packages pour les artefacts analysés. Pour trouver tous les artefacts qui ont un package spécifique comme dépendance, vous pouvez filtrer par nom de package :
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(dependencyPackageName=\"PACKAGE_NAME\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Où :
- PROJECT_ID est l'ID de votre projet Google Cloud .
- PACKAGE_NAME est le nom du package.
Afficher toutes les métadonnées de package pour une image
Pour afficher tous les types de métadonnées de package pour une image, utilisez le filtre kind=PACKAGE_NAME
avec l'ID de votre projet et l'URL complète de la ressource d'image :
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(kind=\"PACKAGE\" AND resourceUrl=\"RESOURCE_URL\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Où :
- PROJECT_ID est l'ID de votre projet Google Cloud .
- RESOURCE_URL est l'URL complète de l'image, au format
https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH
. Lehttps://
doit être inclus au début de l'URL. Si vous devez trouver l'URL d'une image, vous pouvez utiliser l'appel depuis Afficher toutes les métadonnées d'un projet.
Le résultat inclut une liste de dépendances avec le nom, la version et les informations de licence de chaque dépendance.
Interroger une occurrence spécifique pour obtenir tous les détails disponibles
Vous pouvez exécuter une requête pour obtenir plus d'informations sur une occurrence. Par exemple, si vous utilisez Pub/Sub pour recevoir des notifications sur les occurrences de failles, Pub/Sub envoie des informations de base pour vous aider à identifier l'occurrence qui a changé et la date de la modification.
La charge utile inclut un ID d'occurrence. Vous pouvez utiliser l'ID d'occurrence pour rechercher des informations qui vous aideront à trier les problèmes et à prendre des mesures.
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
Où :
- PROJECT_ID est l'ID de votre projet Google Cloud .
OCCURRENCE_ID peut être l'une des valeurs suivantes, en fonction du résultat de la commande Afficher toutes les métadonnées d'un projet :
- Valeur numérique issue d'une liste d'occurrences.
- Valeur numérique à la fin de l'URL d'un message Pub/Sub.
La sortie inclut des informations telles que le type de package, la gravité de la faille, le score CVSS et des informations sur les correctifs, le cas échéant.
Étapes suivantes
- En savoir plus sur les options de filtrage des métadonnées
- Effectuez une analyse manuelle à la demande.
- Découvrez les bonnes pratiques pour protéger votre chaîne d'approvisionnement logicielle.