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
Cambiare la chiave di partizionamento di Azure Cosmos DB
Disabilitare automaticamente un workflow di GitHub (parte 2)
Eseguire i worklow di GitHub su runner potenziati
Eliminare una project wiki di Azure DevOps
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Gestire il colore CSS con HWB
La gestione della riconnessione al server di Blazor in .NET 9
Aggiornare a .NET 9 su Azure App Service
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Creare un webhook in Azure DevOps
Ordinare randomicamente una lista in C#
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow