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
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Recuperare l'ultima versione di una release di GitHub
Escludere alcuni file da GitHub Secret Scanning
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Utilizzare WhenEach per processare i risultati di una lista di task
Conoscere il rendering Server o WebAssembly a runtime in Blazor