Reiniciar nginx con Jenkins o Phing: ¿es seguro permitir que Jenkins ejecute sudo sin pedir contraseña?

4

Estoy implementando las recomendaciones de Integración de proyectos PHP con Jenkins para mis propios proyectos PHP.

He creado un usuario jenkins en mi servidor ubuntu 12.10. Utilicé Phing como mi herramienta de compilación y tengo un paso en mi proceso de compilación donde necesito reiniciar mi nginx usando sudo.

Según esta solución , se sugiere permitir que jenkins use sudo sin contraseña.

Y además, no está completamente seguro de las implicaciones de seguridad para tal acuerdo.

Quiero preguntar si debo seguir adelante con este acuerdo.

Instalé los jenkins en el mismo servidor que el código de producción.

    
pregunta Kim Stacks 28.12.2012 - 09:15
fuente

2 respuestas

7

La solución vinculada permite a jenkins ejecutar cualquier comando a través de sudo sin una contraseña.

Una mejor solución es permitir que jenkins reinicie nginx sin una contraseña, pero nada más. De esta manera, tiene permiso de root para el comando que necesita ejecutar, pero no está otorgando permiso general para que jenkins haga cualquier cosa y todo.

Use visudo para pegar esto en la parte inferior de su archivo sudoers :

Defaults:jenkins !requiretty,!lecture
jenkins ALL=NOPASSWD:/etc/init.d/nginx
    
respondido por el tylerl 01.01.2013 - 02:47
fuente
0

¿Por qué tiene que ejecutar nginx como root en su servidor de desarrollo? Ejecútelo como un usuario normal para que jenkins pueda reiniciarlo sin permisos de root.

Además, ¿qué quiere decir con "jenkins está en el mismo servidor que el código de producción"? Si quiere decir que su aplicación de producción en realidad está ejecutando en su servidor de desarrollo: es una mala idea (por razones de seguridad y rendimiento) y debe cambiarla lo antes posible.

Editar para responder a las preguntas de seguimiento:

Estoy sugiriendo dos servidores, un servidor de producción y uno que ejecute jenkins, su SCM, etc. Si usted es el único desarrollador, el segundo también puede ser su estación de trabajo de desarrollo, si así lo desea. Y no, no necesita ejecutar nginx como usuario de jenkins, solo necesita una configuración que le permita a jenkins reiniciar nginx (por ejemplo, el mismo grupo para jenkins y el script de reinicio nginx más rwxr-x --- permisos) o similar).

    
respondido por el us2012 28.12.2012 - 15:52
fuente

Lea otras preguntas en las etiquetas