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
.NET Conference Italia 2024
Recuperare l'ultima versione di una release di GitHub
Gestire codice JavaScript con code splitting e lazy loading
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Recuperare le subissue e il loro stato di completamento in GitHub
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Abilitare automaticamente il force push di un gruppo su Azure DevOps
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
Rendere i propri workflow e le GitHub Action utilizzate più sicure