Come si può utilizzare in modo sicuro un server CI / CD basato su cloud?

4

Sto utilizzando un server di distribuzione continua basato su cloud per inviare codice di produzione per la mia applicazione.

Poiché si tratta di un server basato su cloud, questo mi richiede di fornire loro una chiave SSH privata che abbia accesso per inviare i file appropriati al mio server di produzione. Immagino con il principio del privilegio minimo, questa chiave SSH dovrebbe consentire il login ad un utente bloccato con privilegi di scrittura solo su alcune directory. Quindi il server di produzione può utilizzare upstart o altri tipi di script che rilevano le modifiche al codice e iniziano a eseguire il nuovo codice.

Supponiamo che il mio modello di minaccia sia che la chiave SSH privata trapelasse dalla loro fine. È possibile attenuare questo rischio? Anche se blocco l'utente il più possibile, il codice che viene spinto dall'utente verrà eseguito dall'utente del server web (che ha privilegi maggiori). Quindi sembra che qualsiasi perdita della chiave SSH che fornisco darà la possibilità di eseguire codice in modalità remota.

Ci sono delle best practice nella configurazione di un server CI / CD basato su cloud, o è solo un rischio che devo prendere?

    
posta Hetul Patel 15.10.2016 - 00:36
fonte

1 risposta

1

Una delle attenuazioni che puoi utilizzare è che IP limiti anche questo caricamento: sai da dove arriverà un caricamento legittimo, dopotutto. Ciò si attenuerà con la perdita di chiavi ssh attraverso mezzi che non compromettono il server attuale (cioè perdite di backup, duplicazione del disco, exploit di sola lettura, ecc.)

È possibile mitigare ulteriormente l'utilizzo degli accordi - che seguiranno misure di sicurezza appropriate, che crittograferanno i dati prima di eseguire il backup, che correggono regolarmente i server.

Potrei immaginare una sorta di token monouso che viene aggiunto al tuo repository di dati sorgente da parte dei sistemi che controlli e che cambiano in base a ciò che fa scattare la build. Il tuo server web potrebbe rifiutare le build senza un token valido o con un token che ha visto prima. Questo può essere eccessivo, tuttavia, ed è molto più complicato. È probabilmente più appropriato per gli elementi della configurazione in cui è presente un gate manuale prima della distribuzione della produzione, piuttosto che nel CD in cui viene inserito se passa anche i test.

    
risposta data 15.10.2016 - 18:45
fonte

Leggi altre domande sui tag