Cómo analizar paquetes de Go automáticamente

Aprende a habilitar el análisis automático, enviar una imagen de contenedor a Artifact Registry y ver una lista de las vulnerabilidades que se encuentran en la imagen.

Artifact Analysis busca vulnerabilidades cada vez que se envía una imagen a Artifact Registry. Los administradores de plataformas y los desarrolladores de aplicaciones pueden usar esta función de análisis automático para ayudar a identificar riesgos en su canalización de entrega de software.

En esta guía de inicio rápido, se usa un paquete simple disponible de forma pública para demostrar un tipo de análisis de paquetes. De forma predeterminada, Artifact Analysis busca vulnerabilidades en varios tipos de paquetes una vez que habilitas la API de análisis. Los tipos de paquetes compatibles incluyen SO, Go, Java (Maven), Python y Node.js (npm).

Antes de comenzar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Artifact Registry and Container Scanning APIs:

    gcloud services enable containerscanning.googleapis.com  artifactregistry.googleapis.com
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  10. Make sure that billing is enabled for your Google Cloud project.

  11. Enable the Artifact Registry and Container Scanning APIs:

    gcloud services enable containerscanning.googleapis.com  artifactregistry.googleapis.com

Artifact Analysis no analiza las imágenes existentes de forma automática. Para que lo haga, debes volver a enviarlas.

Crea un repositorio de Docker en Artifact Registry

Crea un repositorio de Docker para almacenar la imagen de muestra de esta guía de inicio rápido.

  1. Abre la página Repositorios en la consola de Google Cloud.

    Abrir la página Repositorios

  2. Haz clic en Crear repositorio.

  3. En la página Crear repositorio, ingresa la siguiente configuración:

    • Nombre: quickstart-docker-repo
    • Formato: Docker
    • Modo: Estándar
    • Tipo de ubicación: Región
    • Región: us-central1
  4. Haz clic en Crear.

Verás la página Repositorios. Se agregará tu repositorio de quickstart-docker-repo a la lista de repositorios.

Configura la autenticación

Antes de poder enviar o extraer imágenes con Artifact Registry, debes configurar Docker para que use Google Cloud CLI con el objetivo de autenticar las solicitudes enviadas a Artifact Registry.

En Cloud Shell o tu shell local, configura la autenticación para los repositorios de Docker en la región us-central1:

gcloud auth configure-docker us-central1-docker.pkg.dev

Obtén un paquete

  1. Cambia a un directorio en el que quieras guardar la imagen del contenedor.

  2. Copia una imagen en tu directorio local. Por ejemplo, puedes usar Docker para extraer la imagen de Go más reciente de Docker Hub.

    docker pull golang:1.17.6-alpine
    

Etiqueta tu paquete con un nombre de repositorio

Cuando quieras enviar un paquete a Artifact Registry, debes configurar el comando docker push para enviar la imagen a una ubicación específica.

Ejecuta el siguiente comando para etiquetar la imagen como quickstart-image:tag1:

docker tag golang:1.17.6-alpine \
us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1

Aquí:

  • PROJECT es el ID de tu proyecto de Google Cloud. Si el ID de tu proyecto contiene dos puntos (:), consulta Proyectos con alcance de dominio.
  • us-central1 es la región del repositorio de Artifact Registry.
  • docker.pkg.dev es el nombre de host de los repositorios de Docker.
  • quickstart-image es el nombre de imagen que deseas usar en el repositorio. El nombre de la imagen puede ser diferente al nombre de la imagen local.
  • tag1 es una etiqueta que agregas a la imagen de Docker. Si no especificaste una etiqueta, Docker aplicará la etiqueta predeterminada latest.

Envía la imagen a Artifact Registry

Artifact Analysis analiza automáticamente los paquetes Go nuevos cuando se suben a Artifact Registry.

Para enviar tu imagen a tu repositorio de Docker en Artifact Registry, ejecuta el siguiente comando:

docker push us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1

Reemplaza PROJECT por el ID del proyecto de Google Cloud. Si el ID de tu proyecto contiene dos puntos (:), consulta Proyectos con alcance de dominio.

Consulta los resultados del análisis de vulnerabilidades

Para ver las vulnerabilidades de una imagen, sigue estos pasos:

  1. Obtén la lista de repositorios.

    Abrir la página repositorios

  2. En la lista de repositorios, haz clic en uno.

  3. En la lista de imágenes, haz clic en el nombre de una imagen.

    Los totales de vulnerabilidades de cada resumen de imagen se muestran en la columna Vulnerabilidades.

    Captura de pantalla de una imagen con vulnerabilidades

  4. 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, el total de vulnerabilidades, las vulnerabilidades con correcciones disponibles, las vulnerabilidades sin correcciones y la gravedad efectiva.

    Captura de pantalla de la sección Resultados del análisis con vulnerabilidades, correcciones y gravedad efectiva

    En la tabla de vulnerabilidades, se enumera el nombre de las vulnerabilidades y exposiciones comunes (CVE) para cada vulnerabilidad encontrada, la gravedad efectiva, la puntuación del Sistema Común de Puntuación de Vulnerabilidades (CVSS), las correcciones (si están disponibles), el nombre del paquete que contiene la vulnerabilidad y el tipo de paquete.

    Puedes filtrar y ordenar estos archivos para verificar un archivo, directorio o tipo de archivo específico por extensión.

    La consola de Google Cloud muestra hasta 1,200 vulnerabilidades en esta tabla. Si tu imagen tiene más de 1,200 vulnerabilidades, debes usar gcloud o la API para ver la lista completa.

  5. Para obtener detalles sobre un CVE específico, haz clic en su nombre.

  6. Para ver los detalles de la ocurrencia de vulnerabilidades, como el número de versión y la ubicación afectada, haz clic en Ver o Ver corregido en la fila con el nombre de la vulnerabilidad. El texto del vínculo es Ver para las vulnerabilidades sin corregir y Ver corregida para las vulnerabilidades en las que se aplicó una corrección.

Limpia

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que se usaron en esta página, borra el proyecto de Cloud que tiene los recursos.

Si creaste un proyecto nuevo para esta guía, ahora puedes borrarlo.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

¿Qué sigue?