SEC11-BP06 Implementazione programmatica del software
Esegui implementazioni programmatiche del software laddove possibile. Questo approccio riduce la probabilità che un'implementazione non riesca o che si verifichi un problema imprevisto a causa dell'errore umano.
Risultato desiderato: un intervento minimo sui dati da parte delle persone è un principio chiave dello sviluppo sicuro nel Cloud AWS. Questo principio include anche il modo in cui viene implementato il software.
I vantaggi legati alla scelta di non affidare a persone l'implementazione del software è la migliore garanzia che la soluzione implementata sia esattamente identica a quella testata e che l'implementazione verrà eseguita in modo coerente ogni volta. Il software non deve essere modificato in modo da funzionare in ambienti diversi. Usando i principi dello sviluppo di applicazioni a dodici fattori, in particolare l'esternalizzazione della configurazione, puoi implementare lo stesso codice in più ambienti senza richiedere modifiche. La firma crittografica dei pacchetti software è un ottimo metodo per verificare che non vengano apportate modifiche tra ambienti. Il risultato complessivo di questo approccio è la riduzione dei rischi nel processo di modifica e il miglioramento della coerenza delle versioni del software.
Anti-pattern comuni:
-
Implementazione manuale del software nell'ambiente di produzione.
-
Applicazione manuale di modifiche al software per soddisfare i requisiti di ambienti diversi.
Vantaggi dell'adozione di questa best practice:
-
Maggiore affidabilità del processo di rilascio del software.
-
Riduzione dei rischi legati a modifiche errate che hanno impatto sulla funzionalità aziendale.
-
Processi di rilascio più frequenti grazie a un rischio di modifica minimo.
-
Funzionalità di ripristino automatico dello stato precedente in caso di eventi imprevisti durante l'implementazione.
-
Possibilità di usare la crittografia per dimostrare che il software implementato è esattamente identico a quello testato.
Livello di rischio associato alla mancata adozione di questa best practice: elevato
Guida all'implementazione
Crea la struttura di Account AWS per eliminare l'accesso umano frequente dagli ambienti e usa strumenti CI/CD per eseguire le implementazioni. Progetta le applicazioni in modo da ottenere i dati di configurazione specifici dell'ambiente da un'origine esterna, ad esempio l'Archivio dei parametri AWS Systems Manager. Firma i pacchetti dopo che vengono testati e convalida le firme durante l'implementazione. Configura le pipeline CI/CD per il push del codice delle applicazioni e usa valori Canary per confermare la corretta esecuzione dell'implementazione. Usa strumenti come AWS CloudFormation
Passaggi dell'implementazione
-
Crea pipeline CI/CD ben definite per semplificare il processo di implementazione.
-
L'uso di AWS CodeBuild
e AWS Code Pipeline per fornire funzionalità CI/CD semplifica l'integrazione di test di sicurezza nelle pipeline. -
Segui le linee guida sulla separazione degli ambienti nel whitepaper sull'organizzazione dell'ambiente AWS usando più account.
-
Verifica che non si verifichi accesso umano frequente agli ambienti in cui sono in esecuzione carichi di lavoro di produzione.
-
Progetta le applicazioni in modo che supportino l'esternalizzazione dei dati di configurazione.
-
Valuta se eseguire l'implementazione usando un modello di implementazione blu/verde.
-
Implementa valori Canary per convalidare la corretta implementazione del software.
-
Usa strumenti di crittografia come AWS Signer o AWS Key Management Service (AWS KMS)
per firmare e verificare i pacchetti software implementati.
Risorse
Best practice correlate:
Documenti correlati:
Video correlati:
Esempi correlati: