Proteggere le pipeline CI/CD
Rafforzare il percorso di compilazione e rilascio.
Proteggere le pipeline CI/CD è una lezione Cyber Security Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cyber Security Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cyber Security Academy include 4 lezioni in totale.
La pipeline come obiettivo
Una pipeline CI/CD ha accesso privilegiato al codice sorgente, ai segreti e alla produzione. Comprometterla consente a un aggressore di inserire backdoor in ogni build futura, aggirando la revisione del codice. È uno dei bersagli di maggior valore nell'ingegneria moderna.
Tratti la pipeline come un'infrastruttura di produzione: merita lo stesso rafforzamento, monitoraggio e rigore in materia di minimo privilegio dei sistemi in esecuzione.
Input non attendibili nelle build
Le pipeline vengono eseguite automaticamente in seguito a eventi che non controllate completamente: pull request, tag e contributi esterni. Una PR dannosa può tentare di modificare la build stessa.
- Una definizione della pipeline compromessa in un fork può tentare di esfiltrare segreti
- Il codice non attendibile potrebbe essere eseguito con gli stessi permessi delle build attendibili
Separi i workflow attendibili da quelli non attendibili: non esponga i segreti ai job attivati da pull request esterne.
Fissare actions e immagini
I passaggi della pipeline recuperano spesso actions di terze parti o immagini di container tramite tag mutabili. Se quel tag viene riassegnato a contenuti dannosi, la build viene compromessa. Fissi gli elementi tramite digest immutabili.
# BAD: mutable tag can be moved under you
uses: some/action@v3
# GOOD: pinned to an immutable commit SHA
uses: some/action@a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0
# pin container steps by digest too
image: build-tools@sha256:9f86d081884c7d659a2feaa0c55ad015...Minimo privilegio per i token
I token predefiniti della pipeline hanno spesso permessi eccessivi, concedendo l'accesso in scrittura all'intero repository o registry. Ne limiti l'ambito esattamente a ciò di cui ogni job ha bisogno.
# scope the default token to read-only, grant more only where needed
permissions:
contents: read
jobs:
publish:
permissions:
contents: read
packages: write # only this job can publishGestione corretta dei segreti
I segreti incorporati direttamente nel codice o condivisi senza limitazioni sono una delle principali vie di fuga. Applichi una gestione rigorosa:
- Conservi i segreti in un secrets manager o nell'archivio dei segreti della CI, mai nel codice
- Preferisca la federazione OIDC con credenziali a breve durata alle chiavi statiche del cloud
- Mascheri i segreti nei log e ne blocchi l'eco
- Limiti ogni segreto ai job e agli ambienti minimi necessari
La federazione OIDC consente alla pipeline di scambiare un'identità disponibile durante la build con credenziali cloud a breve durata, eliminando del tutto le chiavi a lunga durata.
Runner effimeri e isolati
Un runner di build riutilizzato può trasportare malware o segreti fuoriusciti da un job a quello successivo. I runner effimeri vengono creati da zero per ogni job e distrutti al termine, così nulla persiste.
- Un ambiente pulito per ogni build, poi eliminato
- Nessuno stato condiviso tra job attendibili e non attendibili
- Traffico di rete in uscita limitato agli endpoint necessari
Questo supporta direttamente gli obiettivi di isolamento SLSA L3.
Proteggere il branch sorgente
La fiducia nella pipeline inizia nel controllo del codice sorgente. Se chiunque può eseguire il push sul branch di rilascio, la firma e la scansione a valle diventano inutili.
- Richiedere la revisione della pull request prima del merge
- Imporre commit firmati sui branch protetti
- Richiedere il superamento dei controlli di stato, come test e scansioni
- Vietare il force-push e il push diretto su
main
# require signed commits on a branch
git config commit.gpgsign true
# verify a commit signature locally
git verify-commit HEADEseguire la scansione nella pipeline
Inserisca direttamente nella CI i controlli di sicurezza, così i problemi interrompono la build invece di arrivare in produzione.
# secret leak detection
gitleaks detect --source . --redact
# dependency vulnerabilities
osv-scanner --lockfile=package-lock.json
# IaC and config misconfig
trivy config .
# fail the job on critical findings (non-zero exit stops CI)Controllo a due persone per i rilasci
Le azioni ad alto impatto meritano un controllo umano. I deploy in produzione e le modifiche alle credenziali dovrebbero richiedere l'approvazione di una persona diversa dall'autore.
- Le regole di protezione dell'ambiente richiedono un revisore prima del deploy
- Separare l'identità di build da quella di deploy
- Nessun singolo attore può sia creare il codice sia inviarlo in produzione senza revisione
Questo limita sia il rischio interno sia il raggio d'azione di un singolo account compromesso.
Audit e prove di manomissione
Deve poter ricostruire ciò che ha fatto la pipeline. Centralizzi e protegga i relativi log.
- Invii i log CI a un archivio append-only con accesso controllato
- Registri chi ha modificato le definizioni della pipeline e quando
- Produca provenienza firmata, così gli artefatti possono essere ricondotti a una build specifica
- Segnali le anomalie: un nuovo runner self-hosted, un accesso imprevisto ai segreti o una modifica alla configurazione al di fuori della revisione
Checklist per il rafforzamento della pipeline
Una pipeline difendibile combina controlli sul codice sorgente, sulla build e sul rilascio:
- Protezione dei branch, commit sottoposti a revisione e firmati
- Actions e immagini fissate tramite digest
- Token OIDC a breve durata con minimo privilegio
- Runner effimeri e isolati
- Scansione di segreti, dipendenze e configurazione nella pipeline
- Approvazione a due persone per i rilasci
- Artefatti firmati, SBOM e provenienza con registrazione di audit
Verifica rapida: permessi dei token
Decida il controllo appropriato per un token di build privilegiato.
Riepilogo: protezione delle pipeline CI/CD
Ha imparato a rafforzare l'intero percorso di build e rilascio.
- Tratti la pipeline come un sistema di produzione: può inserire backdoor in ogni build futura
- Isoli le build di PR non attendibili dai segreti
- Fissi actions e immagini tramite digest; utilizzi token OIDC a breve durata con minimo privilegio
- Utilizzi runner effimeri e isolati e protegga il branch sorgente
- Esegua scansioni nella pipeline, richieda l'approvazione a due persone per i rilasci e conservi log di audit a prova di manomissione
Corso completato: ora può proteggere la catena di fornitura del software da un'estremità all'altra.
Domande Frequenti
La lezione «Proteggere le pipeline CI/CD» è gratuita?
Sì — il testo completo di «Proteggere le pipeline CI/CD» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cyber Security Academy, passa a CoddyKit PRO. Il corso Cyber Security Academy include 4 lezioni in totale.
Cosa imparerò in «Proteggere le pipeline CI/CD»?
Rafforzare il percorso di compilazione e rilascio. Eserciti Cyber Security Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cyber Security Academy?
Non è richiesta alcuna esperienza precedente. Cyber Security Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Proteggere le pipeline CI/CD»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cyber Security Academy?
Sì. Ogni lezione Cyber Security Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Minacce alla supply chain
- Software Bill of Materials (SBOM)
- Firma delle dipendenze e degli artefatti
- Proteggere le pipeline CI/CD