Skip to main content

Le pipeline CI/CD sono potenti strumenti che abilitano uno sviluppo software più rapido e frequente, dalla progettazione al rilascio. Tuttavia, quando sono apparse inizialmente sulla scena tecnologica, spesso presentavano un anello mancante: la sicurezza.

Questo è un problema, soprattutto considerando statistiche come questa: circa una organizzazione su cinque ha segnalato un incidente di sicurezza nella propria pipeline CI/CD nell’anno precedente, secondo un recente sondaggio condotto da Techstrong Research.

Con la diffusione sempre maggiore delle pipeline CI/CD, si è anche modificato il panorama delle minacce per i team software. Come fa notare Open Worldwide Application Security Project (OWASP) nella sua guida: “Data la loro importanza e popolarità, le pipeline CI/CD sono anche un bersaglio attraente per gli hacker malintenzionati, e la loro sicurezza non può essere trascurata.”

Want more from The CTO Club?

Create a free account to finish this piece and join a community of CTOs and engineering leaders sharing real-world frameworks, tools, and insights for designing, deploying, and scaling AI-driven technology.

This field is for validation purposes and should be left unchanged.
Name*

In questo articolo analizzeremo i rischi specifici e i principi e le pratiche più efficaci per mitigare tali rischi e garantire la sicurezza delle pipeline CI/CD.

Che cos’è una Pipeline CI/CD?

Prima di tutto, assicuriamoci di parlare la stessa lingua: che cos’è la CI/CD? È l’abbreviazione di Continuous Integration e Continuous Delivery, e fa riferimento a un insieme di processi e strumenti che i team software moderni utilizzano per progettare, costruire e infine distribuire – con l’automazione che rappresenta uno dei principali fattori abilitanti per consegnare codice e aggiornamenti più velocemente e più spesso.

Ecco come lo abbiamo definito in un nostro articolo precedente, “Panoramica su CI/CD Pipeline: Perché dovresti conoscerla”: “Una pipeline CI/CD è un processo di sviluppo e rilascio software trasparente, automatizzato e affidabile.”

L’obiettivo di solito non è solo quello di rilasciare in modo più veloce e frequente – ma anche di migliorare la qualità, l’affidabilità e – a patto che gli si dia la giusta priorità – la sicurezza.

Rischi comuni di sicurezza per le pipeline CI/CD: 5 aree di attenzione

Le radici di molti rischi per la sicurezza delle pipeline CI/CD dovrebbero suonare almeno in parte familiari a chi lavora nel settore tech. Aspetti come il controllo degli accessi e la concessione eccessiva di privilegi, il monitoraggio e la registrazione insufficienti, dipendenze non governate e catene di approvvigionamento software trascurate contribuiscono tutti all’aumento dei rischi se non gestiti in modo corretto. 

OWASP ha pubblicato una lista dei 10 principali rischi di sicurezza per le pipeline CI/CD che vale la pena consultare come riferimento. È una derivazione del ben noto elenco OWASP Top 10 dei rischi di sicurezza nelle applicazioni web, riconosciuto come standard di settore per la sicurezza delle applicazioni web.

I rischi nella pipeline CI/CD possono essere sia introdotti che aggravati dall’automazione. Molti rischi vengono introdotti (o portati in produzione) automaticamente tramite le pipeline CI/CD. Un po’ ironicamente, l’automazione stessa della sicurezza di queste pipeline con strumenti di Infrastructure as Code (IaC) o altre forme di automazione può, se non monitorata, introdurre nuovi rischi o accentuare quelli esistenti, fa notare Derek Ashmore, Application Transformation Principal presso Asperitas.

