Cuando te enteres de una nueva vulnerabilidad, es importante actuar con rapidez. En esta página, se proporciona una lista de llamadas a la API y filtros esenciales que se preconstruyen para tu uso. Usa estas llamadas a la API para recuperar los resultados de Artifact Analysis y recopilar información sobre el estado de tus artefactos.
Este contenido está diseñado para usarse con metadatos de análisis automático. Si tus imágenes superaron el período de análisis continuo de 30 días, puedes ejecutar un nuevo análisis. Para ello, vuelve a enviar Artifact Registry.
Todos los ejemplos de esta página acceden a la API directamente, pero también puedes usar las bibliotecas cliente de Container Analysis o los comandos de gcloud.
Permisos necesarios
En todos estos ejemplos, se usa el método de la API ListOccurrences
. Para llamar a este método, necesitarás el rol (roles/containeranalysis.occurrences.viewer)
de Visualizador de casos de Container Analysis para el proyecto que estás analizando.
Si analizas proyectos que te pertenecen, ya tienes los permisos necesarios.
Si analizas proyectos que no te pertenecen, usa las instrucciones de administración de acceso de IAM para otorgar permisos.
Para obtener más información sobre los tipos de acceso de proveedores y clientes que usan Artifact Analysis, consulta Permisos.
Cómo ver todos los metadatos de vulnerabilidad de una imagen
Usa el filtro KIND="VULNERABILITY"
con el ID de tu proyecto y la URL de recurso completa de tu imagen, incluida 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
Reemplaza lo siguiente:
- PROJECT_ID es tu ID del proyecto de Cloud. Para ver una
lista de tus proyectos, puedes usar
gcloud projects list
. - RESOURCE_URL es la URL completa de la imagen, en el formato
https://HOSTNAME/PROJECT_ID/IMAGE_ID@sha256:HASH
. Debes usarhttps://
al comienzo de la URL. Si necesitas encontrar la URL de una imagen, puedes usar la llamada en "Quiero comprender en detalle todos los metadatos de mi proyecto".
El resultado incluye una lista de vulnerabilidades con detalles como la gravedad, las opciones de mitigación, si están disponibles, y el nombre del paquete que contiene la vulnerabilidad.
Cómo verificar si hay una vulnerabilidad específica en un proyecto
En la mayoría de los casos, Artifact Analysis usa el ID de CVE como identificador de vulnerabilidad. Sin embargo, hay algunas vulnerabilidades enumeradas en la base de datos de avisos de GitHub que no tienen un ID de CVE asociado. En este caso, Artifact Analysis usa el ID de GHSA.
El ID de vulnerabilidad se incluye como parte del campo noteName
. Comienza con el prefijo CVE
para los IDs de CVE y GHSA
para los IDs de GHSA. Por ejemplo, si el siguiente resultado es el resultado de ejecutar el comando para ver todas las vulnerabilidades de una imagen:
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
...
La primera vulnerabilidad tiene el ID CVE-2021-32798
, y la segunda tiene el ID GHSA-884p-74jh-xrg2
.
Obtén el identificador de la vulnerabilidad.
Usa el ID de CVE o el ID de GHSA en la siguiente expresión de filtro para recuperar una lista de las imágenes afectadas:
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
Reemplaza lo siguiente:
- PROJECT_ID es tu ID del proyecto de Cloud. Para ver una
lista de tus proyectos, puedes usar
gcloud projects list
. - VULN_ID es el ID de la vulnerabilidad. El ID de CVE o el número de ID de GHSA, como
CVE-2021-32798
oGHSA-884p-74jh-xrg2
Por ejemplo, en la siguiente llamada, se muestra cómo recuperar los resultados del análisis de las imágenes de tu proyecto que tienen una ocurrencia de CVE-2023-23915
:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(noteProjectId=\"goog-vulnz\" AND noteId=\"CVE-2023-23915\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Reemplaza lo siguiente:
- PROJECT_ID es tu ID del proyecto de Cloud. Para ver una
lista de tus proyectos, puedes usar
gcloud projects list
.
Busca vulnerabilidades en varios proyectos
Usa el glob de curl para realizar consultas en varios proyectos.
Por ejemplo, el siguiente fragmento establece una variable para que contenga dos IDs de proyecto y, luego, envía una llamada a la API para cada proyecto para buscar ocurrencias.
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"
Reemplaza lo siguiente:
- PROJECT_ID_1 es el ID del proyecto de Google Cloud del primer proyecto que deseas examinar.
- PROJECT_ID_2 es el ID del proyecto de Google Cloud del segundo proyecto que deseas examinar.
Si necesitas encontrar los IDs de los proyectos, puedes ver una lista de ellos con gcloud projects list
.
No se admite una sola llamada a la API en varios proyectos.
Obtener una comprensión amplia de todos los metadatos de un proyecto
Solicita todas las ocasiones asociadas con el ID de tu proyecto:
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
Reemplaza lo siguiente:
- PROJECT_ID es tu ID del proyecto de Cloud.
El resultado incluye información sobre vulnerabilidades y otros tipos de metadatos compatibles asociados con tu proyecto. Por ejemplo, tu proyecto podría tener detalles de compilación o certificaciones.
Cómo consultar una ocurrencia específica para obtener todos los detalles disponibles
Para obtener más detalles sobre un suceso individual, usa la siguiente solicitud.
Por ejemplo, si usas Pub/Sub para recibir notificaciones sobre ocurrencias de vulnerabilidades, Pub/Sub envía detalles básicos para ayudarte a identificar el evento que cambió y cuándo. La carga útil incluye un ID de caso. Puedes usar el ID de ocurrencia para consultar detalles que te ayuden a clasificar los problemas y tomar medidas.
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
Reemplaza lo siguiente:
- PROJECT_ID es tu ID del proyecto de Cloud.
- OCCURRENCE_ID es un valor numérico de la lista de ocurrencias del ejemplo anterior. O bien, si recibes un mensaje de Pub/Sub, usa el valor numérico al final de la URL en ese mensaje.
El resultado incluye información como el tipo de paquete, la gravedad de la vulnerabilidad, la puntuación CVSS y la información sobre las correcciones, si están disponibles.
¿Qué sigue?
- Obtén más información sobre las opciones de filtrado de metadatos.
- Ejecuta una búsqueda manual on demand.
- Obtén información sobre las prácticas recomendadas para proteger tu cadena de suministro de software.