Mantenere il test fuori dalla produzione.
ISO 27001:2022 A.8.31 (separazione tra ambienti di sviluppo, test e produzione) richiede che questi ambienti siano tenuti separati, in modo che le attività di sviluppo o test non possano accedere, modificare o esporre la produzione. Gran parte di questo confine risiede nella configurazione: stringhe di connessione, variabili d'ambiente, script di seed e fixture, e pipeline CI. Questo significa che una singola modifica a un file di configurazione può silenziosamente annullare questa separazione.
The shapes the same control failure takes.
A.8.31 si indebolisce quando un percorso non di produzione ottiene accesso alla produzione, o quando dati e credenziali di produzione trapelano in un ambiente inferiore. Le forme ricorrenti:
Una configurazione di test punta alla produzione
Un URL di database, endpoint o configurazione di test o CI è impostato su una risorsa di produzione, quindi un'esecuzione di test legge o scrive dati reali.
Le credenziali di produzione finiscono in un ambiente inferiore
Una configurazione di staging o sviluppo riceve credenziali, chiavi o endpoint di produzione, annullando il confine nel momento in cui quell'ambiente è meno protetto.
Viene rimossa una protezione contro l'accesso tra ambienti
Un controllo ambientale che impediva a un'operazione distruttiva, di seed o reset di essere eseguita al di fuori di un ambiente dedicato viene eliminato, consentendone ora l'esecuzione sulla produzione.
Fixtures o dati di seed ottengono accesso alla produzione
Uno script di seed, fixture o migrazione che ricrea o cancella dati ottiene un percorso verso il database di produzione invece che verso uno isolato.
Gli ambienti condividono un archivio di supporto
Una cache, un bucket o una coda è configurato in modo che sviluppo o test e produzione leggano e scrivano nello stesso archivio, quindi le attività non di produzione possono influenzare i dati live.
Una suite end-to-end puntata al database di produzione.
Una suite end-to-end necessita di un database su cui eseguire i test. Il database di test dedicato è vuoto e i test continuano a fallire a causa di dati mancanti, quindi la configurazione viene puntata alla stringa di connessione di produzione per testare con dati reali. La suite trunca e re-seeda le tabelle ad ogni esecuzione, e ora lo fa sulla produzione.
- const TEST_DB = process.env.TEST_DATABASE_URL+ const TEST_DB = process.env.DATABASE_URL // prod, per testare con dati realiawait db.connect(TEST_DB)await resetAndSeed(db) // trunca le tabelle prima di ogni esecuzioneQuesto punta una suite end-to-end che trunca e re-seeda le tabelle sul database di produzione, quindi un'esecuzione di test può cancellare e sovrascrivere dati live. A.8.31 richiede che sviluppo, test e produzione siano separati in modo che le attività non di produzione non possano accedere alla produzione. Ripristina il database di test dedicato e carica le fixture mancanti lì, invece di utilizzare la produzione, e mantieni il confine in modo che un'esecuzione di test non possa mai scrivere su dati live.
La separazione viene verificata al confine, non solo dichiarata.
Un auditor cerca prove che gli ambienti siano effettivamente separati: che test e sviluppo non possano accedere a dati o credenziali di produzione e che la produzione venga modificata solo tramite un percorso controllato. Una configurazione di test collegata a una risorsa di produzione, o un ambiente inferiore che contiene credenziali di produzione, è il tipo di lacuna che contraddice la separazione descritta nella tua policy, e di solito arriva con una singola modifica a un file di configurazione o setup. Il diff è il punto in cui il confine viene violato, e il luogo più economico per individuarlo.
Una revisione, non la topologia del tuo ambiente.
heygrc segnalerà le modifiche che interessano A.8.31 e citerà il controllo in modo che la correzione avvenga nella pull request. Non provvede alla configurazione degli ambienti né gestisce le tue credenziali. Individua il momento in cui un percorso di test o sviluppo accede alla produzione, direttamente nel diff.