Analiza paquetes de Go de forma manual

En esta guía de inicio rápido, se muestra cómo extraer una imagen de contenedor, analizarla de forma manual con el análisis a pedido y recuperar las vulnerabilidades identificadas para los paquetes del sistema y de Go. Para seguir esta guía de inicio rápido, usarás Cloud Shell y una imagen de Alpine de ejemplo.

Antes de comenzar

  1. 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.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the On-Demand Scanning API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the On-Demand Scanning API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

Cómo descargar y analizar una imagen

  1. Abre Cloud Shell en tu proyecto.

    Abra Cloud Shell

    Se abrirá una terminal con todas las herramientas necesarias para seguir esta guía.

  2. Usa Docker para extraer la imagen del contenedor:

    docker pull golang:1.17.6-alpine
    
  3. Ejecuta el análisis:

    gcloud artifacts docker images scan golang:1.17.6-alpine --additional-package-types=GO
    

    Esto activa el proceso de análisis y devuelve el nombre del análisis cuando finaliza:

    ✓ Scanning container image
      ✓ Locally extracting packages and versions from local container image
      ✓ Remotely initiating analysis of packages and versions
      ✓ Waiting for analysis operation to complete [projects/my-project/locations/us/operations/849db1f8-2fb2-4559-9fe0-8720d8cd347c]
    Done.
    done: true
    metadata:
      '@type': type.googleapis.com/google.cloud.ondemandscanning.v1.AnalyzePackagesMetadata
      createTime: '2022-01-11T16:58:11.711487Z'
      resourceUri: golang:1.16.13-alpine
    name: projects/my-project/locations/us/operations/f4adb1f8-20b2-4579-9fe0-8720d8cd347c
    response:
      '@type': type.googleapis.com/google.cloud.ondemandscanning.v1.AnalyzePackagesResponse
      scan: projects/my-project/locations/us/scans/a54f12b0-ca2d-4d93-8da5-5cf48e9e20ef
    
  4. Usa el nombre del análisis, el valor de scan del resultado, para recuperar los resultados del análisis:

    gcloud artifacts docker images list-vulnerabilities \
    projects/my-project/locations/us/scans/a54f12b0-ca2d-4d93-8da5-5cf48e9e20ef
    

    El resultado contiene una lista de vulnerabilidades de Go, la biblioteca estándar de Go y el paquete de Linux. Las siguientes etiquetas indican el tipo de vulnerabilidades de Go:

    • packageType:GO_STDLIB. Vulnerabilidades de la biblioteca estándar de Go Esto indica que la vulnerabilidad se encontró en la cadena de herramientas de Go que se usó para compilar el archivo binario o en la biblioteca estándar incluida en la cadena de herramientas. Una posible solución es actualizar tu cadena de herramientas de compilación.

    • packageType:GO. Vulnerabilidades de paquetes de Go Esto indica que se encontró la vulnerabilidad en un paquete de terceros. Una posible solución es actualizar los módulos dependientes.

Realiza una limpieza

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.

  1. En la Google Cloud consola, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

¿Qué sigue?