Panoramica della fase di compilazione
La creazione di immagini del contenitore è la terza fase del framework CSSC (Containers Secure Supply Chain). Mentre alcune aziende estraggono direttamente le immagini di base da origini esterne, altre possono eseguire il pull delle immagini di base dal catalogo interno senza verificare le immagini rispetto alle firme e alle attestazioni. È fondamentale assicurarsi che le immagini di base vengano sempre estratte dal catalogo interno e verificate prima dell'uso. Dopo aver compilato le immagini, alcune aziende le pubblicano senza vulnerabilità e analisi malware e non generano attestazioni come SBOM, che non possono essere verificate nelle fasi successive della supply chain. È essenziale assicurarsi che le immagini del contenitore prodotte siano attendibili e conformi ai criteri aziendali.
Il framework CSSC (Containers Secure Supply Chain) di Microsoft identifica la necessità di creare immagini del contenitore e fornisce un set di procedure consigliate e strumenti che consentono di creare immagini attendibili e conformi in modo sicuro. In questo articolo verranno illustrati gli obiettivi, le procedure consigliate e gli strumenti che è possibile usare nella fase di compilazione del framework CSSC.
Background
Attualmente, le aziende usano diversi approcci per creare immagini di contenitori conformi in modo sicuro. Prima di compilare immagini del contenitore, i team interni devono eseguire il pull delle immagini di base dai registri golden interni. Tuttavia, queste immagini non vengono verificate prima dell'uso, che non è consigliabile perché i registri d'oro possono essere compromessi e le immagini possono diventare dannose. Le aziende controllano anche l'origine delle librerie e dei pacchetti aggiunti nelle immagini del contenitore per garantire la qualità.
Dopo la compilazione di immagini del contenitore, le aziende generano metadati aggiuntivi per assicurarsi che le immagini del contenitore siano conformi. Alcune aziende sfruttano un documento di provenienza SLSA per sapere quale commit Git è responsabile della produzione dell'immagine del contenitore e se è riproducibile. Altri usano le etichette Docker per fornire la provenienza al proprietario dell'immagine del contenitore e responsabile del commit dell'immagine. Alcune aziende analizzano l'immagine per individuare vulnerabilità e malware e generare report di conseguenza.
La fase di compilazione del framework CSSC consiglia un set di passaggi e controlli di sicurezza che devono essere implementati per produrre immagini contenitore affidabili e conformi prima della pubblicazione.
Procedure consigliate
Microsoft consiglia le procedure seguenti per creare immagini del contenitore conformi in modo sicuro.
- Eseguire il pull delle immagini di base solo dal catalogo interno per ridurre la superficie di attacco e migliorare la sicurezza.
- Se disponibile, verificare le firme e le attestazioni delle immagini di base prima di usarle per assicurarsi che siano attendibili e conformi.
- Le immagini senza distribuzione contengono solo l'applicazione e le relative dipendenze di runtime, senza componenti aggiuntivi del software o del sistema operativo. Usare immagini senza distribuzione come immagini di base per ridurre la superficie di attacco e migliorare la sicurezza.
- Applicare l'accesso con privilegi minimi alla piattaforma o al servizio di compilazione per garantire che solo gli utenti autorizzati siano in grado di apportare modifiche o modifiche, riducendo così il rischio di accesso non autorizzato, violazioni dei dati e altri eventi imprevisti di sicurezza.
- Analizzare le immagini del contenitore per individuare vulnerabilità e post-compilazione di malware per ridurre il rischio di introdurre vulnerabilità di sicurezza.
- Arricchire le immagini del contenitore dopo la compilazione con metadati aggiuntivi, ad esempio SBOM e metadati di provenienza.
- Firmare immagini del contenitore e metadati pertinenti dopo la compilazione con chiavi aziendali per garantire l'integrità e fornire un timbro attendibile di approvazione per l'uso interno.
- Applicare patch alle immagini del contenitore in modo tempestivo per risolvere le vulnerabilità note.
- Mantenere le dipendenze ragionevolmente aggiornate per mantenere il passo con le vulnerabilità e le correzioni di sicurezza.
Flusso di lavoro per la compilazione di immagini del contenitore conformi
La fase di compilazione include un flusso di lavoro per creare un'immagine del contenitore conforme alle organizzazioni e ai criteri di sicurezza. È fondamentale applicare il controllo di accesso a livello di privilegio alla piattaforma o al servizio di compilazione solo per gli utenti autorizzati. Quando le immagini di base sono disponibili nel catalogo, il flusso di lavoro di compilazione esegue le operazioni seguenti:
- Eseguire il pull delle immagini di base solo dal catalogo interno.
- Verificare le immagini di base prima di usarle per assicurarsi che sia affidabile e conforme.
- Aggiungere altri framework, codice dell'applicazione e/o configurazioni dall'origine attendibilità sopra le immagini di base per la compilazione.
- Generare SBOM durante il processo di compilazione.
- Analizzare l'immagine del contenitore risultante per individuare vulnerabilità note e malware dopo la compilazione per impedire l'introduzione di difetti di sicurezza.
- Applicare patch all'immagine del contenitore risultante per risolvere le vulnerabilità note e il malware
- Allegare i report di vulnerabilità e malware come attestazioni di immagine da usare nelle fasi successive della supply chain.
- Collegare SBOM come attestazioni di immagine da utilizzare nelle fasi successive della supply chain.
- Arricchire l'immagine risultante con metadati aggiuntivi come i metadati di provenienza da usare nelle fasi successive della catena di fornitura.
- Firmare l'immagine risultante e i metadati pertinenti con le chiavi aziendali per garantire l'integrità e fornire un timbro attendibile di approvazione per la fase di distribuzione
Obiettivi di sicurezza nella fase di compilazione
Avere un flusso di lavoro ben definito per la creazione di immagini di contenitori affidabili e conformi consente alle aziende di aumentare la sicurezza e ridurre la superficie di attacco nella supply chain per i contenitori. La fase di compilazione del framework CSSC è progettata per soddisfare gli obiettivi di sicurezza seguenti.
Ridurre la superficie di attacco a causa di un controllo di accesso non corretto
Gli utenti interni possono apportare modifiche impreviste o configurazioni non corrette nell'infrastruttura di compilazione. La fase di compilazione nel framework CSSC risolve questo rischio applicando il controllo di accesso con privilegi minimi per impostazione predefinita, in modo che i proprietari delle risorse possano garantire che la persona giusta disponga delle autorizzazioni appropriate per apportare modifiche e configurazioni, riducendo così la superficie di attacco.
Ridurre la superficie di attacco da utenti interni malintenzionati
Il furto di identità può essere usato per accedere alla piattaforma di compilazione, modificare i file binari e inserire modifiche illecite invisibili allo sviluppatore e agli utenti originali. Esiste anche il rischio di inserire codice vulnerabile o errori di configurazione da parte degli utenti interni. La fase di compilazione nel framework CSSC risolve questo rischio applicando il controllo degli accessi in base al ruolo di Azure e imponendo la revisione del codice da vari proprietari del codice.
Ridurre la superficie di attacco a causa di dipendenze esterne
Le immagini di base provenienti da origini esterne possono essere dannose. I registri esterni possono essere compromessi. La fase di compilazione nel framework CSSC risolve questo rischio usando solo immagini di base del catalogo e verificandole rispetto alle firme, ai report di vulnerabilità e malware e ad altri metadati dell'immagine prima di usarli.
I pacchetti OSS (Malware Open Source Software) con backdoor nascosti possono causare la mancata corrispondenza dei file binari del pacchetto con il codice sorgente. La validità delle dipendenze o dei componenti open source può scadere, bloccando le correzioni di sicurezza più recenti da upstream. La fase di compilazione nel framework CSSC risolve questo rischio usando librerie approvate, l'analisi di vulnerabilità e malware a intervalli regolari e mantenendo aggiornate le librerie.
Ridurre la superficie di attacco a causa di build compromesse
Gli agenti di compilazione vulnerabili possono inserire file binari laterali o codice dannoso che possono causare attacchi come l'attacco SolarWinds. La fase di compilazione nel framework CSSC risolve questo rischio applicando regolarmente patch agli agenti di compilazione.
Garantire una qualità minima dell'immagine
Nella fase di compilazione del framework CSSC, le aziende possono configurare i passaggi necessari per la vulnerabilità e l'analisi malware delle immagini dopo la compilazione e la generazione di report. Le aziende possono anche arricchire le immagini dopo la compilazione con metadati aggiuntivi, tra cui SBOMs, metadati di prova e altri metadati interni che soddisfano i criteri. Possono anche firmare gli artefatti con chiavi aziendali per garantire l'integrità e fornire un timbro attendibile di approvazione per la fase di distribuzione.
Strumenti consigliati
Microsoft offre un set di strumenti e servizi che consentono alle aziende di implementare i passaggi consigliati nel flusso di lavoro della fase di compilazione e di soddisfare gli obiettivi di sicurezza elencati in precedenza.
Strumenti per rimanere aggiornati dopo la compilazione
Dependabot è uno strumento per automatizzare gli aggiornamenti delle dipendenze tramite richieste pull. Per informazioni dettagliate e passaggi successivi, vedere questa guida.
Copa è un progetto open source supportato da Microsoft, risolve le vulnerabilità del pacchetto del sistema operativo Linux nelle immagini del contenitore in base ai risultati dell'analisi delle vulnerabilità. Per informazioni dettagliate e passaggi successivi, vedere questa guida.
Strumenti e servizi per l'analisi continua delle vulnerabilità e l'applicazione di patch alle immagini
Microsoft Defender per il cloud è la soluzione nativa del cloud per migliorare, monitorare e gestire la sicurezza dei carichi di lavoro in contenitori. Microsoft Defender per il cloud offre strumenti di valutazione e gestione delle vulnerabilità per le immagini archiviate in Registro Azure Container.
Copa è un progetto open source supportato da Microsoft, risolve le vulnerabilità del pacchetto del sistema operativo Linux nelle immagini del contenitore in base ai risultati dell'analisi delle vulnerabilità. Per informazioni dettagliate e passaggi successivi, vedere questa guida.
Strumenti e servizi per arricchire le immagini esterne con metadati aziendali
ORAS è un progetto CNF supportato da Microsoft che offre un'interfaccia della riga di comando e librerie open source per interagire con i registri OCI. ORAS può essere usato per aggiungere annotazioni e allegare metadati a un'immagine del contenitore. ORAS può essere usato per aggiungere SBOM, metadati di provenienza e altri metadati per arricchire le immagini per le fasi successive della catena di approvvigionamento.
Lo strumento SBOM di Microsoft è uno strumento open source, altamente scalabile e pronto per l'azienda per creare SBOM compatibili con SPDX 2.2 per qualsiasi varietà di artefatti. Lo strumento SBOM può essere usato per generare SBOM dettagliati per le immagini del contenitore.
Notary Project è un progetto CNF supportato da Microsoft che sviluppa specifiche e strumenti per la firma e la verifica degli artefatti software. Lo strumento Notary Project può essere usato per firmare immagini del contenitore e altri artefatti nativi del notation
cloud con chiavi aziendali.
Azure Key Vault è un servizio basato sul cloud che fornisce una posizione sicura e centralizzata per l'archiviazione e la gestione di chiavi crittografiche, segreti e certificati. AKV può essere usato per archiviare e gestire le chiavi aziendali in modo sicuro e affidabile.
Passaggi successivi
Vedere la panoramica della fase Di distribuzione per distribuire in modo sicuro le immagini del contenitore.