Usar el análisis bajo demanda como parte de tu flujo de procesamiento de Cloud Build te permite bloquear compilaciones si la imagen de contenedor tiene vulnerabilidades con una gravedad que coincida con un nivel predefinido.
En este tutorial se muestra cómo usar Cloud Build para crear una imagen de contenedor a partir del código fuente, analizarla en busca de vulnerabilidades, comprobar los niveles de gravedad de las vulnerabilidades y enviar la imagen a Artifact Registry si no hay vulnerabilidades de un nivel de gravedad específico.
Te recomendamos que crees un proyecto de Google Cloud para este tutorial y que sigas los pasos en un entorno aislado.
Objetivos
- Crea una imagen con Cloud Build.
- Analiza la imagen compilada con On-Demand Scanning.
- Evalúa los niveles de vulnerabilidad aceptables.
- Almacena la imagen en Artifact Registry.
Costes
En este documento, se utilizan los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costes basada en el uso previsto,
utiliza la calculadora de precios.
Cuando termines las tareas que se describen en este documento, puedes evitar que se te siga facturando eliminando los recursos que has creado. Para obtener más información, consulta la sección Limpiar.
Antes de empezar
- 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.
-
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 On-Demand Scanning, Cloud Build, and Artifact Registry APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud 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 On-Demand Scanning, Cloud Build, and Artifact Registry APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init Administrador de On-Demand Scanning (
roles/ondemandscanning.admin)Escritor de Artifact Registry (
roles/artifactregistry.writer)Abre un terminal, crea un directorio llamado
ods-tutorialy accede a él:mkdir ods-tutorial && cd ods-tutorialCrea un archivo llamado
Dockerfilecon el siguiente contenido:# Debian10 image FROM gcr.io/google-appengine/debian10:latest # Ensures that the built image is always unique RUN apt-get update && apt-get -y install uuid-runtime && uuidgen > /IAMUNIQUEDefine el ID del proyecto en el mismo proyecto en el que has habilitado las APIs:
gcloud config set project PROJECT_IDCrea un repositorio de Docker llamado
ods-build-repoen la ubicaciónus-central1:
Roles obligatorios
La cuenta de servicio que uses con Cloud Build debe tener los siguientes roles:
La cuenta de servicio predeterminada de Cloud Build tiene los permisos necesarios para los repositorios de Artifact Registry del mismo proyecto. Si tus repositorios están en el mismo proyecto que usas para Cloud Build, solo tienes que conceder el rol Administrador de análisis bajo demanda.
Si usas una cuenta de servicio proporcionada por el usuario para Cloud Build, debes asignar ambos roles.
Preparar el archivo de origen
En este tutorial, vas a crear una imagen a partir de un Dockerfile. Un Dockerfile es un archivo de origen que contiene instrucciones para que Docker cree una imagen.