SEC11-BP06 Implementazione programmatica del software - Pilastro della sicurezza

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 o il AWS CDK per definire l'infrastruttura, quindi AWS CodeBuild e AWS CodePipeline per eseguire operazioni CI/CD.

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: