Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub

di Matteo Tumiati, in DevOps,

L'arrivo dei marketplace sui nostri dispositivi, come per esempio l'App Store per iOS e il Microsoft Store per Windows, ci ha assicurato una questione importante: la provenienza e l'integrità del software che andiamo a scaricare e installare. Infatti, prima dell'introduzione dello store, qualsiasi software per Windows eravamo costretti a cercarlo liberamente sul web, con il rischio di scaricare "exe" contenenti malware o altro, che potevano compromettere l'integrità della macchina.

Lo stesso meccanismo deve essere valido per tutti i tipi di artefatti che scarichiamo da GitHub, perchè vogliamo avere la certezza di come siano stati compilati i binari, da quale repository, organizzazione, commit, ambiente etc... Per questo su GitHub è nato il concetto di artifact attestation, che è anche compliant con il framework SLSA v1.0 Level 2.

Per generare un attestato di provenienza è sufficiente garantire gli adeguati permessi:

permissions:
  id-token: write
  contents: read
  attestations: write

E quindi possiamo andare a firmare l'artefatto:

- name: Generate artifact attestation
  uses: actions/attest-build-provenance@v1
  with:
    subject-path: 'PATH/TO/ARTIFACT'

Se questo è un container (anche oggetti OCI sono supportati), dobbiamo solo cambiare qualche property:

- name: Generate artifact attestation
  uses: actions/attest-build-provenance@v1
  with:
    subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
    subject-digest: 'sha256:fedcba0...'

Si può verificare poi l'attestato generato con il seguente comando della CLI di GitHub:

gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME

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