Estamos utilizando un servicio de integración continua para ejecutar automáticamente nuestro conjunto de pruebas de productos. Cada vez que enviamos el código a nuestra rama de producción del repositorio Git central, se notifica a los servicios de CI y se obtiene el código para ejecutar el conjunto de pruebas.
El servicio de CI nos permite escribir un script de compilación posterior que puede enviar automáticamente el código a nuestro servidor de producción Heroku cuando pasan las pruebas.
Sin embargo, tememos que si un atacante ingresa en el servicio de CI, puede enviar cualquier cambio de código que desee a nuestro servidor de producción.
Planeamos cambiar esta arquitectura para que el servicio de CI haga ping a un servidor de "despliegue" específico nuestro cuando las pruebas pasen. Este servidor de 'despliegue' obtendría el último código de rama de producción de nuestro repositorio central de Git y el impulso a nuestro servidor de producción de Heroku.
De esta manera, si el servicio de CI se ve comprometido, un atacante no podría enviar desde el servicio de CI ningún código que quiera a nuestro servidor de producción. Tendría que irrumpir en nuestro servidor de 'despliegue'.
El objetivo de esta nueva arquitectura es trasladar el riesgo del SaaS de CI a un servidor nuestro. Las credenciales de Heroku necesarias para la implementación ya no están alojadas en el SaaS de CI, sino en un servidor nuestro.
¿Tiene sentido? ¿O hay alguna otra alternativa más simple cuando se usa un servicio de CI (aparte de configurar y asegurar el propio servidor de CI)?