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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Cambiare la chiave di partizionamento di Azure Cosmos DB
Creare una libreria CSS universale: Cards
Eliminare una project wiki di Azure DevOps
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Cancellare una run di un workflow di GitHub
Escludere alcuni file da GitHub Secret Scanning
Utilizzare i variable font nel CSS
Simulare Azure Cosmos DB in locale con Docker
Creare un webhook in Azure DevOps