Ecco cinque aree chiave di rischio da considerare quando si mette in sicurezza la propria pipeline CI/CD, secondo Ashmore:

  • Controllo degli accessi: “Il controllo degli accessi è spesso sovradimensionato per comodità e non aderisce ai principi del minimo privilegio e doppio controllo”, afferma Ashmore. In generale, qui dovrebbe prevalere il principio del minimo privilegio – non concedere a persone o macchine l’accesso a dati o sistemi di cui non hanno effettivamente bisogno per svolgere il loro lavoro.
  • Dipendenze non validate: Il software attuale – e di conseguenza le pipeline CI/CD – si basa spesso su librerie di terze parti e altre dipendenze esterne, e questi componenti a volte presentano vulnerabilità. “Assicurati sempre che le dipendenze esterne siano validate e abbiano una catena di custodia tracciabile e verificabile,” dice Ashmore.
  • Audit e logging: Assicurati di aver implementato un sistema completo di auditing e logging. La mancanza di visibilità e di possibilità di audit può portare a esposizioni di sicurezza più elevate di cui altrimenti non saresti consapevole.
  • Escalation dei privilegi: L’automazione – tipica dei processi CI/CD e della sicurezza CI/CD – può talvolta essere sviluppata in compartimenti stagni che generano involontariamente lacune in cui i privilegi possono essere elevati eseguendo sequenze di automazione non previste. “Per mitigare questo rischio, assicurati che sia implementato il principio del minimo privilegio e che siano previsti casi di test per i flussi automatizzati e per le singole attività o pipeline,” spiega Ashmore.
  • Test automatizzati inadeguati: I test automatizzati sono fondamentali non solo per garantire la sicurezza delle pipeline CI/CD – ad esempio, tramite scansioni automatiche delle vulnerabilità sulle immagini dei container – ma anche per la salute generale della pipeline. “Difetti nella pipeline possono generare indesiderate vulnerabilità di sicurezza e influire negativamente sui team di sviluppo applicativo impedendo loro di svolgere il lavoro assegnato,” conclude Ashmore.

10 I migliori strumenti CI/CD!

Here's my pick of the 10 best software from the 10 tools reviewed.

Clicks on the links below may earn a commission, which supports our independent testing and review of software and services. Learn more about how we stay transparent.

15 migliori pratiche per una sicurezza CI/CD più robusta

Una volta compresi bene i rischi, è il momento di trovare le soluzioni. La buona notizia: ce ne sono molte, anche perché il settore ha ormai compreso l’importanza di integrare la sicurezza come elemento centrale nel CI/CD. 

