Se il tuo modello di sicurezza si basa sul concetto di un controllo esterno point-in-time dell'intera base di codice, allora stai sbagliando la sicurezza.
... Probabilmente stai anche usando l'audit sbagliato. Ma ci arriveremo.
Al di là della domanda, tutto il codice deve essere controllato per sicurezza. In molti casi, questo è in realtà un requisito legale: nessun codice viene spedito senza un audit, periodo. La saggezza tradizionale suggerisce che tale verifica sia un evento ad un certo punto del ciclo di vita, ma un modo più ragionevole per farlo è quello di verificare il codice mentre si procede. Cioè, tutto il codice ottiene un controllo di sicurezza prima può essere archiviato nella tua base di codice.
La teoria è semplice; il repository è già stato controllato, quindi non è necessario rivedere i suoi componenti come una procedura standard. Ma quando viene proposta una nuova funzionalità o patch o bugfix, il diff deve essere firmato dal / i manutentore / i appropriato / i. Puoi ottenere l'approvazione per tutto ciò che è importante per te. Ad esempio, il kernel Linux ha un processo di approvazione piuttosto complesso che richiede diverse approvazioni lungo la strada per qualità, semplicità, coerenza, prestazioni, ecc. I requisiti possono variare, ma un controllo di sicurezza dovrebbe far parte di tale processo di approvazione.
In questo caso non stai verificando il prodotto end-to-end, stai solo controllando il diff. Ma migliaia di piccoli audit nel corso del ciclo di sviluppo del prodotto saranno molto più approfonditi e completi di quanto qualsiasi sperimentazione end-to-end possa sperare di essere.
Una verifica end-to-end completa del prodotto è certamente utile e non dovrebbe essere evitata. Questo audit dovrebbe concentrarsi sul prodotto nel suo insieme in un modo che non è facile da fare durante i controlli a livello di patch che hai fatto. Volete guardare l'intera foresta di tanto in tanto, non solo i singoli alberi. La tempistica di questi audit su larga scala dovrebbe probabilmente corrispondere a rilasci importanti, modifiche importanti o verifiche di certificazione di conformità.
Mantenendo sempre aggiornato il controllo a livello di patch, puoi garantire che il codice sia sempre mantenuto in uno stato verificabile, così puoi continuare a spedirlo regolarmente con fiducia.
Informazioni sulle approvazioni in tempo di commit
Se la tua azienda non sta facendo questo, allora stai facendo tutto sbagliato. Ci sono dozzine, forse centinaia, di problemi che vengono risolti richiedendo che ogni modifica del codice sia approvata da almeno un'altra persona, incluso (e soprattutto) durante lo sviluppo iniziale. Devi sempre avere almeno due persone che capiscano come funziona ogni riga di codice e che sono d'accordo sul fatto che il codice sia corretto.
Questo è importante almeno quanto i test unitari. Se non lo fai, interrompi tutto e rivedi le tue politiche in merito a qualità e sicurezza.
Sì, questo processo è in scala. Come notato sopra, il più grande progetto software al mondo lo usa, così come alcune delle società di software più agili e di successo del mondo.