Olivares AI governa gli agenti sulla tua infrastruttura, quindi la sua supply chain fa parte del tuo modello di fiducia. Prima di eseguire un rilascio, dimostra che è quello che abbiamo pubblicato. Ogni rilascio include gli artefatti necessari per verificarlo crittograficamente — e la verifica può avvenire senza alcuna rete, che è il percorso per estate disconnessi e air-gapped.
Non inviare un installer a una shell tramite pipe. Scarica gli artefatti, verificali, poi eseguili. I passaggi sotto indicano come.
Stato pre-rilascio. Non è ancora stato pubblicato alcun rilascio pubblico —
olivaresai/olivaresviene pubblicato con il lancio, quindi oggi non c’è alcun artefatto da scaricare né nulla su cui eseguire questi comandi. Questa guida documenta la catena di verifica che accompagnerà ogni rilascio pubblico; la pipeline che la sostiene è costruita e viene esercitata in CI. Tutto ciò che segue diventerà eseguibile con il primo rilascio taggato.
Cosa viene distribuito con un rilascio
Un rilascio taggato include gli archivi del binario più tutto il necessario per attestarli:
| Artefatto | Cos’è |
|—-|—-|
| checksums.txt (+ .sig, .pem) | SHA-256 di ogni artefatto, con una firma cosign e un certificato (keyless) |
| *_<os>_<arch>.tar.gz | gli archivi di rilascio per linux/darwin x amd64/arm64 |
| *.spdx.sbom.json / *.cdx.sbom.json | SBOM per archivio, distribuito sia in formato SPDX che CycloneDX |
| *.sbom.sigstore.json | lo SBOM SPDX come attestato in-toto firmato sull’archivio |
| *.vex.sigstore.json | una dichiarazione OpenVEX come attestato in-toto firmato sull’archivio |
| *.intoto.jsonl | provenienza build SLSA (generata da slsa-github-generator) |
| immagine container | pubblicata su un registry, firmata e attestata, fissata per digest |
Gli attestati fanno riferimento a ogni artefatto per i suoi byte, mai per un tag mutabile.
Il percorso a un comando
Il repository distribuisce scripts/verify-release.sh. Eseguilo dalla directory contenente i file scaricati; percorre l’intera catena e riporta ogni passaggio:
# Keyless (Sigstore) — default. Needs network to the transparency log (Rekor).
scripts/verify-release.sh
# Key-based — verify against the project's public key (air-gap friendly).
scripts/verify-release.sh --key cosign.pub
# Fully offline — key-based, no transparency-log network at all.
scripts/verify-release.sh --key cosign.pub --offline
# Pin SLSA provenance to a specific source tag.
scripts/verify-release.sh --source-tag <version>
Come viene usata la rete dipende dal modello di firma. Le firme keyless portano una voce nel transparency log di Rekor, quindi il percorso predefinito raggiunge Rekor (puoi passare --offline per usare una voce incorporata). Le firme basate su chiave vengono prodotte senza una voce Rekor, quindi lo script aggiunge --insecure-ignore-tlog e non contatta nulla. La combinazione --key cosign.pub --offline e il percorso genuinamente disconnesso.
Lo script richiede cosign e sha256sum; slsa-verifier e opzionale. I passaggi i cui artefatti (o il cui verificatore) sono assenti vengono saltati con una nota chiara anziché fallire — cosi funziona su un rilascio minimale e verifica completamente uno completo.
Cosa verifica, passo per passo
Se preferisci eseguire i controlli a mano, questa è la catena. Sostituisci <archive> con ogni *.tar.gz.
1. Firma sul file dei checksum
Verificare checksums.txt conferma transitivamente ogni artefatto elencato. La verifica keyless fissa l’identità di firma all’identità OIDC di GitHub Actions del progetto:
cosign verify-blob \
--certificate checksums.txt.pem \
--signature checksums.txt.sig \
--certificate-identity-regexp '^https://github\.com/olivaresai/olivares/\.github/workflows/release\.yml@refs/tags/v[0-9]+\.[0-9]+\.[0-9]+$' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
checksums.txt
La verifica basata su chiave usa invece cosign verify-blob --key cosign.pub --signature checksums.txt.sig --insecure-ignore-tlog checksums.txt.
2. Integrità degli artefatti
Ricalcola l’hash di ogni artefatto rispetto al manifesto ora attendibile:
sha256sum --check checksums.txt
3. Attestato SBOM (SPDX)
cosign verify-blob-attestation --type spdxjson \
--bundle <archive>.sbom.sigstore.json --new-bundle-format \
--check-claims <archive>
Aggiungi --key cosign.pub --insecure-ignore-tlog (al posto dei flag di identità) per il percorso offline. Lo SBOM CycloneDX (*.cdx.sbom.json) viene distribuito a fianco per gli strumenti che lo preferiscono.
4. Attestato OpenVEX
La dichiarazione sulle vulnerabilita del progetto, verificata allo stesso modo:
cosign verify-blob-attestation --type openvex \
--bundle <archive>.vex.sigstore.json --new-bundle-format \
--check-claims <archive>
5. Provenienza SLSA
slsa-verifier verify-artifact <archive> \
--provenance-path <provenance>.intoto.jsonl \
--source-uri github.com/olivaresai/olivares
Verificare l’immagine container
Il percorso keyless per l’immagine dimostra l’immagine rispetto alla stessa identità GitHub Actions ma necessita di rete. Risolvi e distribuisci sempre per digest, mai per un tag mutabile:
IMAGE=ghcr.io/olivaresai/olivares
DIGEST="$(crane digest "$IMAGE:<version>")"
REF="$IMAGE@$DIGEST"
cosign verify "$REF" \
--certificate-identity-regexp '^https://github\.com/olivaresai/olivares/\.github/workflows/release\.yml@refs/tags/v[0-9]+\.[0-9]+\.[0-9]+$' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
Per un estate completamente disconnesso, usa invece il bundle air-gap: include l’immagine, le sue firme e attestati, e un cosign.pub, e verifica offline con cosign verify --local-image <dir> --insecure-ignore-tlog --key cosign.pub. La guida self-host copre la costruzione e il mirroring di quel bundle.
Cosa la verifica dimostra e cosa no
La verifica crittografica dimostra provenienza e integrità: che l’artefatto e l’output esatto e non modificato che la nostra pipeline ha costruito e firmato. Non certifica il comportamento del software ne alcuna postura di conformita. Olivares AI e pre-1.0 ed è progettato verso — non certificato rispetto a — framework come SOC 2 e ISO 27001; vedi Trasparenza e limiti per cosa significa quella distinzione in pratica.
La verifica e anche completa solo quanto gli attestati che un dato rilascio ha effettivamente pubblicato. Il verificatore riporta ogni passaggio che esegue; se una build omette un artefatto, il passaggio corrispondente non ha nulla da verificare. Il rilascio standard allega gli artefatti SBOM, OpenVEX e SLSA nominati sopra.