Ashmore di Asperitas ci ha fornito una panoramica di 15 best practice e tattiche comunemente accettate per rafforzare la sicurezza della pipeline CI/CD. Senza ulteriori indugi:

  1. Utilizza sistemi di controllo versione sicuri: Uno dei principali vantaggi dei sistemi di controllo versione come Git è la possibilità di tracciare la cronologia delle modifiche, utile per indagare violazioni della sicurezza o altri problemi. “Idealmente, nulla dovrebbe essere modificato manualmente,” afferma Ashmore. Dai un’occhiata alla nostra lista completa di strumenti di controllo del codice sorgente per ulteriori opzioni: “20 migliori strumenti per il controllo versione recensiti”
  2. Applica il principio del minimo privilegio: Assicurati che i ruoli e i permessi concessi sia agli utenti umani sia, ad esempio, alle risorse infrastrutturali, siano minimi e seguano il principio del minimo privilegio. Se non ne hanno bisogno, non concederlo.
  3. Usa la gestione dei segreti: “Evita di scrivere in chiaro segreti – password, token, chiavi API – nei template IaC,” spiega Ashmore. Utilizza invece strumenti di gestione dei segreti come HashiCorp Vault, AWS Secrets Manager o Azure Key Vault. Dai un’occhiata al nostro approfondimento sugli strumenti di gestione dei segreti per altre opzioni: “Guardian Digitali: i 24 migliori strumenti di gestione dei segreti”
  4. Esegui regolari scansioni di sicurezza automatizzate: Usa strumenti che analizzano automaticamente la presenza di vulnerabilità di sicurezza, e fallo nelle fasi più iniziali possibili della pipeline CI/CD.
  5. Segui il principio dell’immutabilità: Ridurre al minimo le modifiche manuali, soprattutto agli ambienti infrastrutturali, è una buona strategia per ridurre i rischi. “L’infrastruttura dovrebbe essere immutabile; una volta fatta il provisioning, non dovrebbe essere alterata manualmente,” dice Ashmore. “Le modifiche dovrebbero essere effettuate aggiornando il codice IaC e ridistribuendo. Eliminare la possibilità di apportare cambiamenti manuali è la via più sicura.”
  6. Utilizza il controllo degli accessi basato sui ruoli (RBAC): “Controlla l’accesso ai tuoi strumenti IaC e agli ambienti utilizzando il RBAC,” afferma Ashmore. “Solo utenti autorizzati dovrebbero poter distribuire o modificare l’infrastruttura.” Kubernetes è un altro esempio importante, soprattutto perché è parte chiave di molte pipeline CI/CD. Non affidarti solo alle configurazioni predefinite.
  7. Applica l’idempotenza: Ora si entra nel tecnico: l’idempotenza è il concetto secondo cui è possibile eseguire determinate operazioni – o codice, nel caso dell’ingegneria software – più volte senza modificarne il risultato finale. “Progetta l’IaC [e le pipeline CI/CD] in modo idempotente, cioè il fatto di eseguire più volte il codice non dovrebbe cambiare lo stato dell'infrastruttura, a meno che non sia espressamente richiesto,” precisa Ashmore.
  8. Usa la parametrizzazione: Ashmore consiglia di utilizzare variabili e parametri nei template IaC per evitare di scrivere valori specifici dell’ambiente, come regioni, dimensioni delle istanze e indirizzi IP.
  9. Implementa monitoraggio e logging: Sono indispensabili per rilevare attività non autorizzate o anomale e per identificare le cause di eventuali incidenti. “Servizi come AWS CloudTrail o Azure Monitor possono aiutare,” dice Ashmore. Ecco altre due risorse: “I 25 migliori software di monitoraggio dei log” e “Guida ai 26 migliori strumenti di monitoraggio infrastrutturale”
  10. Utilizza strumenti di testing infrastrutturale: “Integra strumenti di testing infrastrutturale come Test Kitchen, Terratest o InSpec per validare la correttezza dell’IaC prima del deployment,” spiega Ashmore.
  11. Implementa il rilevamento delle deviazioni infrastrutturali: Usa strumenti per individuare drift infrastrutturali – cioè cambiamenti avvenuti fuori dalla pipeline CI/CD – e ripristina le modifiche non autorizzate quando vengono rilevate, suggerisce Ashmore.
  12. Segui gli standard di sicurezza e compliance: Assicurati che la tua pipeline CI/CD sia conforme agli standard di sicurezza di settore e ai framework di compliance, come i benchmark CIS, NIST o GDPR. L’elenco OWASP Top 10 citato sopra è un altro esempio.
  13. Crea codice IaC modulare e riutilizzabile: “Scomponi il codice IaC in componenti riutilizzabili e modulari, come moduli Terraform o stack AWS CloudFormation,” afferma Ashmore.
  14. Documenta la tua pipeline: Ashmore consiglia di creare e mantenere una documentazione approfondita delle tue policy IaC, dei template e delle procedure di sicurezza, così come delle altre componenti della pipeline CI/CD.
  15. Aggiorna regolarmente gli strumenti: “Mantieni i tuoi strumenti IaC (come Terraform, Ansible, CloudFormation) e tutte le relative dipendenze aggiornate alle versioni più recenti,” afferma Ashmore. Lo stesso consiglio vale per ogni altro strumento e dipendenza della tua pipeline: versioni obsolete hanno più probabilità di presentare rischi noti (e talvolta sconosciuti).

Unisciti per ulteriori approfondimenti su CI/CD

Le pipeline CI/CD sono ormai una presenza fissa nello sviluppo software moderno. Questo significa che la sicurezza delle pipeline CI/CD è altrettanto fondamentale. Prima di andare, iscriviti alla nostra newsletter per ricevere gli ultimi approfondimenti dai migliori esperti del settore software.