Che cos'è la sicurezza del registro dei container?
La sicurezza del registro dei container si concentra sulla protezione dei registri dei container, i sistemi centralizzati di archiviazione e distribuzione delle immagini container. I registri dei container svolgono un ruolo centrale nell'ecosistema dei container, garantendo l'integrità e la sicurezza delle applicazioni containerizzate. Una corretta sicurezza del registro dei container implica l'utilizzo di registri affidabili, l'implementazione di un rigoroso controllo degli accessi, il monitoraggio delle vulnerabilità e la protezione del server di hosting. Inoltre, richiede il rifiuto di connessioni insicure e la rimozione di immagini stantie. Dando priorità alla sicurezza del registro dei container, le organizzazioni possono salvaguardare i loro ambienti containerizzati e mantenere la fiducia di utenti e clienti.
Sicurezza del registro dei container spiegata
La sicurezza del registro dei container si concentra su un componente critico dell'ecosistema dei container: il registro dei container. Nella narrativa più ampia della sicurezza container, il registro agisce come custode delle immagini container, i mattoni delle applicazioni containerizzate. Come tale, il registro dei container è più di un'unità di stoccaggio. Si tratta piuttosto di un punto di snodo in cui l'integrità delle immagini delle applicazioni viene mantenuta e distribuita.
Capire i registri dei contenitori
In un ambiente containerizzato , come lei sa, le applicazioni con le loro dipendenze vengono pacchettizzate in contenitori, rendendole portatili e facili da distribuire tra le varie piattaforme. I registri dei container servono a questo processo, fornendo una posizione in cui le immagini container possono essere versionate, recuperate e distribuite in modo coerente.
Il registro dei container, quindi, è un sistema centralizzato di archiviazione e distribuzione delle immagini container. Il registro consente agli sviluppatori e ai team operativi di archiviare, gestire e condividere immagini container, che utilizzeranno per creare e distribuire applicazioni e microservizi containerizzati.
Registri pubblici e privati
Le organizzazioni possono utilizzare una combinazione di registri di container pubblici e privati per gestire le loro immagini container e altri artefatti.
I registri pubblici, come Docker Hub e GitHub Container Registry, una sotto funzione di GitHub Packages, offrono una vasta collezione di immagini open-source che le organizzazioni possono utilizzare come base per le loro applicazioni. Questi registri sono generalmente accessibili a chiunque, facilitando agli sviluppatori la ricerca e l'utilizzo di immagini precostituite.
Ma le organizzazioni hanno spesso requisiti specifici e software proprietari che richiedono l'uso di registri privati.
Figura 1: Registro dei container / repository pubblico vs. privato
I registri privati di container, come Azure Container Registry, Amazon Elastic Container Registry e Google Container Registry, forniscono ambienti sicuri e controllati per l'archiviazione e la gestione di immagini container e artefatti correlati. Questi registri sono accessibili solo agli utenti autorizzati all'interno dell'organizzazione, per garantire la sicurezza delle informazioni sensibili e delle immagini personalizzate.
Utilizzando una combinazione di registri pubblici e privati, le organizzazioni possono sfruttare i vantaggi delle immagini open-source mantenendo il controllo sul loro software proprietario. Questo duplice approccio consente alle organizzazioni di ottimizzare i flussi di lavoro di gestione dei container e di snellire il processo di distribuzione.
I componenti della sicurezza del registro dei container.
Dato che il registro è centrale per il funzionamento di un ambiente containerizzato - e che le organizzazioni possono facilmente avere decine di migliaia di immagini memorizzate - la sicurezza del registro è parte integrante dell' integrità del ciclo di vita dello sviluppo software.
Le vulnerabilità possono compromettere più dell'applicazione. Un aggressore che sfrutta una configurazione errata potrebbe ottenere un accesso non autorizzato al sistema CI/CD e spostarsi lateralmente per accedere al sistema operativo sottostante. Potrebbero potenzialmente manipolare flussi CI/CD legittimi, ottenere token sensibili e passare all'ambiente di produzione, dove l'identificazione di una credenziale esposta potrebbe consentire loro di entrare nella rete dell'organizzazione.
Articolo correlato: Anatomia di un attacco alla pipeline di approvvigionamento del cloud
La sicurezza del registro inizia con l'utilizzo di registri e librerie affidabili. Il monitoraggio continuo delle modifiche alle vulnerabilità è fondamentale, insieme alla protezione del server di hosting e all'implementazione di politiche di accesso sostanziali. Un'adeguata sicurezza del registro dovrebbe negare le connessioni non sicure, segnalare o rimuovere le immagini stantie e applicare rigorose restrizioni di autenticazione e autorizzazione.
Vediamo queste misure in modo più dettagliato.
Promuovere l'integrità dell'immagine e dell'artefatto in CI/CD
La comprensione dei rischi associati alle immagini e agli artefatti rende più importante l'implementazione di controlli rigorosi per garantirne l'integrità. Consideri l'implementazione delle seguenti strategie.
Rifiuta le connessioni insicure
Sebbene i registri pubblici possano consentire l'accesso anonimo alle immagini container, per evitare attacchi man-in-the-middle, manomissioni non autorizzate e accesso non autorizzato a informazioni sensibili, è necessario mantenere connessioni sicure.
Per rifiutare le connessioni non sicure, configuri i suoi sistemi in modo che accettino solo protocolli sicuri come HTTPS o connessioni crittografate TLS. Iniziare ottenendo e installando un certificato SSL/TLS valido da un'autorità di certificazione (CA) affidabile per il suo dominio. Quindi, aggiorni la configurazione del suo server o servizio per imporre l'uso di HTTPS o TLS, disabilitando i protocolli insicuri come HTTP. A seconda della sua configurazione, questo può comportare la regolazione delle impostazioni del suo server web (ad esempio, Nginx, Apache), del bilanciatore di carico o dell'applicazione. Inoltre, consideri l'utilizzo di funzioni di sicurezza come HSTS (HTTP Strict Transport Security) per indicare ai browser di utilizzare sempre connessioni sicure quando accede al suo sito o servizio.
Rimuovere le immagini stantie
Stabilisca una politica per definire le immagini stantie - immagini più vecchie di un determinato periodo di tempo o inutilizzate per un certo periodo - e utilizzi strumenti di registro o API per elencare e filtrare le immagini in base alla politica. Per esempio, in Docker Registry, utilizzi l'API Docker Registry per recuperare i metadati delle immagini e filtrare in base alla data dell'ultima spinta o al tag. In altri registri, potrebbero essere disponibili API o strumenti CLI simili. Una volta identificate le immagini stantie, utilizzi i comandi o le API appropriate per eliminarle, assicurandosi di seguire le migliori pratiche del registro per la garbage collection.
Evitare i problemi IAM nei registri di terze parti
La gestione dell'identità e dell'accesso (IAM) è fondamentale per le organizzazioni, in particolare nei sistemi di gestione del controllo sorgente (SCM) come GitHub, dove i repository conservano codice e beni preziosi. Un IAM inadeguato può portare a rischi di sicurezza nella pipeline CI/CD. Per ottimizzare la sicurezza e la governance dei repository, le organizzazioni possono utilizzare il single sign-on (SSO) e il sistema di gestione delle identità cross-domain (SCIM) per gestire i controlli di accesso. L'SSO, tuttavia, è disponibile solo per GitHub Enterprise, lasciando le altre licenze esposte ai rischi.
Per mitigare i problemi legati agli indirizzi e-mail privati negli account GitHub, agli account GitHub fantasma e all'offboarding incompleto, applichi l'autenticazione a due fattori (2FA), stabilisca un protocollo di onboarding con account aziendali dedicati e mantenga un inventario degli account utente. Per le organizzazioni abilitate all'SSO, l'implementazione di SCIM assicura la deprovisioning automatica degli utenti ed elimina l'accesso tramite credenziali stantie. Affrontare i rischi IAM aiuta a proteggere i repository, l'ecosistema CI/CD e a mantenere un livello di sicurezza elevato in tutti i sistemi.
Articolo correlato: I 3 principali rischi IAM nella sua organizzazione GitHub
Impiega restrizioni di autenticazione e autorizzazione sufficienti.
Le identità a cui vengono concessi più permessi di quelli necessari per il repository aprono opportunità di escalation dei privilegi e possono portare a modifiche non autorizzate del codice, a manomissioni del processo di compilazione e all'accesso a dati sensibili. L'automazione può aiutare a convalidare i controlli degli accessi, a verificare le autorizzazioni degli utenti e a identificare le potenziali vulnerabilità, consentendo alle organizzazioni di mettere in atto misure proattive di routine, come ad esempio:
- Analizzare e mappare tutte le identità nell'ecosistema di ingegneria. Per ogni identità, mappa continuamente il fornitore di identità, le autorizzazioni concesse e le autorizzazioni utilizzate. Assicurarsi che l'analisi copra tutti i metodi di accesso programmatici.
- Rimuovere le autorizzazioni non necessarie per ciascuna identità nei vari sistemi dell'ambiente.
- Stabilire un periodo accettabile per la disabilitazione o la rimozione degli account obsoleti. Disattiva e rimuove le identità che superano questo periodo di inattività.
- Mappare tutti i collaboratori esterni e allineare le loro identità al principio del minimo privilegio. Quando è possibile, conceda permessi con una data di scadenza per gli account umani e programmatici.
- Vietare ai dipendenti di accedere a SCM, CI o altre piattaforme CI/CD utilizzando i loro indirizzi e-mail personali o indirizzi di domini non di proprietà dell'organizzazione. Monitora gli indirizzi non di dominio su diversi sistemi e rimuove gli utenti non conformi.
- Disabilita l'autoregistrazione degli utenti ai sistemi e concede i permessi in base alla necessità.
- Evitare di concedere permessi di base in un sistema a tutti gli utenti e a grandi gruppi con account utente assegnati automaticamente.
- Creare account dedicati per ogni contesto specifico, rispetto all'utilizzo di account condivisi, e concedere l'esatto set di permessi richiesti per il contesto in questione.
Implementazione dell'archiviazione sicura
Stabilire un archivio sicuro a prova di manomissione per archiviare gli artefatti. Abilita il versioning per mantenere un registro storico delle modifiche agli artefatti e implementa il monitoraggio in tempo reale per tracciare e avvisare sulle attività sospette. In caso di artefatti compromessi, configuri il sistema per facilitare il rollback a versioni precedenti, note e buone.
Condurre controlli di convalida dell'integrità dallo sviluppo alla produzione
Implementazione di processi e tecnologie che convalidano l'integrità delle risorse lungo tutta la catena di consegna del software. Quando gli sviluppatori generano una risorsa, dovrebbero firmarla utilizzando un'infrastruttura di firma delle risorse esterna. Prima di consumare una risorsa nelle fasi successive della pipeline, effettua un controllo incrociato della sua integrità con l'autorità di firma.
Firma del codice
Le soluzioni SCM offrono la possibilità di firmare i commit con una chiave unica per ogni collaboratore, impedendo ai commit non firmati di avanzare nella pipeline.
Software di verifica degli artefatti
Gli strumenti progettati per firmare e verificare il codice e gli artefatti, come Sigstore della Linux Foundation, possono impedire al software non verificato di avanzare lungo la pipeline.
Rilevamento della deriva della configurazione
Implementazione di misure per rilevare le derive della configurazione, come le risorse negli ambienti cloud non gestite utilizzando un modello infrastructure-as-code firmato. Tali derive potrebbero indicare distribuzioni da fonti o processi non attendibili.
Impieghi la firma crittografica
Utilizza l'infrastruttura a chiave pubblica (PKI) per firmare crittograficamente gli artefatti in ogni fase della pipeline CI/CD. Questa pratica convalida le firme con un'autorità di certificazione affidabile prima del consumo. Configuri la sua pipeline CI/CD per rifiutare gli artefatti con firme non valide o mancanti, per ridurre il rischio di distribuire risorse manomesse o modifiche non autorizzate.
Utilizzi solo immagini container protette.
Le immagini container possono contenere vulnerabilità che gli aggressori possono sfruttare per ottenere un accesso non autorizzato al container e al suo host. Per evitarlo, utilizzi immagini container sicure e affidabili, provenienti da fonti affidabili, e le scansioni regolarmente. Quando si distribuisce un container da un registro pubblico, è particolarmente importante eseguire prima una scansione del container per individuare malware e vulnerabilità.
Applicare la convalida multi-fonte
Adotta una strategia di validazione multi-fonte che verifica l'integrità degli artefatti utilizzando varie fonti, come checksum, firme digitali e algoritmi di hash sicuri, oltre a repository affidabili. Mantenere aggiornati gli algoritmi e le chiavi crittografiche per mantenere la loro efficacia.
Convalida delle risorse di terze parti
Le risorse di terze parti incorporate nelle pipeline di creazione e distribuzione, come gli script eseguiti durante il processo di creazione, devono essere sottoposte a una rigorosa convalida. Prima di utilizzare queste risorse, calcola il loro hash e lo confronta con l'hash ufficiale fornito dal fornitore della risorsa.
Integrare la scansione di sicurezza
La pipeline CI/CD deve utilizzare solo codice controllato (approvato dalla produzione) quando crea le immagini. Incorporare gli strumenti di scansione delle vulnerabilità - così come l'analisi della composizione del software (SCA) e il test di sicurezza delle applicazioni statiche (SAST) - nella pipeline CI/CD per garantire l'integrità dell'immagine prima di spingere le immagini nel registro da cui le distribuirà la produzione. Si assicuri, inoltre, di seguire le migliori pratiche. Non costruisca immagini, ad esempio, prima di aver rimosso tutti i componenti software non necessari, le librerie, i file di configurazione, i segreti, ecc.
L'adozione di un approccio conservativo e prudente consentirà ai team di affrontare le vulnerabilità nelle prime fasi del processo di sviluppo e di mantenere un elevato livello di qualità del codice, riducendo al contempo il rischio di incidenti di sicurezza. Scelga una soluzione di scansione di immagini container che possa integrarsi con tutti i tipi di registro. Piattaforme come Prisma Cloud offrono agli amministratori una soluzione flessibile e unica per la scansione delle immagini.
Sandbox di analisi delle immagini
L'utilizzo di un sandbox di analisi delle immagini migliorerà la sua strategia di sicurezza container durante lo sviluppo e la distribuzione di applicazioni containerizzate, consentendole di estrarre ed eseguire in sicurezza immagini container che potrebbero contenere pacchetti obsoleti e vulnerabili e malware incorporato da repository esterni.
Le funzionalità della sandbox le consentiranno di eseguire la scansione di comportamenti anomali sospetti dei container, come cryptomining, scansione delle porte, binari modificati e modifiche del modulo kernel in un ambiente controllato. Può esporre i rischi e identificare dipendenze sospette sepolte nella catena di fornitura del software, che altrimenti l'analisi statica non avrebbe notato.
- Cattura il profilo dettagliato di runtime del contenitore.
- Valutare il rischio di un'immagine
- Incorporare l'analisi dinamica nel suo flusso di lavoro
Stabilire le politiche di convalida e il programma di audit.
Per garantire un'adeguata convalida dell'integrità delle immagini e degli artefatti, le organizzazioni devono stabilire politiche chiare che definiscano i processi di convalida. Una volta stabilita, si verifichi regolarmente la conformità con le politiche interne per identificare e affrontare i punti deboli, nonché le aree di non conformità. Il monitoraggio e l'analisi continui aiuteranno a rilevare anomalie e attività non autorizzate.
Panoramica della lista di controllo della sicurezza del Registro dei container
- Utilizza registri e librerie di fiducia
- Proteggere il server di hosting e implementare solide politiche di accesso.
- Implementazione di restrizioni di autenticazione e autorizzazione sufficienti.
- Stabilire una conservazione sicura per gli artefatti
- Eseguire controlli di convalida dell'integrità durante il CI/CD
- Impieghi la firma crittografica
- Applicare la convalida multi-fonte
- Convalidare le risorse di terze parti
- Integrare la scansione della sicurezza nella pipeline CI/CD.
- Stabilire le politiche di convalida e i programmi di audit regolari.
Domande frequenti sul Registro dei contenitori
Una Pipeline CI/CD automatizza i passaggi necessari per portare il software dal controllo di versione alle mani degli utenti finali. Comprende l'integrazione continua (CI) e la distribuzione continua (CD), automatizzando il processo di consegna del software e le modifiche all'infrastruttura. La pipeline comprende in genere fasi come la compilazione del codice, il test delle unità, il test di integrazione e la distribuzione. Questa automazione assicura che il software sia sempre in uno stato distribuibile, facilitando cicli di rilascio del software rapidi e affidabili. Le pipeline CI/CD sono essenziali per le pratiche DevOps, consentendo ai team di fornire modifiche al codice con maggiore frequenza e affidabilità.
- L'SCM aiuta a mantenere la coerenza e la tracciabilità del codice utilizzato per creare immagini container, consentendo agli sviluppatori di identificare facilmente la versione specifica del codice utilizzata per creare un'immagine container.
- L'SCM consente agli sviluppatori di collaborare sul codice, garantendo che le immagini container costruite e archiviate nel registro soddisfino i requisiti di qualità dell'organizzazione.
- Gli strumenti SCM migliorano il flusso di lavoro integrandosi con le Pipeline CI/CD e automatizzando il processo di costruzione, test e invio delle immagini container al registro.
Un webhook è un metodo per aumentare o modificare il comportamento di una pagina web o di un'applicazione web con callback personalizzati. Questi callback possono essere mantenuti, modificati e gestiti da utenti e sviluppatori di terze parti che non hanno necessariamente accesso al codice sorgente della pagina web o dell'applicazione. Negli ambienti cloud computing e DevOps, i webhook vengono utilizzati per attivare flussi di lavoro automatizzati, come le Pipeline CI/CD, quando si verificano eventi specifici in un repository o in un ambiente di distribuzione. I webhook consentono notifiche in tempo reale e reazioni automatiche agli eventi, migliorando l'automazione e l'integrazione tra servizi e strumenti cloud.
Notary è uno strumento open-source che fornisce un quadro per la pubblicazione e la verifica delle firme dei contenuti, come le immagini container. Implementa le specifiche di The Update Framework (TUF) per la consegna sicura dei contenuti e degli aggiornamenti. Il notaio assicura che il contenuto che l'utente riceve sia esattamente quello che l'editore intendeva, salvaguardando le modifiche non autorizzate.
Notary viene comunemente utilizzato insieme a Docker Content Trust per firmare e verificare le immagini Docker.