Cómo usar la canalización de imagen segura

Una vez que creaste la canalización de imagen segura, puedes automatizar el flujo de trabajo de generación de imágenes firmadas cada vez que realices cambios en el código fuente.

En esta página, se explica cómo usar la canalización de imagen para producir imágenes seguras y certificadas.

Antes de comenzar

Crea la canalización de imagen segura y familiarízate con los recursos que crea la canalización.

Usa la canalización

El código fuente de las imágenes base está en el repositorio baseimgfct-[some number]-containers en la organización de GitHub que especificaste cuando configuraste la canalización de imagen segura. Para actualizar una imagen, edita el archivo pertinente en el repositorio y envía una solicitud de extracción con los cambios a un miembro del equipo para su revisión. Cuando creas la solicitud de extracción, el activador de Cloud Build en YOUR_PROJECT_NAME-builder compila la imagen actualizada y la envía al repositorio de Artifact Registry en YOUR_PROJECT_NAME-stage.

Cuando un miembro del equipo pruebe y verifique las imágenes en YOUR_PROJECT_NAME-stage, puede aprobar y combinar tu solicitud de extracción. La acción de combinación compila, analiza y certifica las imágenes, y las envía del proyecto de pruebas a YOUR_PROJECT_NAME-verified.

En los siguientes pasos, se describe el flujo de trabajo del desarrollador para usar la canalización de imagen segura:

  1. Ve al repositorio baseimgfact-[algún número]-containers.

  2. Abre la carpeta correspondiente a la imagen que quieres cambiar, por ejemplo, ubuntu_18_0_4.

  3. Realiza los cambios necesarios. Por ejemplo, edita el Dockerfile para actualizar una imagen de contenedor.

  4. Selecciona Crear una rama nueva para esta confirmación y comenzar una solicitud de extracción.

  5. Haz clic en Proponer cambios.

  6. En Descripción del comentario, ingresa /gcbrun. Esto se hace para garantizar que solo los usuarios autorizados propongan cambios en el repositorio.

  7. Haz clic en Create pull request.

    Cuando creas una solicitud de extracción, los activadores de compilación en YOUR_PROJECT_NAME-builder compilan tu imagen y la envían a YOUR_PROJECT_NAME-stage.

  8. Agrega un miembro del equipo para que revise tu solicitud de extracción.

  9. Después de verificar la imagen de forma manual, el miembro del equipo aprueba y combina la solicitud de extracción.

    La acción de combinación compila, prueba y analiza la imagen en busca de vulnerabilidades y la certifica si es una imagen de contenedor y, luego, la envía a YOUR_PROJECT_NAME-verified.

Especifica una política de seguridad personalizada

Si usas la canalización de imágenes seguras para generar y mantener imágenes de contenedores basados, puedes especificar una política de seguridad personalizada con la que se verifica la imagen.

YOUR_PROJECT_NAME-stage ejecuta una instancia de Voucher, que es una herramienta de código abierto que ejecuta un conjunto de verificaciones en imágenes de contenedor y crea certificaciones de autorización binaria para las imágenes. Cuando se verifica manualmente una imagen en YOUR_PROJECT_NAME-stage y un miembro del equipo combina la solicitud de extracción en el repositorio de imágenes de contenedores de GitHub, Voucher verifica la imagen en busca de vulnerabilidades, que se definen en el archivo de configuración de Voucher. Una vez que se complete la verificación, si todas las vulnerabilidades identificadas caen por debajo del umbral, Voucher crea una certificación de autorización binaria para la imagen y la imagen se envía a YOUR_PROJECT_NAME-verified. Si alguna de las vulnerabilidades identificadas alcanza o supera el umbral, Voucher no crea una certificación. Sin una certificación verificada, el ejecutor de la autorización binaria no permite que se envíe la imagen a YOUR_PROJECT_NAME-verified.

Puedes definir qué verificaciones se ejecutan en Voucher, junto con otros criterios, en el archivo de configuración del servidor de Voucher. Para obtener instrucciones sobre cómo hacer esto, consulta Compila y configura el servidor de Voucher.