Precisazione della domanda
La maggior parte delle risposte finora fa presupporre che il passaggio citato nella domanda si riferisca a modifiche originate dalle workstation dei singoli sviluppatori.
Al contrario, il passaggio si riferisce alla propagazione del cambiamento tra un server di sviluppo e un server di produzione. L'autore avrebbe dovuto usare una terminologia più appropriata per il caso d'uso più comune: propagare le modifiche da un server "testing" o "staging" a un server di produzione. Anche il fraseggio nel passaggio citato è imbarazzante, ma l'essenza è che il processo di propagazione del cambiamento dovrebbe sempre essere avviato dal server di produzione - cioè, le modifiche vengono "tirate" dal server di sviluppo , non "spinto" dal server di sviluppo / testing / staging.
La motivazione
La logica è semplice: nei casi più , ha molto più senso dare a un ambiente di produzione l'accesso a un server di sviluppo (o di testing / staging) rispetto al contrario. Se il server di produzione è compromesso, la probabilità di danno aggiuntivo derivante dall'attaccante "scavalcando" il server di sviluppo è minima (almeno se vengono rispettate le best practice e non c'è nulla di "sensibile" sul server di sviluppo, particolarmente nel modo di credenziali ad altri sistemi o dati "reali"). Inutile dire che le credenziali per altri sistemi interni, dati reali dei clienti, ecc., Non dovrebbero mai essere propagate a un server di sviluppo.
A correlati a parte
Nei casi in cui un problema spinoso richiede assolutamente l'accesso ai dati di produzione, è necessario prestare particolare attenzione alla "sandbox" dei dati in un sistema isolato e offline con accesso estremamente limitato. I dati su un tale sistema dovrebbero essere distrutti immediatamente dopo la risoluzione del problema. Per i problemi che richiedono l'accesso ad altri sistemi da riprodurre, come un server Web che richiede l'accesso a un'istanza data warehouse, è necessario compiere ogni sforzo per "deridere" qualsiasi funzionalità fornita dalla dipendenza ed eliminare la necessità di connettere i sistemi .
Eccezione alla regola
Un'eccezione alla "regola" che l'autore descrive è quando il server di sviluppo si trova all'interno del firewall e il server di produzione si trova nella DMZ. In questi casi, potrebbe essere che il server di produzione non possa avviare la comunicazione con il server di sviluppo (rendendo così impossibile la strategia "pull"), ma il server di sviluppo è in grado di avviare la comunicazione con il server di produzione. In tali topologie, in cui questa iniziazione a senso unico è sottoprodotta, potrebbe essere necessario spostare i cambiamenti dallo sviluppo alla produzione.
In tali casi, le credenziali necessarie per connettersi dallo sviluppo alla produzione dovrebbero essere altamente protette e non dovrebbero mai essere archiviate sul server di sviluppo (ad es., sotto forma di una chiave SSH senza password). Inoltre, chiunque sia autorizzato a connettersi al server di sviluppo e avviare un push alla produzione dovrebbe essere costretto ad accedere al proprio account su entrambi i sistemi (gli account non dovrebbero mai essere condivisi tra gli utenti, così facendo compromette la responsabilità).
Se per completare la propagazione è richiesto l'accesso a livello di root su entrambi i sistemi, dovrebbe essere implementata un'implementazione sudo, se possibile, in quanto tale meccanismo migliora enormemente la responsabilità.