Il "Software Bill of Material" (o SBOM) è un documento che elenca tutte le dipendenze che il nostro progetto richiede (es. pacchetti di NuGet, npm), dirette o transitive (es. dipendenze di dipendenze), e tutte le relative informazioni associate (es. il numero di versione, la tipologia di licenza, etc.). Queste informazioni ci servono per ridurre il rischio della supply chain, per una questione di trasparenza e diritti, per riuscire ad identificare le vulnerabilità e per questioni di compliance e data protection.
In GitHub l'SBOM viene generato automaticamente per alcune tipologie di progetto, ma in alternativa è possibile appoggiarsi a tool di terze parti per fare la scansione:
- uses: anchore/sbom-action@v0 with: path: ${{ github.workspace }}
In questo caso è stato usato anchore, ma anche il tool di Microsoft, o altri, vanno benissimo poiché il risultato ottenuto è un file standard con estensione SDPX.
Se abbiamo utilizzato un tool, il file lo abbiamo già ottenuto e per scaricarlo dobbiamo prima caricarlo negli artifact del workflow. In alternativa, se vogliamo sfruttare quelli auto-generati da GitHub, li possiamo scaricare sfruttando la CLI:
- name: Download shell: bash run: | gh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" /repos/OWNER/REPO/dependency-graph/sbom
Avendo cura di sostituire le variabili dell'owner dell'organizzazione e del repository. Ottenuto quindi il file, possiamo eventualmente "firmarlo" per garantirne l'integrità (come visto nello script precedente https://www.dopsitalia.com/script/121/Garantire-Provenienza-Integrita-Artefatti-Prodotti-GitHub.aspx), sfruttando il parametro dedicato:
- name: Generate SBOM attestation uses: actions/attest-sbom@v1 with: subject-path: 'PATH/TO/ARTIFACT' sbom-path: 'PATH/TO/SBOM'
Lo stesso procedimento può essere fatto generando l'SBOM di un Docker container anziché dell'intero codice sorgente.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Disabilitare automaticamente un workflow di GitHub (parte 2)
C# 12: Cosa c'è di nuovo e interessante
Recuperare l'ultima versione di una release di GitHub
Introduzione alle Container Queries
Eseguire script pre e post esecuzione di un workflow di GitHub
Eseguire le GitHub Actions offline
Applicare un filtro per recuperare alcune issue di GitHub
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Usare lo spread operator con i collection initializer in C#
Eseguire query manipolando liste di tipi semplici con Entity Framework Core