Descripción general de Cloud Build

Cloud Build es un servicio que ejecuta tus compilaciones en Google Cloud.

Cloud Build puede importar un código fuente desde varios repositorios o espacios de Cloud Storage, ejecutar una compilación según tus especificaciones y producir artefactos como contenedores de Docker o archivos de Java.

También puedes usar Cloud Build para proteger tu cadena de suministro de software. Las funciones de Cloud Build cumplen con los requisitos del nivel 3 de Niveles de cadena de suministro para artefactos de software (SLSA). Para obtener orientación sobre cómo proteger tus procesos de compilación, consulta Protege compilaciones.

Configuración y pasos de compilación

Puedes escribir una configuración de la compilación para proporcionar instrucciones a Cloud Build sobre qué tareas realizar. Puedes configurar compilaciones para recuperar dependencias, ejecutar pruebas de unidades, realizar análisis de estadísticas y pruebas de integración y crear artefactos con herramientas de compilación como Docker, Gradle, Maven, Bazel y Gulp.

Cloud Build ejecuta tu compilación como una serie de pasos de la compilación, en los que cada paso de la compilación se ejecuta en un contenedor de Docker. La ejecución de pasos de compilación es análoga a la ejecución de comandos en una secuencia de comandos.

Puedes usar los pasos de compilación proporcionados por Cloud Build y la comunidad de Cloud Build o escribir tus propios pasos de compilación personalizados:

Cada paso de compilación se ejecuta con su contenedor conectado a una red de Docker local llamada cloudbuild. Eso permite que los pasos de compilación se comuniquen entre sí y compartan datos. Para obtener más información sobre la red cloudbuild, consulta Red de Cloud Build.

Puedes usar imágenes estándar de Docker Hub en Cloud Build, como Ubuntu y Gradle.

Inicia compilaciones

Puedes iniciar compilaciones de forma manual en Cloud Build con Google Cloud CLI o la API de Cloud Build. También puedes usar los activadores de compilación de Cloud Build para crear un flujo de trabajo automatizado de integración continua/entrega continua (CI/CD) que comience compilaciones nuevas en respuesta a cambios de código.

Puedes integrar activadores de compilación en varios repositorios de código, incluidos Cloud Source Repositories, GitHub, y Bitbucket.

Visualiza los resultados de las compilaciones

Puedes ver los resultados de tu compilación con gcloud CLI, Cloud Build API o usa la Historial de compilaciones de la sección de Cloud Build La consola de Google Cloud, en la que se muestran detalles y registros de cada compilación se ejecuta Cloud Build. Para obtener instrucciones, consulta Visualiza resultados de compilaciones.

Cómo funcionan las compilaciones

En los pasos siguientes, se brinda una descripción general del ciclo de vida de una compilación de Cloud Build:

  1. Prepara tu código de aplicación y cualquier elemento necesario.
  2. Crea un archivo de configuración de la compilación en formato YAML o JSON, que incluya instrucciones para Cloud Build.
  3. Envía la compilación a Cloud Build.
  4. Cloud Build ejecuta la compilación según la configuración de la compilación que proporcionaste.
  5. Si corresponde, todos los artefactos compilados se envían a Artifact Registry.

Docker

Cloud Build usa Docker para ejecutar compilaciones. Para cada paso de compilación, Cloud Build ejecuta un contenedor de Docker como una instancia de docker run. Actualmente, Cloud Build se ejecuta versión 20.10.24 del motor de Docker.

Interfaces de Cloud Build

Puedes usar Cloud Build con la consola de Google Cloud, gcloud la herramienta de línea de comandos o la API de REST de Cloud Build.

En la consola de Google Cloud, puedes ver los resultados de la compilación de Cloud Build en el Historial de compilaciones y automatizar compilaciones Activadores de compilación.

Puedes usar gcloud CLI para crear y administrar compilaciones. Puedes ejecutar comandos para realizar tareas como enviar una compilación, enumerar compilaciones y cancelar un compilar.

Puedes solicitar compilaciones mediante la API de REST de Cloud Build.

De la misma manera que con otras API de Cloud Platform, debes autorizar el acceso con OAuth2. Después de autorizar el acceso, puedes usar la API para iniciar compilaciones nuevas, ver el estado y los detalles de la compilación, hacer una lista de compilaciones por proyecto y cancelar compilaciones que están en proceso en ese momento.

Para obtener más información, consulta la documentación de la API.

Grupos predeterminados y privados

De forma predeterminada, cuando ejecutas una compilación en Cloud Build, esta se ejecuta en un alojado y protegido con acceso a la Internet pública. Cada compilación se ejecuta en su propio trabajador y está aislado de otras cargas de trabajo. Puedes personalizar tu compilar de varias maneras, como aumentar el tamaño del tipo de máquina y asignar más espacio en el disco. El grupo predeterminado tiene límites sobre la cantidad de pueden personalizar el entorno, especialmente en torno al acceso a redes privadas.

Los grupos privados son grupos privados y dedicados de trabajadores que ofrecen mayor personalización en el entorno de compilación, incluida la capacidad de acceder a los recursos en una red privada. Los grupos privados, similares a los predeterminados, se alojan completamente administrados por Cloud Build y se puede escalar de forma vertical y horizontal a cero, sin infraestructura para configurar, actualizar o escalar. Dado que los grupos privados son recursos específicos del cliente, puedes configurarlos de más formas.

Para obtener más información sobre los grupos privados y la diferencia entre las funciones predeterminadas y el grupo privado, consulta Descripción general de los grupos privados.

Seguridad de la compilación

