¿Cómo se puede usar de manera segura un servidor de CI / CD basado en la nube?

4

Estoy considerando el uso de un servidor de implementación continua en la nube para impulsar el código de producción para mi aplicación.

Debido a que es un servidor basado en la nube, esto requiere que les dé una clave SSH privada que tenga acceso para enviar los archivos apropiados a mi servidor de producción. Me imagino que con el principio de privilegio mínimo, esta clave SSH debería permitir el inicio de sesión a un usuario bloqueado con privilegios de escritura en solo unos pocos directorios. Luego, el servidor de producción puede usar upstart u otros tipos de scripts que detectan los cambios en el código y comienzan a ejecutar el nuevo código.

Supongamos que mi modelo de amenaza es que la clave SSH privada se filtra desde su extremo. ¿Es posible mitigar este riesgo? Incluso si bloqueo al usuario tanto como sea posible, el usuario del servidor web (que tiene mayores privilegios) ejecutará el código que es empujado por el usuario. Entonces, parece que cualquier pérdida de la clave SSH que les proporcione dará como resultado la posibilidad de ejecución remota de código.

¿Existen prácticas recomendadas para configurar un servidor de CD / CD basado en la nube o es solo un riesgo que debo asumir?

    
pregunta Hetul Patel 15.10.2016 - 00:36
fuente

1 respuesta

1

Una mitigación que puedes usar es restringir también la carga de IP: después de todo, sabes de dónde provendrá una carga legítima. Esto mitigará la pérdida de la clave ssh a través de medios que no comprometan el servidor real (es decir, pérdidas de copia de seguridad, duplicación de discos, exploits de solo lectura, etc.)

Puede mitigar aún más el uso de acuerdos: que seguirán las medidas de seguridad adecuadas, que cifrarán sus datos antes de realizar una copia de seguridad, que parchearán los servidores con regularidad.

Podría imaginar algún tipo de token de uso único que se agregue a su proyecto de repositorio de origen por los sistemas que usted controla y cuyo cambio es lo que activa la compilación. Su servidor web podría rechazar construcciones sin un token válido o con un token que haya visto antes. Esto puede ser excesivo, sin embargo, y es mucho más complicado. Es probable que sea más apropiado para CI donde hay una compuerta manual antes del despliegue de producción, en lugar de un CD donde entra si también pasa las pruebas.

    
respondido por el crovers 15.10.2016 - 18:45
fuente

Lea otras preguntas en las etiquetas