Cuando te enteres de una nueva vulnerabilidad, es importante que actúes rápidamente. En esta página se ofrece una lista de llamadas a la API y filtros esenciales que ya están configurados. Usa estas llamadas a la API para obtener los resultados de los análisis de Artifact Analysis y recoger información sobre el estado de tus artefactos.
Este contenido se ha diseñado para usarse con metadatos de análisis automático. Si tus imágenes han superado el periodo de 30 días de análisis continuo, puedes ejecutar un nuevo análisis volviendo a enviar las imágenes a Artifact Registry.
En todos los ejemplos de esta página se accede a la API directamente, pero también puedes usar las bibliotecas de cliente de Container Analysis o los comandos de gcloud.
Permisos obligatorios
En todos estos ejemplos se usa el método de la API ListOccurrences
. Para llamar a este método, necesitas el rol Lector de repeticiones de Container Analysis
(roles/containeranalysis.occurrences.viewer)
en el proyecto que estés analizando.
Si analizas proyectos de tu propiedad, ya tienes los permisos necesarios.
Si analizas proyectos que no son de tu propiedad, sigue las instrucciones de gestión de acceso de IAM para conceder permisos.
Para obtener más información sobre los tipos de acceso para proveedores y clientes que usan Artifact Analysis, consulta los permisos.
Ver todos los metadatos de vulnerabilidades de una imagen
Usa el filtro kind=VULNERABILITY
con tu ID de 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
Donde:
- PROJECT_ID es el ID de tu proyecto Google Cloud .
- RESOURCE_URL es la URL completa de la imagen, con 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 Ver todos los metadatos de un proyecto.
La salida 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.
Buscar 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 avisos de GitHub que no tienen un ID de CVE asociado. En este caso, Artifact Analysis usa el ID de GHSA.
El ID de la vulnerabilidad se incluye en el campo noteName
. Empieza con el prefijo CVE
para los IDs de CVE y GHSA
para los IDs de GHSA. Consulta el siguiente ejemplo de salida al 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
.
Una vez que tengas el ID de la vulnerabilidad, puedes ejecutar el siguiente comando para obtener una lista de las imágenes afectadas de tu proyecto que tengan el ID de ocurrencia 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
Donde:
- PROJECT_ID es el ID de tu proyecto Google Cloud .
- VULN_ID es el ID de la vulnerabilidad como ID de CVE o número de ID de GHSA, como
CVE-2021-32798
oGHSA-884p-74jh-xrg2
.
Buscar vulnerabilidades en varios proyectos
Usa globbing de curl para hacer consultas en varios proyectos.
Por ejemplo, el siguiente fragmento define una variable que contiene dos IDs de proyecto y, a continuación, envía una llamada a la API para cada proyecto con el fin de buscar coincidencias.
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"
Donde:
- PROJECT_ID_1 es el ID del primer proyecto que quieres examinar. Google Cloud
- PROJECT_ID_2 es el ID del proyecto Google Cloud del segundo proyecto que quieres examinar.
Ver todos los metadatos de un proyecto
Solicita todas las ocurrencias asociadas a tu ID de 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
Donde:
- PROJECT_ID es el ID de tu proyecto Google Cloud .
El resultado incluye información sobre vulnerabilidades y otros tipos de metadatos admitidos asociados a tu proyecto. Por ejemplo, tu proyecto puede tener detalles de compilación o certificaciones.
Buscar un paquete específico en un proyecto
Artifact Analysis crea dependencias de paquetes para los artefactos analizados. Para encontrar todos los artefactos que tengan un paquete específico como dependencia, puede 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
Donde:
- PROJECT_ID es el ID de tu proyecto Google Cloud .
- PACKAGE_NAME es el nombre del paquete.
Ver todos los metadatos de un paquete de una imagen
Para ver todos los tipos 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
Donde:
- PROJECT_ID es el ID de tu proyecto Google Cloud .
- RESOURCE_URL es la URL completa de la imagen, con 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 Ver todos los metadatos de un proyecto.
La salida incluye una lista de dependencias con el nombre de la dependencia, la versión y la información de la licencia.
Consultar una ocurrencia específica para obtener todos los detalles disponibles
Puedes ejecutar una consulta para obtener más detalles sobre una aparición. Por ejemplo, si usas Pub/Sub para recibir notificaciones sobre las incidencias de vulnerabilidades, Pub/Sub envía detalles básicos para ayudarte a identificar la incidencia que ha cambiado y cuándo se ha producido el cambio.
La carga útil incluye un ID de ocurrencia. Puede usar el ID de ocurrencia para consultar los detalles que le 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
Donde:
- PROJECT_ID es el ID de tu proyecto Google Cloud .
OCCURRENCE_ID puede ser cualquiera de los siguientes valores, en función del resultado del comando de Ver todos los metadatos de un proyecto:
- Valor numérico de una lista de repeticiones.
- 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 CVSS e información sobre las correcciones, si están disponibles.
Siguientes pasos
- Consulta más opciones de filtrado de metadatos.
- Ejecutar un análisis manual bajo demanda.
- Descubre las prácticas recomendadas para proteger tu cadena de suministro de software.