Crear una canalización de imagen segura

En esta página, se explica cómo puedes configurar la canalización de imagen segura para automatizar la generación de imágenes base de contenedores.

Descripción general

La Canalización de imágenes seguras es una herramienta de código abierto que configura un framework de proyectos de Google Cloud, recursos y un repositorio de GitHub que puedes usar para crear y mantener imágenes base seguras y personalizadas. Puedes consumir las imágenes proyectos de Google Cloud.

En la siguiente imagen, se ilustra el framework de los recursos que crea la canalización de imagen segura:

Canalización de imagen segura

Una vez que configuras la canalización, se crean los siguientes recursos:

  • Un repositorio de GitHub que aloja el código fuente para las imágenes de contenedor.

  • Tres proyectos de Google Cloud: proyecto de compilación, proyecto de etapa de pruebas proyecto verificado. Cada vez que se actualiza una imagen en el repositorio de imágenes, Activadores de Cloud Build en el proyecto de compilación compila, firma y envía la imagen actualizada al Repositorio de Artifact Registry en el proyecto de etapa de pruebas. Cuándo la imagen en el proyecto de etapa de pruebas se verifica manualmente, la canalización envía al proyecto verificado.

Costos

La canalización de imagen segura usa los siguientes productos de Google Cloud.

Usa la calculadora de precios para estimar los costos según el uso previsto.

Antes de comenzar

Permisos de IAM obligatorios

El usuario que configura la canalización de imagen segura requiere los roles de Identity and Access Management de roles/organization.admin y roles/billing.admin para la organización de Google Cloud. Para obtener instrucciones sobre cómo otorgar roles de IAM, consulta Cómo otorgar, cambiar y revocar el acceso a los recursos.

Configura la canalización de imagen segura

El repositorio de GitHub de la canalización de imagen segura contiene la secuencia de comandos para automatizar la generación de imágenes base.

Para configurar la canalización de imagen segura, haz lo siguiente:

  1. Clona el repositorio de GitHub de la canalización de imagen segura en tu máquina local:

    git clone https://github.com/GoogleCloudPlatform/secure-image-pipeline
    
  2. Navega al directorio secure-image-pipeline.

    cd secure-image-pipeline/
    
  3. Copia env.sh.tmpl en env.sh:

    cp env.sh.tmpl env.sh
    
  4. Abre env.sh en el editor que desees.

  5. Edita los siguientes valores:

    • PARENT_ORGANIZATION: Ingresa el ID de tu organización de Google Cloud. La secuencia de comandos de canalización de imagen segura usa esta organización para generar proyectos de Google Cloud y las imágenes base.
    • BASEIMGFCT_PROJECT: Ingresa una cadena con la que la secuencia de comandos construirá la los IDs de los proyectos que crea. La cadena debe ser de 6 a 30 letras minúsculas, dígitos o guiones. Debe comenzar con una letra y no puede tener un guion final. Por ejemplo, si especificas foo, la secuencia de comandos crea tres proyectos con los IDs foo-builder, foo-stage y foo-verified.
    • BASEIMGFCT_BUCKET: ingresa un nombre para un bucket de Cloud Storage al que de Terraform para almacenar el código de automatización de Terraform. Asegúrate de que el nombre Cumple con los requisitos para asignar nombres a buckets.
    • BASEIMGFCT_REGION: Ingresa el nombre de la región que se usará o usa el valor predeterminado.
    • BILLING_ACCOUNT: Ingresa la cuenta de facturación asociada con la organización.
    • GITHUB_TOKEN: Ingresa tu GitHub token de acceso. La secuencia de comandos usa este token para crear un repositorio de GitHub que contenga el el código fuente para las imágenes base.
  6. Ejecuta la secuencia de comandos de configuración:

    ./setup.sh
    
  7. Ingresa la siguiente información de la cuenta de GitHub cuando se te solicite:

    1. El nombre de tu organización de GitHub.

    2. Tu dirección de correo electrónico de GitHub.

    3. Es tu nombre de usuario de GitHub.

    4. Otorga permiso a la secuencia de comandos para crear un proyecto nuevo y almacenar imágenes base.

    5. Ingresa "y".

    Esta operación tarda unos minutos en ejecutarse. Cuando termina, muestra con el mensaje Link your GitHub repositorys y presiona cualquier tecla para continuar.

  8. Presiona cualquier tecla para continuar.

    La secuencia de comandos abre una nueva ventana del navegador de la consola de Google Cloud para vincular tu GitHub de Cloud Storage con tu proyecto de Google Cloud.

  9. Cambia a la ventana del navegador de la consola de Google Cloud.

  10. En la ventana emergente Administra las instalaciones de tu app de GitHub, selecciona tu de servicio predeterminada.

  11. Haz clic en Agregar otro proyecto.

  12. En el menú desplegable Seleccionar un proyecto, selecciona el proyecto con el formato indicado. Compilador de YOUR_PROJECT_NAME.

  13. Marca la casilla de verificación de consentimiento y haz clic en Siguiente.

  14. En la lista de repositorios, selecciona el repositorio llamado baseimgfact-[algún número]-containers y haz clic en Conectar (1) repositorio.

  15. En la página Crear activador de envío, haz clic en Omitir. La secuencia de comandos crea el activador de envío por ti.

  16. Haga clic en Listo.

  17. Vuelve a la terminal.

  18. Presiona cualquier tecla para continuar.

