La scansione dei container GitLab è uno strumento essenziale per mantenere la sicurezza e l'integrità delle applicazioni containerizzate. Acquisire familiarità con questa tecnica e utilizzarla diventa ancora più importante man mano che le organizzazioni adottano la containerizzazione per la distribuzione del software.
Questo articolo tratterà in modo approfondito GitLab Container Scanning, il suo funzionamento, i formati di container supportati e come le best practice e gli esempi reali possono aiutare a facilitarne la configurazione per i progetti. Con le best practice evidenziate in tutto il documento, questa guida offre una comprensione di GitLab Container Scanning che garantisce processi di sviluppo sicuri con un flusso di lavoro fluido.
Comprendere GitLab Container Scanning
Comprendere la scansione dei container GitLab è fondamentale per chi desidera proteggere le applicazioni containerizzate utilizzando GitLab o altre piattaforme di containerizzazione come Docker. GitLab Container Scanning funge da controllo di sicurezza, verificando la presenza di vulnerabilità che potrebbero essere sfruttate dagli hacker in ogni componente del software, agendo come un controllo antivirus sui suoi elementi costitutivi!
L'ispezione comporta un'attenta analisi del software contenuto nei container per rilevare eventuali problemi o rischi potenziali che potrebbero essere presenti al loro interno. Questo passaggio è fondamentale quando si sviluppa un software moderno; i container sono generalmente costituiti da componenti disparati provenienti da più fonti che devono tutti rispettare gli standard di sicurezza per mantenere l'integrità all'interno dell'applicazione.
GitLab Container Scanning può essere prezioso per lo sviluppo di software, fornendo una protezione essenziale alle applicazioni software containerizzate. L'identificazione tempestiva delle vulnerabilità contribuisce a mantenere la sicurezza dei sistemi, garantendo tranquillità sia agli sviluppatori che alle parti interessate.
Come funziona GitLab Container Scanning?
GitLab Container Scanning è in grado di identificare e risolvere automaticamente le vulnerabilità all'interno delle immagini dei container, garantendo la tranquillità che qualsiasi vulnerabilità all'interno di queste immagini sia stata risolta in modo rapido e affidabile. Ecco una descrizione dettagliata del suo funzionamento:
La scansione dei container GitLab può essere facilmente integrata nella pipeline di integrazione continua/distribuzione continua (CI/CD), rendendo il processo di scansione parte integrante di ogni build e push, non semplicemente un evento isolato. Ciò garantisce che i controlli di sicurezza diventino una parte integrante dello sviluppo piuttosto che qualcosa da eseguire una sola volta.
Utilizzo dei database delle vulnerabilità
Questo strumento incrocia i componenti con i database delle vulnerabilità note per rilevare le vulnerabilità note all'interno dei pacchetti software o delle librerie utilizzati nei container. Ciò consente di identificare facilmente le minacce note che potrebbero essere presenti al loro interno.
Generazione di un report
GitLab Container Scanning genera un report completo al termine dell'operazione, che descrive le vulnerabilità rilevate e le loro categorie di gravità e suggerisce correzioni o strategie di mitigazione ove necessario.
Automatizzazione delle risposte
GitLab Container Scanning consente agli utenti di impostare risposte automatiche in base alla configurazione; queste potrebbero includere la creazione di problemi che i team di sviluppo devono risolvere o persino l'interruzione della CI/CD pipeline se vengono scoperte vulnerabilità critiche, per garantire che nessun codice non sicuro venga mai utilizzato in produzione.
Rimedio e monitoraggio continuo
Il nostro strumento di monitoraggio continuo aiuta a porre rimedio in modo continuativo, scansionando costantemente gli aggiornamenti dei container man mano che vengono rilasciati, verificando automaticamente la presenza di vulnerabilità che potrebbero emergere con l'implementazione delle modifiche e garantendo una protezione continua contro le nuove vulnerabilità che si presentano nel tempo.
Guida al mercato CNAPP
La guida di mercato Gartner per le piattaforme di protezione delle applicazioni cloud-native fornisce informazioni chiave sullo stato del mercato delle CNAPP.
Leggi la guidaFormati di container supportati da GitLab
Quando ci riferiamo al supporto di GitLab alla scansione di determinati formati di container, intendiamo l'analisi della loro struttura specifica e della disposizione dei dati al loro interno. Gli strumenti di scansione Trivy e Grype offrono un ampio supporto su diverse distribuzioni Linux, consentendo di identificare rapidamente le vulnerabilità in tutti gli ambienti.
Strumenti di scansione open source:
- Trivy (uno scanner di vulnerabilità open source per container e sistemi operativi): Trivy è uno scanner di vulnerabilità open source consolidato, specificamente progettato per container e sistemi operativi, che offre funzionalità di scansione leggere ma complete per identificare le vulnerabilità in molte distribuzioni Linux.
- Grype: Grype fornisce dati accurati sulle vulnerabilità delle immagini dei container. Come strumento di analisi, Grype integra Trivy esaminando accuratamente le minacce alla sicurezza con dati precisi e utilizzabili sulle vulnerabilità.
Distribuzioni Linux supportate
È fondamentale comprendere la differenza tra formato container e distribuzioni. I container memorizzano i dati al loro interno, mentre le distribuzioni si riferiscono a diverse varianti del sistema operativo Linux che consentono ai servizi Trivy e Grype di GitLab di fornire supporto. GitLab supporta un elenco impressionante di distribuzioni; ecco una breve panoramica:
- Alma Linux: scansionato utilizzando Trivy
- Alpine Linux: supportato sia da Grype che da Trivy
- Amazon Linux: supportato sia da Grype che da Trivy
- BusyBox: scansionato da Grype
- CentOS: supportato sia da Grype che da Trivy
- CBL-Mariner: Scansionato utilizzando Trivy
- Debian: Supportato sia da Grype che da Trivy
- Distroless: Supportato sia da Grype che da Trivy
- Oracle Linux: supportato sia da Grype che da Trivy
- Photon OS: scansionato da Trivy
- Red Hat (RHEL): supportato sia da Grype che da Trivy
- Rocky Linux: Scansionato utilizzando Trivy
- SUSE: Scansionato da Trivy
- Ubuntu: Supportato sia da Grype che da Trivy
L'importanza di un ampio supporto alla distribuzione
Noi di GitLab Container Scanning comprendiamo l'importanza sempre più cruciale di un ampio supporto alla distribuzione, dato che le applicazioni containerizzate stanno guadagnando popolarità tra gli sviluppatori, che spesso scelgono diverse distribuzioni Linux in base a prestazioni, sicurezza, compatibilità o preferenze personali. Supportando più distribuzioni contemporaneamente, GitLab Container Scanning garantisce agli sviluppatori la possibilità di continuare a mantenere la sicurezza delle applicazioni indipendentemente dall'ambiente selezionato, rafforzando ulteriormente il nostro impegno a offrire una sicurezza olistica per i carichi di lavoro containerizzati.
Come configurare GitLab per la scansione dei container?
L'implementazione di GitLab per la scansione dei container è un processo efficiente che facilita la scansione automatica delle vulnerabilità delle applicazioni containerizzate. Ecco una descrizione generale di come è possibile ottenerla:
1. Abilitazione della scansione dei container tramite una richiesta di merge automatica
GitLab 14.9 rende semplice e veloce abilitare la scansione dei container tramite una richiesta di merge automatica; ecco come:
- Passare al progetto desiderato.
- Andare su Sicurezza > Configurazione della sicurezza.
- Nella riga Scansione dei container, selezionare Configura con una richiesta di unione.
Una volta attivato, questo processo genererà una richiesta di unione automatica contenente tutte le modifiche necessarie per abilitare la scansione dei container. È sufficiente esaminarla prima dell'unione per completare la configurazione della scansione dei container.
2. Configurazione tramite file .gitlab-ci.yml:
La configurazione manuale della scansione dei container richiede l'aggiunta del modello pertinente al file .gitlab-ci.yml:
include: - template: Security/Container-Scanning.gitlab-ci.yml Questo modello aggiunge un processo di scansione dei container alla pipeline CI/CD che esegue la scansione delle immagini Docker alla ricerca di vulnerabilità e salva i risultati come artefatto del report di scansione dei container.
Un esempio di file .gitlab-ci.yml che crea e analizza immagini Docker potrebbe essere il seguente.
include: - template: Jobs/Build.gitlab-ci.yml - template: Security/Container-Scanning.gitlab-ci.yml container_scanning: variables: CS_DEFAULT_BRANCH_IMAGE: $CI_REGISTRY_IMAGE/$CI_DEFAULT_BRANCH:$CI_COMMIT_SHA 3. Personalizzazione delle impostazioni di scansione dei container
GitLab consente di personalizzare la modalità di scansione dei container in base alle proprie esigenze specifiche, dall'output avanzato e dall'autenticazione con il registro specifico alla fornitura di risultati più granulari.
Per abilitare l'output dettagliato, ad esempio, modificare il file .gitlab-ci.yml di conseguenza:
include: - template: Security/Container-Scanning.gitlab-ci.yml variables: SECURE_LOG_LEVEL: 'debug' 4. Scansione di un'immagine in un registro remoto:
È anche possibile eseguire la scansione di immagini che si trovano in un registro diverso dai progetti utilizzando la seguente configurazione:
include: - template: Security/Container-Scanning.gitlab-ci.yml container_scanning: variables: CS_IMAGE: example.com/user/image:tag L'implementazione di GitLab Container Scanning è un'esperienza intuitiva e facile da usare, dalle richieste di merge automatizzate alla configurazione manuale. GitLab integra i controlli di sicurezza nel flusso di lavoro degli sviluppatori grazie ai suoi potenti strumenti di scansione, rendendo GitLab un elemento essenziale nello sviluppo di software moderno e sicuro.
Best practice per la scansione dei container GitLab
1. Aggiornare regolarmente gli strumenti di scansione
È fondamentale che gli strumenti di scansione come Trivy e Grype rimangano aggiornati in modo da poter rilevare le nuove vulnerabilità non appena emergono, pur rimanendo compatibili con eventuali modifiche apportate dalle distribuzioni supportate. Gli aggiornamenti regolari garantiscono che ciò avvenga.
2. Integrare la scansione nelle prime fasi dello sviluppo
Quanto prima la scansione dei container diventa parte del ciclo di sviluppo, tanto prima è possibile identificare e correggere le vulnerabilità. L'integrazione di GitLab Container Scanning nella pipeline di integrazione continua (CI) garantisce che le scansioni avvengano automaticamente ad ogni push del codice, diventando parte integrante del flusso di lavoro di sviluppo e contribuendo a identificare e risolvere più rapidamente le vulnerabilità.
3. Personalizza le scansioni in base alle tue esigenze
Non tutti i progetti richiedono scansioni identiche. Personalizzarle in base ai requisiti del progetto, per quanto riguarda i livelli di verbosità, il targeting di determinati registri o l'impostazione delle variabili, può rendere la scansione molto più veloce ed efficiente. Utilizza le funzioni di personalizzazione all'interno del file .gitlab-ci.yml per ottimizzare le scansioni con precisione.
4. Rivedere e agire regolarmente sui rapporti di scansione
Non è sufficiente eseguire le scansioni: i risultati devono anche essere esaminati e affrontati tempestivamente. La revisione regolare dei risultati dei rapporti di scansione dei container, combinata con una correzione sistematica, garantisce che le vulnerabilità vengano rapidamente identificate e trattate di conseguenza. L'integrazione del flusso di lavoro di correzione nei processi di sviluppo esistenti può essere d'aiuto in questo importante compito di correzione.
Flusso di lavoro di correzione con GitLab Container Scanning
Il flusso di lavoro di correzione di GitLab Container Scanning comprende diversi passaggi progettati per identificare le vulnerabilità delle immagini dei container e risolverle in modo efficiente e sistematico. Un flusso di lavoro tipico potrebbe essere simile al seguente:
- Determinazione delle vulnerabilità: GitLab fornisce la funzione Container Scanning e la scansione di sicurezza con Trivy o Grype; una volta individuate le vulnerabilità, nell'ambito di questa fase verrà generato un rapporto dettagliato che le descrive tutte.
- Analisi dei risultati: in questa fase è necessario effettuare un'analisi approfondita dei risultati dei report di scansione dei container per fornire dettagli sulla gravità, il tipo e l'origine delle vulnerabilità che richiedono un'attenzione immediata. Dando priorità ai problemi immediati per una risoluzione immediata.
- Priorità alla correzione: sulla base di questa valutazione, è necessario assegnare una priorità ai problemi. Le questioni ad alta priorità tendono a concentrarsi sulle vulnerabilità che rappresentano una minaccia immediata per le applicazioni, mentre fattori quali l'impatto e la facilità di sfruttamento potrebbero avere un ruolo importante.
- Elaborazione di un piano di correzione: dopo aver assegnato una priorità alle vulnerabilità, è necessario elaborare un piano di correzione efficace per affrontare ciascuna di esse. Questo piano include le azioni necessarie per mitigare efficacemente ciascuna vulnerabilità, che potrebbero comportare l'installazione di aggiornamenti, l'apporto di modifiche o alterazioni, o la modifica diretta di parti del codice.
- Implementare le correzioni: una volta definito il piano, è necessario attuare le azioni correttive utilizzando le richieste di merge di GitLab che modificano il codice, le impostazioni di configurazione o le dipendenze che influenzano i codici interessati; la collaborazione tra sviluppatori, team di sicurezza e altri attori chiave si rivela spesso essenziale per portare a termine con successo questo processo.
- Testare la correzione: Dopo l'applicazione delle correzioni, è fondamentale eseguire ulteriori controlli di verifica per assicurarsi che risolvano con successo le vulnerabilità senza creare nuovi problemi. Una nuova scansione delle immagini dei container o l'esecuzione di test aggiuntivi potrebbero aiutare a verificare se le misure correttive hanno eliminato con successo le vulnerabilità e creato falle nella sicurezza.
- Monitoraggio e miglioramento continuo: I flussi di lavoro di correzione non avvengono dall'oggi al domani; il monitoraggio, la scansione e la revisione continui garantiscono la sostenibilità nel tempo. L'adozione di un approccio iterativo ne assicura la sostenibilità a lungo termine.
Esempi reali e casi d'uso
1. Settore bancario
La sicurezza nelle applicazioni bancarie è di fondamentale importanza. I metodi tradizionali per il rilevamento delle vulnerabilità spesso non sono in grado di individuare tempestivamente i problemi; aggiungendo GitLab Container Scanning alla pipeline di integrazione continua/distribuzione continua per le app bancarie, è possibile effettuare ispezioni e correzioni in tempo reale, ottenendo una soluzione molto più robusta che non solo rafforza la sicurezza complessiva, ma promuove la fiducia e la conformità in tutto il settore.
2. Sanità
I sistemi sanitari gestiscono dati sensibili che devono essere protetti secondo rigorose linee guida normative, ma i controlli manuali possono spesso diventare macchinosi e soggetti a errori. Adottando GitLab Container Scanning per valutazioni di vulnerabilità e nell'ambito dei processi di reporting di conformità continua, le organizzazioni sanitarie possono ottimizzare GitLab Container Scanning per proteggersi dalle violazioni, rendendo il processo di reporting molto meno complesso rispetto al passato.
3. Start-up tecnologiche
Le start-up tecnologiche spesso hanno difficoltà a trovare un equilibrio tra lo sviluppo rapido e il mantenimento degli standard di sicurezza. GitLab Container Scanning può aiutare le aziende ad allineare entrambi i processi; la scansione continua delle vulnerabilità delle applicazioni containerizzate consente cicli di sviluppo più rapidi, proteggendo al contempo la sicurezza e offrendo alle startup l'agilità necessaria per innovare, pur mantenendo una solida posizione in materia di sicurezza.
Vedere SentinelOne in azione
Scoprite come la sicurezza del cloud basata sull'intelligenza artificiale può proteggere la vostra organizzazione con una demo individuale con un esperto dei prodotti SentinelOne.
Richiedi una demoConclusione
La scansione dei container GitLab è diventata una parte preziosa del panorama dello sviluppo moderno, fornendo alle organizzazioni un mezzo semplice per rilevare in modo rapido e affidabile le vulnerabilità all'interno delle applicazioni containerizzate. Grazie alla perfetta integrazione nelle pipeline di sviluppo e alla visibilità sulle vulnerabilità sin dalle prime fasi del processo di sviluppo, le organizzazioni sono in grado di integrare la sicurezza nel proprio processo di sviluppo, mitigando i rischi e aumentando al contempo il livello di sicurezza complessivo.
GitLab Container Scanning è un elemento integrante di una strategia DevSecOps efficace, che favorisce un ambiente di miglioramento continuo della sicurezza. Questa preziosa risorsa garantisce che la sicurezza rimanga in prima linea nell'innovazione, dal rispetto delle normative o dalla protezione dei dati dei clienti al mantenimento di cicli di sviluppo agili e alla soddisfazione delle diverse esigenze di sicurezza in tutti i settori o casi d'uso.
"Domande frequenti sulla scansione dei container GitLab
La scansione dei container GitLab esegue un controllo delle vulnerabilità sulle immagini dei container durante il CI/CD. Utilizza scanner come Trivy per esaminare ogni livello, dai pacchetti del sistema operativo di base alle dipendenze delle applicazioni, prima che le immagini raggiungano la produzione. È possibile abilitarlo includendo il modello CI di scansione dei container di GitLab o tramite una richiesta di merge con un solo clic.
I risultati vengono visualizzati come artefatti JSON e nella scheda Sicurezza della pipeline, segnalando CVE rischiosi e versioni del sistema operativo scadute.
Rileva i CVE noti nell'immagine di base e nei pacchetti del sistema operativo, oltre a eventuali difetti delle librerie specifiche del linguaggio (ad esempio, pacchetti Java o Python), se abilitati. Segnala inoltre i sistemi operativi obsoleti che non ricevono più aggiornamenti di sicurezza. Lo scanner Trivy sottostante attinge da fonti di consulenza come NVD, tracker di sicurezza delle distribuzioni e il database di consulenza di GitLab per identificare e classificare le vulnerabilità in base al punteggio CVSS e alla sfruttabilità.
Aggiungi il modello integrato di GitLab al tuo .gitlab-ci.yml.
include:
- template: Jobs/Container-Scanning.gitlab-ci.yml
In alternativa, vai su Sicurezza > Configurazione della sicurezza nel tuo progetto, fai clic su Configura con una richiesta di merge e esegui il merge. In questo modo i job necessari verranno inseriti nella tua pipeline. Non è necessario alcun script aggiuntivo se hai già creato e inviato la tua immagine Docker al registro del progetto
Dopo l'esecuzione della pipeline, apri Build > Pipelines, seleziona l'esecuzione e seleziona la scheda Sicurezza. Qui potrai vedere la gravità di ogni risultato, il punteggio CVSS, la probabilità di exploit (EPSS) e le linee guida per la correzione. Il rapporto di scansione grezzo (gl-container-scanning-report.json), insieme a un SBOM CycloneDX (gl-sbom-report.cdx.json), sono disponibili in Job Artifacts.
Nel livello Ultimate, puoi anche vedere i risultati in linea nelle richieste di unione e un rapporto di vulnerabilità consolidato sul ramo predefinito.
Sì. Ogni voce relativa a una vulnerabilità include una descrizione che spiega il problema, il suo impatto e le misure correttive consigliate, come l'aggiornamento dei pacchetti o le modifiche alla configurazione. Nel livello Ultimate, GitLab può persino generare patch di correzione automatica, ovvero richieste di merge che aggiornano il tuo Dockerfile o il manifesto del pacchetto alle versioni corrette.
Crea un file vulnerability-allowlist.yml nella root del tuo repository. Elenca gli ID CVE (a livello globale o per immagine) che hai confermato come falsi positivi. GitLab esclude quindi tali CVE dai futuri rapporti di scansione e li contrassegna come "Approvati" nel registro delle attività. In questo modo la scheda Sicurezza rimane concentrata sui rischi reali senza nascondere i problemi effettivi.

