Analizar paquetes de Go manualmente

En esta guía de inicio rápido se muestra cómo extraer una imagen de contenedor, analizarla manualmente con On-Demand Scanning y obtener las vulnerabilidades identificadas en 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 empezar

  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. 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 (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 (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

  8. Descargar y analizar una imagen

    1. Abre Cloud Shell en tu proyecto.

      Abrir Cloud Shell

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

    2. Usa Docker para extraer la imagen de 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 de la salida, para obtener 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, de la biblioteca estándar de Go y de paquetes de Linux. Las siguientes etiquetas indican el tipo de vulnerabilidades de Go:

      • packageType:GO_STDLIB. Go standard library vulnerabilities. Esto indica que la vulnerabilidad se ha encontrado en la cadena de herramientas de Go usada para compilar el archivo binario o en la biblioteca estándar incluida en la cadena de herramientas. Una posible solución es actualizar la cadena de herramientas de compilación.

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

    Limpieza

    Para evitar que se apliquen cargos en tu cuenta de Google Cloud por los recursos utilizados en esta página, sigue estos pasos.

    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.

    Siguientes pasos