Estoy configurando un servidor para realizar una implementación automática desde un repositorio de Bitbucket git, usando la función de devolución de datos de Bitbucket.
En pocas palabras, cómo funciona:
- Me comprometo a Bitbucket
- Bitbucket POSTs a un script específico (que solo se ejecuta si se llama desde la dirección IP de BB)
- Mis scripts están en el directorio apropiado, ejecuta git reset y git pull para actualizar a la última versión (es un script php que usa exec ()).
Tengo la idea de:
Y, en general, parece estar bien, pero tiene un problema de seguridad importante para mí: para que funcione, debe otorgarle a apache acceso de escritura a / owner del directorio del sitio para realizar la implementación. Esto me parece una mala idea, porque entonces un atacante usa apache para escribir archivos arbitrarios dentro del directorio.
Mi idea como alternativa es:
- Cree otro usuario, 'despliegue' y luego haga que el usuario que posee el directorio del sitio.
- Use sudoers para permitir que Apache ejecute un script de shell específico como despliegue de usuario, y ponga mi git reset, pull command, etc. en ese script de shell.
- En mis llamadas a exec (), por ejemplo, "sudo -u deploy shell-script.sh"
¿Alguien puede ver fallas / agujeros con esto?