En este documento, se explica cómo habilitar la API de Container Scanning, enviar una imagen a Artifact Registry y ver la lista de vulnerabilidades que se encontraron en la imagen.
Artifact Analysis almacena la información de vulnerabilidades como notas. Se crea un caso para cada instancia de una nota asociada con una imagen. Consulta los documentos de descripción general y precios para obtener más información.
Antes de comenzar
- Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry and Container Scanning APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry and Container Scanning APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init - Crea un repositorio de Docker en Artifact Registry y envía una imagen de contenedor con tu código de Python al repositorio. Si no conoces Artifact Registry, consulta la guía de inicio rápido de Docker.
Si deseas obtener información para usar Cloud Build para compilar y organizar en contenedores tus aplicaciones de Python, consulta Compila, prueba y organiza en contenedores aplicaciones de Python.
Consulta las vulnerabilidades de la imagen
Artifact Analysis analiza las imágenes nuevas cuando se suben a Artifact Registry. Este análisis extrae información sobre los paquetes en el contenedor.
Puedes ver los casos de vulnerabilidad de tus imágenes en Artifact Registry con la consola de Google Cloud , Google Cloud CLI o la API de Container Analysis. Si una imagen tiene vulnerabilidades, puedes obtener los detalles.
Artifact Analysis sigue analizando imágenes y paquetes siempre que se hayan extraído en los últimos 30 días. Después de 30 días, ya no se actualizarán los metadatos de las imágenes y los paquetes analizados, y los resultados estarán inactivos.
Artifact Analysis archiva los metadatos que han estado inactivos durante más de 90 días. Estos metadatos archivados solo se pueden evaluar con la API. Para volver a analizar una imagen con metadatos inactivos o archivados, extráela. La actualización de los metadatos puede tardar hasta 24 horas. No se pueden volver a analizar los paquetes con metadatos obsoletos o archivados.
Visualiza las ocurrencias en la consola de Google Cloud
Para ver las vulnerabilidades de una imagen, sigue estos pasos:
Obtén la lista de repositorios.
En la lista de repositorios, haz clic en uno.
En la lista de imágenes, haz clic en el nombre de una imagen.
Los totales de vulnerabilidades para cada resumen de imagen se muestran en la columna Vulnerabilidades.
Para ver la lista de vulnerabilidades de una imagen, haz clic en el vínculo de la columna Vulnerabilidades.
En la sección Resultados del análisis, se muestra un resumen de los tipos de paquetes analizados, la cantidad total de vulnerabilidades, las vulnerabilidades con correcciones disponibles, las vulnerabilidades sin correcciones y la gravedad efectiva.
En la tabla de vulnerabilidades, se indica el nombre de las vulnerabilidades y exposiciones comunes (CVE) para cada vulnerabilidad encontrada, la gravedad efectiva, la puntuación del Common Vulnerability Scoring System (CVSS), las correcciones (cuando están disponibles), el nombre del paquete que contiene la vulnerabilidad y el tipo de paquete.
La consola deGoogle Cloud muestra hasta 1,200 vulnerabilidades por página en esta tabla. Puedes filtrar y ordenar estos archivos para verificar un archivo, un directorio, una capa o un tipo de archivo específicos por extensión.
Para obtener detalles sobre una CVE específica, haz clic en su nombre.
Para ver los detalles de la ocurrencia de la vulnerabilidad, como el número de versión y la ubicación afectada, haz clic en Ver o Ver corregida en la fila con el nombre de la vulnerabilidad. El texto del vínculo es Ver para las vulnerabilidades sin corrección y Ver corregidas para las vulnerabilidades en las que se aplicó una corrección.
Cómo ver las vulnerabilidades en una capa específica
Artifact Analysis proporciona metadatos específicos de la capa para ayudarte a identificar qué paquete contiene vulnerabilidades y qué comando de compilación de Docker introdujo esa capa.Para ver los metadatos de vulnerabilidades basados en capas en la consola de Google Cloud , haz lo siguiente:
En Artifact Registry, abre tu lista de repositorios.
En la página Repositorios, haz clic en un repositorio.
En la página Detalles del repositorio, haz clic en una imagen.
En la lista de versiones de la imagen, haz clic en un resumen de la imagen.
En la página de detalles del resumen de la imagen, haz clic en la pestaña Vulnerabilidades.
Cuando hay metadatos basados en capas disponibles, Artifact Analysis muestra una lista de capas seleccionables en la barra Capa:
Para ver la lista de capas, haz clic en el menú desplegable de capas.
Se abrirá una lista desplegable que muestra una lista numerada de capas. La capa 0 representa la capa inferior, y cada capa siguiente se basa en la anterior. Solo se muestran las capas en las que se encontraron vulnerabilidades.
Para cada capa, Artifact Analysis muestra el comando de Docker que se usó para compilarla y la cantidad de vulnerabilidades que se encontraron en ella.
Para obtener más información sobre las vulnerabilidades en una capa específica, selecciona una capa de la lista de capas.
La tabla de vulnerabilidades se actualiza para mostrar solo las vulnerabilidades encontradas en la capa seleccionada. Puedes aplicar más filtros o investigar vulnerabilidades específicas.
Haz clic en VER o VER CORRECCIÓN junto a una vulnerabilidad para ver información más detallada sobre ella.
En el panel lateral Detalles de la vulnerabilidad, se muestran las ubicaciones de los archivos en los que los paquetes tienen vulnerabilidades.
En la tabla Ubicaciones de archivos, coloca el cursor sobre el signo de interrogación para abrir metadatos de capas adicionales.
En un diálogo, se muestran el índice de la capa, el comando de compilación de la capa, el resumen de la capa y la imagen base en la que puedes corregir la vulnerabilidad.
Visualiza las ocurrencias con gcloud
Para ver las ocurrencias de las imágenes en Artifact Registry, ejecuta el comando gcloud artifacts docker images list:
gcloud artifacts docker images list --show-occurrences \
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID
Aquí:
- LOCATION es la ubicación regional o multirregional del repositorio.
- PROJECT_ID es el ID del proyecto de tu consola de Google Cloud .
- REPOSITORY es el nombre del repositorio en el que se almacena la imagen.
- IMAGE_ID es el nombre de la imagen en el repositorio. No puedes especificar una etiqueta de imagen con este comando.
De forma predeterminada, el comando devuelve los 10 resultados más recientes. Para mostrar una cantidad diferente de resultados, usa la marca --show-occurrences-from.
Por ejemplo, el siguiente comando devuelve los 25 resultados más recientes:
gcloud artifacts docker images list --show-occurrences-from=25 \
us-central1-docker.pkg.dev/my-project/my-repo/my-image
El resultado es similar al siguiente:
Imagen de salida de muestra
{
"name": "projects/my-project/locations/us-central1/occurrences/22d3edfb-34f2-4d3f-be08-fd90c549f010",
"resource": {
"uri": "https://us-central1-docker.pkg.dev/my-project/my-repo/golang-nginx@sha256:5b54ef20748417ccdb0b87afedf98c44e699e2f59bd6cv48cbdc1ca2e72c80e3"
},
"noteName": "projects/my-project/locations/us-central1/notes/CVE-2005-2541",
"kind": "VULNERABILITY",
"createTime": "2025-01-21T15:57:01.238832Z",
"updateTime": "2025-01-21T15:57:01.238832Z",
"vulnerability": {
"severity": "CRITICAL",
"cvssScore": 10,
"packageIssue": [
{
"affectedLocation": {
"cpeUri": "cpe:/o:debian:debian_linux:12",
"package": "tar",
"version": {
"name": "1.34+dfsg",
"revision": "1.2+deb12u1",
"kind": "NORMAL"
}
},
"fixedLocation": {
"cpeUri": "cpe:/o:debian:debian_linux:12",
"package": "tar",
"version": {
"kind": "MAXIMUM"
}
},
"packageType": "OS",
"effectiveSeverity": "LOW",
"file_location": [
{
"file_path": "/var/lib/dpkg/status",
"layerDetails": {
"index": 0,
"diffID": "sha256:123",
"buildCommand": "FROM golang:example_sha256",
"BaseImages": [
{
"name": "library/golang",
},
],
},
},
],
}
],
"shortDescription": "CVE-2005-2541",
"longDescription": "NIST vectors: AV:N/AC:L/Au:N/C:C/I:C/A:C",
"relatedUrls": [
{
"url": "https://security-tracker.debian.org/tracker/CVE-2005-2541",
"label": "More Info"
}
],
"effectiveSeverity": "LOW",
"cvssVersion": "CVSS_VERSION_2",
"cvssV2": {
"baseScore": 10,
"attackVector": "ATTACK_VECTOR_NETWORK",
"attackComplexity": "ATTACK_COMPLEXITY_LOW",
"authentication": "AUTHENTICATION_NONE",
"confidentialityImpact": "IMPACT_COMPLETE",
"integrityImpact": "IMPACT_COMPLETE",
"availabilityImpact": "IMPACT_COMPLETE"
}
}
}
Cómo filtrar los casos de vulnerabilidades
Para filtrar los casos de vulnerabilidades, usa el parámetro --occurrence-filter:
gcloud artifacts docker images list --show-occurrences \
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID \
--occurrence-filter=FILTER_EXPRESSION
Aquí:
- LOCATION es la ubicación regional o multirregional del repositorio.
- PROJECT_ID es el ID de tu proyecto en la consola de Google Cloud .
- REPOSITORY es el nombre del repositorio en el que se almacena la imagen.
- IMAGE_ID es el nombre de la imagen en el repositorio.
- FILTER_EXPRESSION es una expresión de filtro de muestra con el formato que se explica en Filtrar casos de vulnerabilidades.
Cómo ver las vulnerabilidades de una capa específica
Puedes usar el campolayerDetails para determinar qué capa específica introdujo un paquete vulnerable y ver información adicional sobre esa capa. Por ejemplo, considera el siguiente resultado de layerDetails para una imagen: