Se stai cercando la massima sicurezza di altissimo livello - air gapping è il unico modo per farlo funzionare. Sfortunatamente, non avere assolutamente alcuna connessione con il mondo esterno in nessuna circostanza può essere proibitivo, specialmente perché gli sviluppatori amano copiare e incollare frammenti di codice dalla documentazione e così via.
In definitiva, questo probabilmente significa anche prendere i laptop fuori dal sito diventa un no-go anche.
Supponendo che non puoi farlo (perché diciamocelo, è piuttosto una domanda) - in primo luogo, workstation mobili. Sicuramente vai con l'opzione VPN. Garantire tutto il traffico internet tramite quei laptop passa attraverso la VPN. In questo modo, la tua architettura e i tuoi requisiti di sicurezza (politiche del firewall, ecc.) Sono sicuramente applicati e, cosa più importante, non esporrai nulla se non l'endpoint VPN alla rete pubblica.
Encrypt i dischi rigidi del laptop come minimo. Se il laptop viene rubato mentre è spento, il codice sorgente dovrebbe essere protetto per un ragionevole lasso di tempo. Se il laptop non viene spento, o se l'utente malintenzionato può osservare l'inserimento della password, non hai fatto nulla, ma rendi il loro lavoro leggermente più difficile. LUKS è supportato sia da Ubuntu che da CentOS per quanto ne so - utilizza cryptsetup e offre una scelta di algoritmi decenti e password multi-slot.
La crittografia del disco basata su hardware sarebbe migliore, semplicemente perché significa che la tua partizione /boot
non è modificabile.
Le LAN virtuali per sicurezza ricevono opinioni contrastanti. Dal punto di vista dello sviluppo, mi aspetto che il tuo team lavori con sudo, o root, e come tale sarebbe facilmente in grado di riconfigurare il software VM per consentire il loro accesso ospite, se lo desiderano. Come menzionato nel post del blog, le macchine virtuali sono utilizzate per la segregazione della rete a basso costo, che funziona quando è possibile applicare la configurazione. Qui sembra una vendita difficile.
Questo non vuol dire che non puoi usare macchine virtuali, naturalmente; Vorrei semplicemente studiare con cura esattamente quanto è difficile per i tuoi sviluppatori aggirare.
Un modo in cui ho visto questo funziona correttamente se si dispone di una rete sufficientemente veloce e gli sviluppatori paziente devono utilizzare il desktop remoto per VM disponibili sulla rete, ma non fisicamente accessibili agli stessi sviluppatori. È anche possibile utilizzare client thin-thin, anziché desktop, come RDP. Il modello thin client si occupa anche del mio prossimo argomento ... sicurezza fisica.
Quando dico sicurezza fisica, voglio dire quanto è difficile per i tuoi sviluppatori collegare una chiavetta USB, svn co
e uscire con il lotto? "Prendendo il codice di casa" può accadere in questo modo, ma perdi tutto se la chiavetta USB viene persa. In generale, sono disponibili due soluzioni: resina epossidica e rimuovendo i vari moduli hci.ko
dal kernel, impedendo in tal modo il riconoscimento di USB. Sfortunatamente, questo ha lo svantaggio di disabilitare anche tastiere e mouse USB.