Cuando te enteres de una vulnerabilidad nueva, es importante que actúes con rapidez. En esta página, se proporciona una lista de llamadas y filtros de API esenciales que ya están creados para ti. Usa estas llamadas a la API para recuperar los resultados del análisis 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 30 días de análisis continuo, puedes ejecutar un nuevo análisis enviando los datos a Artifact Registry nuevamente.
En todos los ejemplos de esta página, se accede a la API directamente, pero también puedes usar las bibliotecas cliente de Container Analysis o los comandos de gcloud.
Permisos necesarios
Todos estos ejemplos usan 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 son de tu propiedad, ya tienes los permisos necesarios.
Si analizas proyectos que no son tuyos, usa las instrucciones de administración de acceso de IAM para otorgar permisos.
Para obtener más información sobre los tipos de acceso para proveedores y clientes que usan Artifact Analysis, consulta permisos.
Visualiza todos los metadatos de vulnerabilidades de una imagen
Usa el filtro kind=VULNERABILITY
con el ID de tu proyecto y la URL completa del recurso de tu imagen, incluido 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
Aquí:
- PROJECT_ID es el Google Cloud ID del proyecto.
- RESOURCE_URL es la URL completa de la imagen, en el formato
https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH
. Elhttps://
debe incluirse al principio de la URL. Si necesitas encontrar la URL de una imagen, puedes usar la llamada en Cómo ver todos los metadatos de un 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 que se indican en la base de datos de asesoría 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. Considera el siguiente ejemplo de 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
...
En este ejemplo, la primera vulnerabilidad tiene el ID CVE-2021-32798
y la segunda, el ID GHSA-884p-74jh-xrg2
.
Después de obtener el ID de vulnerabilidad, puedes ejecutar el siguiente comando para recuperar una lista de las imágenes afectadas en tu proyecto que tienen un ID de ocurrencia de 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
Aquí:
- PROJECT_ID es el Google Cloud ID del proyecto.
- VULN_ID es el ID de la vulnerabilidad como un ID de CVE o un número de ID de GHSA, como
CVE-2021-32798
oGHSA-884p-74jh-xrg2
.
Busca vulnerabilidades en varios proyectos
Usa la expansión 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 con el objetivo de 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"
Aquí:
- PROJECT_ID_1 es el Google Cloud ID del proyecto del primer proyecto que deseas examinar.
- PROJECT_ID_2 es el ID del proyecto Google Cloud del segundo proyecto que deseas examinar.
Cómo ver todos los metadatos de un proyecto
Solicita todas las ocurrencias asociadas con tu ID del 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
Aquí:
- PROJECT_ID es el Google Cloud ID del proyecto.
El resultado incluye información sobre vulnerabilidades y otros tipos de metadatos admitidos asociados con tu proyecto. Por ejemplo, tu proyecto podría tener detalles de compilación o certificaciones.
Cómo verificar si hay un paquete específico en un proyecto
Artifact Analysis crea dependencias de paquetes para los artefactos analizados. Para encontrar todos los artefactos que tienen un paquete específico como dependencia, puedes filtrar por el nombre del paquete:
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
Aquí:
- PROJECT_ID es el Google Cloud ID del proyecto.
- PACKAGE_NAME es el nombre del paquete.
Cómo ver todos los metadatos del paquete de una imagen
Para ver todos los tipos diferentes de metadatos de paquetes de una imagen, usa el filtro kind=PACKAGE_NAME
con el ID de tu proyecto y la URL completa del recurso de imagen:
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
Aquí:
- PROJECT_ID es el Google Cloud ID del proyecto.
- RESOURCE_URL es la URL completa de la imagen, en el formato
https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH
. Elhttps://
debe incluirse al principio de la URL. Si necesitas encontrar la URL de una imagen, puedes usar la llamada de Cómo ver todos los metadatos de un proyecto.
El resultado incluye una lista de dependencias con el nombre, la versión y la información de licencia de cada dependencia.
Consulta una ocurrencia específica para obtener todos los detalles disponibles
Puedes ejecutar una consulta para obtener más detalles sobre una ocurrencia. Por ejemplo, si usas Pub/Sub para recibir notificaciones sobre las ocurrencias de vulnerabilidades, Pub/Sub envía detalles básicos para ayudarte a identificar la ocurrencia que cambió y cuándo se produjo el cambio.
La carga útil incluye un ID de caso. Puedes usar el ID de ocurrencia para consultar detalles que te ayuden a priorizar 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
Aquí:
- PROJECT_ID es el Google Cloud ID del proyecto.
OCCURRENCE_ID puede ser cualquiera de los siguientes, según el resultado del comando de Cómo ver todos los metadatos de un proyecto:
- Es un valor numérico de una lista de ocurrencias.
- Es el valor numérico al final de la URL de un mensaje de Pub/Sub.
El resultado incluye información como el tipo de paquete, la gravedad de la vulnerabilidad, la puntuación de 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 un análisis manual a pedido.
- Obtén información sobre las prácticas recomendadas para proteger tu cadena de suministro de software.