Stiamo utilizzando un servizio di integrazione continua per eseguire automaticamente la nostra suite di test sui prodotti. Ogni volta che inseriamo il codice nel nostro ramo di produzione del repository Git centrale, i servizi CI vengono notificati e recuperano il codice per eseguire la suite di test.
Il servizio CI ci consente di scrivere uno script di post build che può automaticamente inviare il codice al nostro server di produzione Heroku quando i test passano.
Tuttavia temiamo che se un utente malintenzionato si intromette nel servizio CI, può quindi inviare qualsiasi modifica di codice che desidera al nostro server di produzione.
Abbiamo in programma di modificare questa architettura per fare in modo che il servizio CI esegua il ping di uno specifico server "deploy" quando i test vengono superati. Questo server 'deploy' recuperava l'ultimo codice di produzione dal nostro repository Git centrale e il push al nostro server di produzione Heroku.
In questo modo, se il servizio CI viene compromesso, un utente malintenzionato non può inviare dal servizio CI alcun codice che desidera al nostro server di produzione. Dovrebbe entrare nel nostro server 'deploy'.
L'obiettivo di questa nuova architettura è spostare il rischio dai SaaS CI a un nostro server. Le credenziali di Heroku necessarie per la distribuzione non sono più ospitate su SaaS CI ma su un nostro server.
Ha senso? Oppure esiste un'alternativa più semplice quando si utilizza un servizio CI (a parte l'impostazione e la protezione del proprio server CI)?