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
Managed deployment strategy in Azure DevOps
Creare una custom property in GitHub
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Il nuovo controllo Range di Blazor 9
Eseguire script pre e post esecuzione di un workflow di GitHub
Generare la software bill of material (SBOM) in GitHub
Gestire gli accessi con Token su Azure Container Registry
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
Applicare un filtro per recuperare alcune issue di GitHub
Loggare le query più lente con Entity Framework
Potenziare la ricerca su Cosmos DB con Full Text Search