

# SEC11-BP06 Implementazione programmatica del software
<a name="sec_appsec_deploy_software_programmatically"></a>

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
<a name="implementation-guidance"></a>

 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](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html). 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](https://aws.amazon.com/cloudformation/) o il [AWS CDK](https://aws.amazon.com/cdk/) per definire l'infrastruttura, quindi [AWS CodeBuild](https://aws.amazon.com/codebuild/) e [AWS CodePipeline](https://aws.amazon.com/codepipeline/) per eseguire operazioni CI/CD. 

### Passaggi dell'implementazione
<a name="implementation-steps"></a>
+  Crea pipeline CI/CD ben definite per semplificare il processo di implementazione. 
+  L'uso di [AWS CodeBuild](https://aws.amazon.com/codebuild/) e [AWS Code Pipeline](https://aws.amazon.com/codepipeline/) 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](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/organizing-your-aws-environment.html). 
+  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](https://docs.aws.amazon.com/signer/latest/developerguide/Welcome.html) o [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/) per firmare e verificare i pacchetti software implementati. 

## Risorse
<a name="resources"></a>

 **Best practice correlate:** 
+  [SEC11-BP02 Automazione dei test lungo il ciclo di vita di sviluppo e test](sec_appsec_automate_testing_throughout_lifecycle.md) 

 **Documenti correlati:** 
+  [Workshop sull'integrazione continua e sulla distribuzione continua in AWS](https://catalog.us-east-1.prod.workshops.aws/workshops/ef1c179d-8097-4f34-8dc3-0e9eb381b6eb/en-US/) 
+  [Accelerazione delle implementazioni su AWS con una governance efficace](https://aws.amazon.com/blogs/architecture/accelerate-deployments-on-aws-with-effective-governance/) 
+  [Automazione di implementazioni pratiche e sicure](https://aws.amazon.com/builders-library/automating-safe-hands-off-deployments/) 
+  [Firma del codice usando l'Autorità privata per la gestione del certificato AWS (ACM CA privata/ACM PCA) e chiavi asimmetriche AWS Key Management Service](https://aws.amazon.com/blogs/security/code-signing-aws-certificate-manager-private-ca-aws-key-management-service-asymmetric-keys/) 
+  [Firma del codice, un controllo di attendibilità e integrità per AWS Lambda](https://aws.amazon.com/blogs/aws/new-code-signing-a-trust-and-integrity-control-for-aws-lambda/) 

 **Video correlati:** 
+  [Informazioni pratiche: automazione di pipeline di distribuzione continua in Amazon](https://www.youtube.com/watch?v=ngnMj1zbMPY) 

 **Esempi correlati:** 
+  [Implementazioni blu/verde con AWS Fargate](https://catalog.us-east-1.prod.workshops.aws/workshops/954a35ee-c878-4c22-93ce-b30b25918d89/en-US) 