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
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
.NET Conference Italia 2024
Rendere le variabili read-only in una pipeline di Azure DevOps
Ottenere un token di accesso per una GitHub App
Escludere alcuni file da GitHub Secret Scanning
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Generare una User Delegation SAS in .NET per Azure Blob Storage
Il nuovo controllo Range di Blazor 9
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Recuperare l'ultima versione di una release di GitHub
Utilizzare Locust con Azure Load Testing
Introduzione alle Container Queries