Genera y almacena SBOMs

En este documento, se describe cómo crear y almacenar una lista de materiales de software (SBOM) en la que se enumeran las dependencias de las imágenes de contenedor.

Cuando almacenas imágenes de contenedores en Artifact Registry y las analizas en busca de vulnerabilidades con Artifact Analysis, puedes generar una SBOM con Google Cloud CLI.

Para obtener información sobre el uso del análisis de vulnerabilidades, consulta Análisis automático y Precios.

Artifact Analysis almacena las SBOM en Cloud Storage. Para obtener más información sobre los costos de Cloud Storage, consulta Precios.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  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 Artifact Registry, Container Analysis, Container Scanning APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  7. To initialize the gcloud CLI, run the following command:

    gcloud init
  8. 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

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

  10. Enable the Artifact Registry, Container Analysis, Container Scanning APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  13. To initialize the gcloud CLI, run the following command:

    gcloud init
  14. Crea un repositorio de Docker en Artifact Registry y envía una imagen de contenedor al repositorio. Si no conoces Artifact Registry, consulta la guía de inicio rápido de Docker.

Roles obligatorios

Para obtener los permisos que necesitas para administrar buckets de Cloud Storage y subir archivos de SBOM, pídele a tu administrador que te otorgue el rol de IAM de Administrador de almacenamiento (roles/storage.admin) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Genera un archivo SBOM

Para generar un archivo de SBOM, usa el siguiente comando:

gcloud artifacts sbom export --uri=LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME

Dónde

  • LOCATION es la ubicación del repositorio de Artifact Registry.
  • PROJECT_ID es el ID del proyecto que contiene el repositorio de Artifact Registry.
  • REPOSITORY es el nombre del repositorio de Artifact Registry que contiene la imagen.
  • IMAGE_NAME es el nombre de la imagen. Las imágenes pueden estar en formato de etiqueta o formato de resumen. Las imágenes proporcionadas en formato de etiqueta se resolverán en formato de resumen.

Artifact Analysis almacena tu SBOM en Cloud Storage. Si aún no tienes un bucket de Cloud Storage para la misma región que tu imagen, Cloud Storage creará uno para ti con el nombre artifactanalysis-<var>REGION</var>-<var>PROJECT_NUMBER</var> y enviará tu SBOM a ese bucket. Las SBOM adicionales de esa región se envían al mismo bucket.

Puedes ver las SBOM con la consola de Google Cloud o gcloud CLI. Si quieres ubicar el bucket de Cloud Storage que contiene tus SBOM, debes buscar las SBOM con la CLI de gcloud.

Genera una SBOM sin análisis de vulnerabilidades

Si deseas generar una SBOM, pero no quieres que se realice un análisis de vulnerabilidades continuo para tu proyecto, puedes exportar una SBOM si habilitas la API de Container Scanning antes de enviar la imagen a Artifact Registry. Después de que se envíe tu imagen a Artifact Registry y de que exportes una SBOM, debes inhabilitar la API de Container Scanning para evitar que se te facture por análisis de vulnerabilidades adicionales.

¿Qué sigue?