Tenemos un servidor de CI que está instalado como usuario build
y todas las tareas se ejecutan como ese usuario respectivo en el nivel del sistema operativo. Tenemos muchos equipos que comparten el servidor de compilación, lo que significa que el usuario build
y sus recursos se comparten.
Cada equipo también administra diferentes entornos y esto requiere conectividad ssh del servidor de compilación. Debido a que estamos impulsando la automatización, la conectividad sin contraseña se configuró inicialmente para facilitar la ejecución remota de tareas automatizadas (la clave pública de build
user copiada al archivo deploy
user authorized_keys
en el host remoto).
Esto, como puede imaginar, plantea un problema de seguridad, ya que cualquier usuario que ejecute una tarea puede acceder a cualquier entorno.
Una solución sería usar algo como sshpass
(proporcionar la contraseña ssh como argumento) y tener diferentes combinaciones de usuario / contraseña para cada entorno. En el nivel de la tarea, cree ACL basadas en roles para bloquear quién puede ver la contraseña como parece que estará en texto plano. Otra cosa preocupante sobre la que tengo curiosidad por saber más es la exposición de comandos aquí. Me han llevado a creer que los usuarios pueden llegar al proceso de ejecución y ver qué comandos ha ejecutado el usuario build
. ¿Es esto posible sin privilegios de raíz? (incluso mejor si alguien puede ilustrar cómo se puede hacer esto o señalarme alguna documentación)
Además de validar mi enfoque, también estoy buscando recomendaciones sobre cómo este problema puede resolverse potencialmente.