La secuencia de comandos tarda unos minutos en completar la ejecución.

Recursos creados por la canalización de imagen segura.

Cuando la secuencia de comandos de configuración completa la ejecución, se crean los siguientes recursos:

GitHub:

  • Un repositorio llamado baseimgfct-[some number]-containers que contiene las el código fuente que se usa para crear imágenes de contenedor. La secuencia de comandos setup genera esto. con Dockerfiles simples, uno para cada uno de los servidores de Linux distribuciones.
  • Claves de implementación: Claves de implementación independientes de acceso de escritura para el repositorio.

Proyectos de Google Cloud:

  • Un proyecto de Google Cloud llamado YOUR_PROJECT_NAME-builder que contiene recursos para compilar y enviar una imagen al proyecto de etapa de pruebas y el código fuente se actualiza en el repositorio de GitHub.

    Este proyecto contiene las Activadores de Cloud Build que invocan compilaciones cuando se realiza una solicitud de extracción o combinación en la rama principal en baseimgfct-[some number]-containers. Una solicitud de extracción compila y envía las imágenes al proyecto de etapa de pruebas. Una combinación compila y envía las imágenes al proyecto verificado.

    Permisos de IAM para YOUR_PROJECT_NAME-builder: recomendar que otorgues acceso a este proyecto solo a miembros del equipo que estén se espera que hagan cambios en la canalización. Si deseas obtener instrucciones para otorgar acceso a los proyectos, consulta Cómo otorgar, cambiar y revocar el acceso a los recursos.

  • Un proyecto de Google Cloud llamado YOUR_PROJECT_NAME-stage que tiene que se usa para habilitar por etapas imágenes para una revisión manual antes de que se publiquen el proyecto verificado. Este proyecto contiene los siguientes recursos:

    • Un repositorio de Docker de Artifact Registry que contiene el contenedor compilado imágenes de contenedores.
    • Las funciones de Cloud Run para cada imagen del proyecto, que activa una recompilación de la imagen cada vez que se encuentra una nueva corrección para una vulnerabilidad conocida.
    • Temas de Pub/Sub que se usan para ejecutar las funciones de Cloud Run.
    • Una instancia del servidor de cupones que se ejecuta como implementación de Cloud Run. El servidor de cupones verifica con una lista de los requisitos de las políticas de seguridad. Puedes usar los requisitos de políticas predeterminadas que se incluyen con la canalización o especificar una política de seguridad personalizada. Después de que se aprueban los controles de seguridad, el servidor de cupones crea una certificación para la imagen con la autorización binaria. Esta imagen certificada, también llamada imagen firmada, se envía al proyecto verificado.

    Permisos de IAM para YOUR_PROJECT_NAME-stage: recomienda que solo otorgues acceso para este proyecto a los desarrolladores puede leer las imágenes publicadas en etapa de pruebas desde Artifact Registry. Para obtener instrucciones sobre cómo otorgar acceso a proyectos, consulta Cómo otorgar, cambiar y revocar el acceso a los recursos.

  • Un proyecto de Google Cloud llamado YOUR_PROJECT_NAME-verified. Esta proyecto contiene las imágenes firmadas finales que se revisaron manualmente.

Próximos pasos