Verificare una release
Dalla 0.9.0, tutto ciò che una release pubblica è firmato o attestato dal
workflow di release del repository (.github/workflows/release.yml), con la
firma keyless di Sigstore. Non c’è alcuna
chiave di firma di lunga durata da ottenere, proteggere o ruotare: l’identità
di firma è il workflow GitHub Actions stesso, registrata in un certificato di
breve durata e nel registro di trasparenza pubblico di Sigstore. Verificare
significa controllare che l’artefatto sia stato compilato da quel workflow, a
partire da un tag v* di selfhostr/dumbmonit.
Binari dell’agente
Sezione intitolata “Binari dell’agente”Ogni binario sulla release GitHub
è accompagnato da <file>.sigstore.json (il bundle della firma) e
<file>.sha256, e la release include dumbmonit-agent.intoto.jsonl, la
provenienza di build SLSA.
cosign verify-blob dumbmonit-agent-linux-x86_64 \ --bundle dumbmonit-agent-linux-x86_64.sigstore.json \ --certificate-oidc-issuer https://token.actions.githubusercontent.com \ --certificate-identity-regexp '^https://github.com/selfhostr/dumbmonit/\.github/workflows/release\.yml@refs/tags/v'
# or, with the GitHub CLI (checks the provenance attestation)gh attestation verify dumbmonit-agent-linux-x86_64 -R selfhostr/dumbmonit
# or against the provenance attached to the releasegh attestation verify dumbmonit-agent-linux-x86_64 -R selfhostr/dumbmonit \ --bundle dumbmonit-agent.intoto.jsonlUn’esecuzione riuscita stampa l’identità del workflow e il tag. Se fallisce, non installare il file e segnalalo.
Immagini container
Sezione intitolata “Immagini container”Le immagini del server e dell’agente portano un’attestazione di provenienza di build inviata a ghcr.io, e un SBOM SPDX e una provenienza SLSA completa allegati all’indice dell’immagine.
gh attestation verify oci://ghcr.io/selfhostr/dumbmonit:0.9.0 -R selfhostr/dumbmonit
# the SBOM and the provenance recorded by the builddocker buildx imagetools inspect ghcr.io/selfhostr/dumbmonit:0.9.0 \ --format '{{ json .SBOM }}'docker buildx imagetools inspect ghcr.io/selfhostr/dumbmonit:0.9.0 \ --format '{{ json .Provenance }}'Fissa un’immagine tramite digest nel tuo file Compose se vuoi che ciò che hai verificato sia esattamente ciò che gira.
Firmati in seguito
Sezione intitolata “Firmati in seguito”Le versioni precedenti alla 0.9.0 (v0.1.0-alpha.N), e i file che il workflow di rilascio non ha firmato da sé (come provenance.json), ricevono il loro <file>.sigstore.json da un workflow separato, avviato a mano (.github/workflows/sign-releases.yml). La sua firma dice solo che il file era nella release quando quel workflow è stato eseguito, non che sia stato compilato dal tag: verificala con l’identità di quel workflow e confronta il file con il .sha256 che lo accompagna.
cosign verify-blob dumbmonit-agent-linux-x86_64 \ --bundle dumbmonit-agent-linux-x86_64.sigstore.json \ --certificate-oidc-issuer https://token.actions.githubusercontent.com \ --certificate-identity-regexp '^https://github.com/selfhostr/dumbmonit/\.github/workflows/sign-releases\.yml@refs/heads/(main|dev)$'Queste versioni non hanno provenienza di build: gh attestation verify non si applica.
Tag di versione
Sezione intitolata “Tag di versione”I tag di release (v0.9.0, …) sono annotati, non firmati con GPG, e solo gli
amministratori del repository possono crearli (un ruleset riserva v*). La
fiducia in una release poggia sugli artefatti firmati qui sopra, il cui
certificato nomina il tag da cui sono stati compilati, più che sulla firma del
tag.