Cloud Build proporciona varias funciones para proteger tus compilaciones, incluidas las siguientes:

  • Compilaciones automatizadas

    Una compilación automatizada o con secuencia de comandos define todos los pasos de compilación en la secuencia de comandos de compilación. o configuración de compilación, incluidos los pasos para recuperar el código fuente y los pasos para compilar el código. El único comando manual, si existe, es el que ejecuta la compilación. Cloud Build usa un archivo de configuración de compilación para proporcionan pasos de compilación a Cloud Build.

    Las compilaciones automatizadas proporcionan coherencia en los pasos de compilación. Sin embargo, también es es importante ejecutar compilaciones en un entorno coherente y confiable.

    Si bien las compilaciones locales pueden ser útiles para la depuración, lanzar software de compilaciones locales puede introducir muchos problemas de seguridad, incoherencias y las ineficiencias en el proceso de creación.

    • Permitir las compilaciones locales es una forma para que un atacante con intención maliciosa para modificar el proceso de compilación.
    • Las incoherencias en los entornos locales de los desarrolladores y las prácticas de los desarrolladores dificultar la reproducción de compilaciones y el diagnóstico de problemas de compilación.

    En los requisitos de SLSA, las compilaciones automatizadas son requisito para el nivel de SLSA 1, y usar un servicio de compilación en lugar de un entornos de compilación es un requisito para el nivel 2 de SLSA.

  • Procedencia de compilación

    La procedencia de la compilación es una colección de datos verificables sobre una compilación.

    Los metadatos de procedencia incluyen detalles como los resúmenes de las imágenes compiladas, las ubicaciones de las fuentes de entrada, la cadena de herramientas de compilación y la duración de la compilación.

    Generar la procedencia de la compilación te ayuda a hacer lo siguiente:

    • Verifica que se haya creado un artefacto compilado a partir de una ubicación de origen de confianza y una un sistema de compilación confiable.
    • Identifica el código insertado desde una ubicación de fuente o un sistema de compilación que no sean de confianza.

    Puedes usar mecanismos de alertas y políticas para usar de forma proactiva la procedencia de las compilaciones de datos no estructurados. Por ejemplo, puedes crear políticas que solo permitan implementaciones de código compilada a partir de fuentes verificadas.

    Cloud Build puede generar origen de compilación para imágenes de contenedor que proporcionan garantía de SLSA de nivel 3. Para obtener más información, consulta Cómo ver la procedencia de la compilación.

  • Entorno de compilación efímero

    Los entornos efímeros son entornos temporales diseñados para durar un una sola invocación de compilación. Después de la compilación, se limpia o borra el entorno. Las compilaciones efímeras garantizan que el servicio y los pasos de compilación que se ejecutan en un entorno efímero, como un contenedor o una VM. En lugar de reutilizar un entorno de compilación existente, el servicio de compilación aprovisiona un entorno nuevo para cada compilación y, luego, lo destruye después de que se completa el proceso de compilación.

    Los entornos efímeros garantizan compilaciones limpias, ya que no hay archivos residuales o configuración del entorno de compilaciones anteriores que puedan interferir con la compilación el proceso de administración de recursos. Un entorno no efímero brinda una oportunidad para que los atacantes inyectar archivos y contenido maliciosos. Un entorno efímero también reduce la sobrecarga de mantenimiento y reduce las inconsistencias en el entorno de compilación.

    Cloud Build configura un nuevo entorno de máquina virtual para cada compilación y lo destruye después de la compilación.

  • Políticas de implementación

    Puedes integrar Cloud Build en la autorización binaria. para verificar certificaciones de compilación y bloquear implementaciones de imágenes que no estén que genera Cloud Build. Este proceso puede reducir el riesgo de para implementar software no autorizado.

  • Claves de encriptación administradas por el cliente

    Cloud Build proporciona el cumplimiento de las claves de encriptación administradas por el cliente (CMEK) de forma predeterminada. Los usuarios no necesitan configurar nada específicamente. Cloud Build proporciona cumplimiento de CMEK mediante la encriptación del disco persistente (PD) en el tiempo de compilación. con una clave efímera que se genera para cada compilación. La clave se genera de forma única para cada compilación.

    En cuanto se completa la compilación, la clave se limpia de la memoria y se destruye. Sí no estén almacenados en ningún lugar, no sean accesibles para los ingenieros de Google o el personal de asistencia no se puede restablecer. Los datos que se protegieron con esa clave están inaccesible. Para obtener más información, consulta Cumplimiento de CMEK en Cloud Build.

  • Panel de estadísticas de seguridad

    Cloud Build incluye un panel Security Insights en el la consola de Google Cloud que muestra una descripción general de alto nivel de varias métricas de seguridad. Puedes usar este panel para identificar y mitigar los riesgos en tu proceso de compilación.

    En este panel, se muestra la siguiente información:

    • Nivel de la cadena de suministro para artefactos de software (SLSA): Identifica la de madurez del proceso de compilación de software de acuerdo con especificación de SLSA).

    • Vulnerabilidades: Una descripción general de las vulnerabilidades encontradas en tu artefactos y el nombre de la imagen que Artifact Analysis se escaneó. Puedes hacer clic en el nombre de la imagen para ver los detalles de la vulnerabilidad. Por ejemplo, en la captura de pantalla, puedes hacer clic en java-guestbook-backend.

    • Detalles de compilación: Detalles de la compilación, como el compilador y el vínculo para y visualizar registros.

    • Procedencia de la compilación: Es la procedencia de la compilación.

  • Software Delivery Shield

    Cloud Build forma parte de la solución de Software Delivery Shield. Software Delivery Shield es un solución de seguridad para la cadena de suministro de software de extremo a extremo completamente administrada mejorar la postura de seguridad de los flujos de trabajo y las herramientas, los flujos de trabajo las dependencias, los sistemas de CI/CD que se usan para compilar e implementar tu software, y y entornos de ejecución, como Google Kubernetes Engine y Cloud Run. Si deseas obtener información para usar Cloud Build con otros componentes de Software Delivery Shield para mejorar la postura de seguridad de la cadena de suministro de software, consulta Descripción general de Software Delivery Shield.

¿Qué sigue?