Abbiamo un server CI installato come build
utente e tutte le attività vengono eseguite come quel rispettivo utente a livello di sistema operativo. Abbiamo molti team che condividono il build server, il che significa che build
utente e le sue risorse sono condivisi.
Ogni team gestisce anche ambienti diversi e questo richiede la connettività ssh dal server di build. Poiché stiamo guidando l'automazione, la connettività senza password è stata inizialmente configurata per facilitare l'esecuzione di attività automatizzate da remoto (la chiave pubblica dell'utente build
è stata copiata nel file deploy
di authorized_keys
sull'host remoto).
Questo come si può immaginare pone un problema di sicurezza poiché qualsiasi utente che esegue un'attività può accedere a qualsiasi ambiente.
Una soluzione potrebbe essere usare qualcosa come sshpass
(fornire la password ssh come argomento) e avere combinazioni utente / password diverse per ogni ambiente. A livello di attività, crea ACL basati su ruoli per bloccare chi può vedere la password come sembra essere in testo normale. Un'altra cosa che mi interessa sapere di più è l'esposizione del comando qui. Sono stato indotto a credere che gli utenti possano sfruttare al massimo il processo in esecuzione e vedere quali comandi è stato eseguito da build
dall'utente - è possibile senza i privilegi di root? (ancora meglio se qualcuno può illustrare come questo può essere fatto o indicarmi qualche documentazione)
Oltre a convalidare il mio approccio, sto anche cercando consigli su come questo problema possa essere potenzialmente risolto.