Generare la software bill of material (SBOM) in GitHub

di Matteo Tumiati, in DevOps,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi