Bentornati alla seconda parte della nostra serie di blog, in cui approfondiamo le potenti capacità di Valint. In questo articolo ci concentreremo sul motore delle policy di Valint e sul suo ruolo fondamentale nel garantire la conformità lungo tutta la catena di fornitura.
Nel nostro precedente post sul blog, abbiamo fornito una panoramica di I principi di progettazione di Valint.
Come funziona il motore delle politiche
Il motore delle politiche di Valint opera su una serie di regole organizzate in politiche verificate rispetto alle prove raccolte dalla catena di fornitura. Analizziamo i suoi componenti principali:
Prova: oggetti immutabili destinati a essere utilizzati automaticamente dalle policy. Questi oggetti contengono metadati necessari per consentire l'applicazione delle policy e soddisfare i requisiti di conformità. Il contenuto delle prove include metadati su artefatti, eventi e impostazioni, ma può anche raccogliere report, configurazioni o scansioni effettivi. Le prove possono presentarsi sia in forma firmata che non firmata. Suggeriamo di seguire l'Intoto specifica di attestazione utilizzando il firmato attestazione e formati non firmati, rispettivamente.
- Attestazioni (prove firmate verificabili AKA): Evidenze verificabili legate a uno specifico contesto ambientale, trasmettendo fiducia utilizzando una qualche forma di firma PKI.
Politiche: Questi definiscono i requisiti che la catena di fornitura deve soddisfare, coprendo vari aspetti come la convalida, i dettagli di conformità e il verdetto finale sulle prove. Ad esempio, l'organizzazione potrebbe avere una "politica sull'immagine del contenitore"
Regole politiche: Le policy sono costituite da regole, ciascuna delle quali rappresenta uno specifico controllo di conformità. Gli esempi includono la verifica di firme e identità, la verifica dei componenti SBOM, la verifica dell'assenza di vulnerabilità critiche. Seguendo l'esempio precedente, la "Policy sull'immagine del contenitore" potrebbe consistere nelle seguenti regole:
- Applica la firma delle immagini.
- Avvertire l'immagine non conforme con etichette specifiche.
Gruppi: Raccolte di politiche e regole a cui è possibile fare comodamente riferimento nel loro insieme. I bundle forniscono un modo modulare e organizzato per gestire e applicare set di policy come codice. Il pacchetto di policy predefinito di Scribe è pubblicato in https://github.com/scribe-public/sample-policies, sentiti libero di fare riferimento ad esso.
Utilizzo delle policy con Valint
Valint consente agli utenti di utilizzare le policy come codice da repository pubblici o privati, offrendo flessibilità e opzioni di personalizzazione. Per iniziare, installa semplicemente Valint e definisci le tue policy in base alle tue esigenze di conformità.
Installazione: Inizia installando Valint utilizzando lo script fornito. Esegui il seguente comando nel tuo terminale:
curl -sSfL https://get.scribesecurity.com/install.sh | sh -s — -t valint
Definizione della politica: Successivamente, definisci le tue policy in base ai requisiti di conformità della tua organizzazione. Crea un file YAML, ad esempio my_policy.yaml
e strutturarlo per incapsulare le regole desiderate. Ecco un esempio di come potrebbe apparire il file dei criteri:
nome: my_image_policy valori predefiniti: prova: firmato: true regole: - utilizza: images/fresh-image@v1 con: max_days: 100 - utilizza: images/verify-labels-exist@v1 livello: avviso con: etichette: # immagine richiesta per essere etichettato (comando Dockerfile LABEL) - manutentore # Richiede un'etichetta del manutentore. - org.opencontainers.image.source # Richiede che le immagini siano etichettate con le fonti
In questo esempio, abbiamo definito una policy denominata my_image_policy
, che impone che le prove debbano essere firmate e che le immagini debbano essere create entro gli ultimi 100 giorni. Inoltre, emette un avviso se le immagini non dispongono di etichette specifiche.
Sentiti libero di controllare altre regole supportiamo fuori dagli schemi.
Creazione di prove: Prima di valutare le vostre politiche, è necessario generare le prove necessarie. Usa Valint per creare prove per la tua immagine di destinazione:
valint bom nginx:latest -o attest
Questo comando genera prove per il file nginx:latest
immagine, assicurandosi che includa metadati come l'identità dell'immagine e l'ora di creazione. Per impostazione predefinita, Valint utilizza il file sigstore servizio come firmatario per la generazione di prove, che lega un'identità OIDC a un certificato. Tuttavia, Valint supporta anche l'utilizzo del proprio x509 Chiavi PKI e catene CA per la firma.
Seleziona semplicemente l'identificatore OIDC di tua scelta con cui firmare.
Infine, puoi rivedere il successo del processo di generazione delle prove insieme alla sua identità per garantirne l'integrità e l'affidabilità.
[2024-03-26 12:41:55] INFO attestano: [TRUSTED] segno successo, CA: fulcio-signer, CN: sigstore-intermediate, e-mail: [your_identity@gmail.com], URI: [] ... [2024-03-26 12:41:55] INFO attesta: prova generata con successo
Valutazione della politica: una volta definita la politica e generate le prove, è il momento di valutarla rispetto ai componenti della catena di fornitura. Utilizza il valint verify
comando seguito dall'immagine di destinazione e dal file delle policy:
valint verify nginx:latest --policy my_policy.yaml
Riepilogo della valutazione:
Una volta completata la valutazione, esaminare la tabella di riepilogo fornita dai registri Valint.
In questo caso particolare, l'analisi Valint illustra che il nginx:latest
l'immagine soddisfa con successo il requisito di freschezza ma non rispetta i criteri di etichettatura, come anticipato. La tabella fornita delinea in modo conciso lo stato di valutazione di ciascuna regola, annotando se la prova è stata firmata correttamente.
Risultati in formato SARIF:
Inoltre, è possibile esplorare i risultati in formato SARIF prodotti da Valint come ulteriore prova per dettagliare la valutazione, le violazioni, i livelli e i riferimenti delle prove.
Piattaforme di gestione supportate:
Questo formato standardizzato gode del supporto di vari sistemi di gestione della sicurezza come GitHub, Azure e Scribe SAAS. Le piattaforme Scribe non solo gestiscono i risultati delle policy, ma facilitano anche la gestione delle prove e offrono funzionalità estese per la gestione delle vulnerabilità, il monitoraggio delle metriche e altro ancora.
Anteprima delle informazioni:
Per fornire un'idea delle informazioni disponibili nei risultati delle politiche:
{ "version": "2.1.0", "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", "runs": [ { "tool": { "driver": { "informationUri": "https://scribesecurity.com", "name": "valint", "rules": [ { "id": "fresh -image", "name": "Fresh Image", "shortDescription": { "text": "Una regola per verificare che l'immagine non sia più vecchia di una soglia" }, }, { "id": "labels", "name": "Labels", "shortDescription": { "text": "Una regola per verificare che l'immagine abbia tutte le etichette richieste" }, }, "results": [ { "ruleId": "fresh-image" , "ruleIndex": 0, "kind": "pass", }, { "ruleId": "labels", "ruleIndex": 1, "kind": "fail", "level": "warning", "policy .violation": { "type": "Etichette mancanti", "details": [ { "label": "not_found" }, { "label": "org.opencontainers.image.source" } }, ... ] }
Pacchetti di politiche
Un bundle in Valint è una policy come pacchetto di codice, essenzialmente a Repository Git ospitare una serie di politiche e regole. Gli utenti possono impostare il proprio bundle effettuando il fork del repository di esempio fornito da Valint e personalizzandolo in base alle proprie esigenze.
Forchetta e personalizza: Inizia biforcando Valint's deposito di campioni. Personalizza policy e regole per allinearle alle esigenze della tua organizzazione.
Fornitura a Valint: Fornisci il tuo pacchetto personalizzato a Valint:
valint verificare --bundle https://github.com/my_org/my_bundle.git \ --policy my_policy.yaml
Regole personalizzate
Quando si personalizzano le regole, la responsabilità fondamentale è analizzare il carico utile delle prove e segnalare le violazioni in base ai criteri di conformità definiti. Sia che tu stia modificando le regole esistenti o creandone di nuove.
Definizione dei criteri di conformità: Definire i criteri di conformità in base a policy organizzative, standard di sicurezza o normative.
Definizione dei criteri di prova: Definire le prove previste per dimostrare la conformità.
Valutazione della conformità e segnalazione delle violazioni: Utilizzare il carico utile delle prove per valutare la conformità rispetto ai criteri definiti. Segnalare violazioni se il componente non soddisfa i requisiti.
Valint garantisce che i requisiti di firma e origine delle prove siano prontamente disponibili per qualsiasi regola personalizzata.
Mentre Valint attualmente impiega OPA Reg per la formulazione delle regole, ci attende un orizzonte entusiasmante poiché è prevista l’integrazione delle regole Python nel prossimo futuro.
Qual è il prossimo passo?
L'integrazione con Gatekeeper è ora accessibile! Fare riferimento al ns documentazione per dettagli. Restate sintonizzati per il prossimo post sul blog in cui approfondiremo questo entusiasmante sviluppo.
Tieni d'occhio i futuri post del blog in cui esploreremo le iniziative politiche, comprese le politiche di alto livello che implementeranno framework di sicurezza come SLSA e SSDF.
Novità interessanti per gli appassionati di Python! Il nostro ultimo aggiornamento include un ampio supporto Python, fornendo un significativo incremento di compatibilità. Ciò consente agli autori di policy di personalizzare le regole utilizzando Python e sfruttare la sua vasta gamma di librerie.
Conclusione
In sintesi, il motore delle policy di Valint offre una soluzione solida per garantire la conformità all'interno della catena di fornitura. Sfruttando i suoi componenti quali prove, policy e pacchetti, le organizzazioni possono semplificare gli sforzi di conformità e mitigare i rischi in modo efficace.
Questo contenuto è offerto da Scribe Security, un fornitore leader di soluzioni di sicurezza end-to-end per la catena di fornitura di software, che offre sicurezza all'avanguardia per artefatti di codice e processi di sviluppo e distribuzione del codice attraverso le catene di fornitura di software. Per saperne di più.