Verifica lo que has descargado
Los paquetes de despliegue se suministran por el canal Business; su publicación no está verificada aquí. Verifica el paquete del chart y su editor con las instrucciones del canal antes de usar el chart local. El ejemplo de manifiesto usa un archivo Business llamado
business-install.yaml. La instalación aislada requiere Enterprise.
Helm, Kubernetes operators, Terraform, appliance and FIPS/STIG images are Business deployment artifacts. The source paths below are in the Business distribution. Air-gapped installation requires Enterprise.
La próxima release es 0.4; todavía no está publicada en GitHub. Los comandos siguientes describen los artefactos previstos. Compila desde el código fuente hasta su publicación y verifica cada artefacto antes de usarlo. El estado observado está en docs/releases/0.4-install-surfaces.json.
Un control plane es un producto de seguridad, así que lo primero que deberías hacer con una release es demostrar que es la que el proyecto publicó. Las releases de Olivares AI incluyen todo lo necesario para verificarlas criptográficamente: una firma sobre los checksums, una atestación de procedencia SLSA, y un SBOM (SPDX) y un documento OpenVEX, ambos atestados a la imagen del contenedor — todo referenciado por digest, nunca por etiqueta.
Qué incluye una release
Sección titulada «Qué incluye una release»| Artefacto | Qué es |
|---|---|
checksums.txt (+ .sig, .pem) |
SHA-256 de los archivos, paquetes, instalador, release-commit.txt y release-build-context.json, con una firma y certificado de cosign |
*_<os>_<arch>.tar.gz |
el/los archivo(s) de la release |
olivares.spdx.sbom.json |
el SBOM (SPDX) de la release, generado a partir de la imagen del contenedor y atestado a ella por digest |
olivares.vex.openvex.json |
el OpenVEX de la release, atestado a la imagen del contenedor por digest |
*.intoto.jsonl |
procedencia SLSA Build L3 |
| imagen del contenedor | publicada en GHCR y Docker Hub, verificada y fijada por digest |
| fuente del chart de Helm | instalar desde ./business-chart; su publicación OCI no está verificada (publication-unverified: nunca publicado desde este repositorio) |
Las releases hasta 26.10.1 incluyen en su lugar un bundle de SBOM y otro de OpenVEX por archivo
(*.sbom.sigstore.json, *.vex.sigstore.json); las releases posteriores no.
La ruta de un solo comando
Sección titulada «La ruta de un solo comando»El repositorio incluye scripts/verify-release.sh, que ejecuta la cadena completa:
verifica la firma sobre checksums.txt, recalcula el SHA-256 de cada artefacto,
y luego verifica los bundles de SBOM y OpenVEX por archivo de las releases hasta 26.10.1
(las releases posteriores informan estos dos pasos como omitidos) y la procedencia SLSA.
# The verifier is in a source checkout of the release tag, not a release asset; running it# trusts the checkout. Without one, INSTALL.md shows the cosign + sha256sum commands.# Run it from the directory that holds the downloaded files.
# Default: keyless (Sigstore). Needs Rekor and Sigstore trusted-root material./path/to/olivares/scripts/verify-release.sh
# Pin the SLSA provenance to a specific source tag./path/to/olivares/scripts/verify-release.sh --source-tag 0.4
# Key-based: only for files signed with a private key you control.# Releases are signed keyless and do not publish a public key./path/to/olivares/scripts/verify-release.sh --key /path/to/your-cosign.pub--key comprueba las firmas contra una clave pública en lugar de la identidad del workflow de
release e ignora el registro de transparencia. Demuestra que los archivos se firmaron con la
clave privada correspondiente, no que el proyecto los publicara. Obtén esa clave pública de su
propietario por un canal separado de los archivos que verificas.
--offline quita solo la consulta a Rekor de las llamadas de cosign; no hace que la verificación
funcione sin red. La verificación sin clave sigue necesitando el material de raíz de confianza de
Sigstore, que cosign descarga salvo que ya esté en caché, y el script no tiene la opción
--trusted-root. La comprobación de los bundles de SBOM y OpenVEX por archivo (releases hasta 26.10.1) necesita una raíz de confianza
incluso con --key, y el paso de SLSA ejecuta slsa-verifier sin ninguna opción offline.
Qué comprueba, paso a paso
Sección titulada «Qué comprueba, paso a paso»Si prefieres ejecutar las comprobaciones tú mismo, esto es lo que hace el script:
-
Firma sobre los checksums — sin clave, verificada contra la identidad de GitHub Actions del proyecto y el emisor OIDC:
Ventana de terminal 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/[0-9]+\.[0-9]+$' \--certificate-oidc-issuer https://token.actions.githubusercontent.com \checksums.txt -
Integridad de los artefactos — cada artefacto descargado debe coincidir con
checksums.txt:Ventana de terminal # checksums.txt lists all release artifacts; skip files you did not download.# Before use, ensure each downloaded artifact is listed and reports OK.# GNU sha256sum fails if no listed file is present or a checksum mismatches.sha256sum --check --ignore-missing checksums.txt -
Atestación de SBOM (SPDX) — bundle por archivo, solo releases hasta 26.10.1. Las releases posteriores incluyen un SBOM atestado a la imagen del contenedor; consulta Verificar la imagen del contenedor más abajo.
Ventana de terminal cosign verify-blob-attestation --type spdxjson \--bundle <artifact>.sbom.sigstore.json --new-bundle-format \--check-claims <artifact> -
Atestación OpenVEX (la declaración de vulnerabilidades del proyecto basada en alcanzabilidad) — bundle por archivo, solo releases hasta 26.10.1. Las releases posteriores incluyen un OpenVEX atestado a la imagen del contenedor; consulta Verificar la imagen del contenedor más abajo.
Ventana de terminal cosign verify-blob-attestation --type openvex \--bundle <artifact>.vex.sigstore.json --new-bundle-format \--check-claims <artifact> -
Procedencia SLSA:
Ventana de terminal slsa-verifier verify-artifact <artifact> \--provenance-path <artifact>.intoto.jsonl \--source-uri github.com/olivaresai/olivares
Verificar la imagen del contenedor
Sección titulada «Verificar la imagen del contenedor»Para la imagen publicada, resuelve el digest y verifica contra la identidad de GitHub Actions
(esta ruta es sin clave y necesita red). Las atestaciones spdxjson y openvex son el SBOM
(olivares.spdx.sbom.json) y el OpenVEX (olivares.vex.openvex.json) de la release, atestados
a la imagen por digest:
IMAGE=docker.io/olivaresai/olivaresDIGEST="$(crane digest "$IMAGE:<version>")"REF="$IMAGE@$DIGEST"
cosign verify "$REF" \ --certificate-identity-regexp '^https://github\.com/olivaresai/olivares/\.github/workflows/release\.yml@refs/tags/[0-9]+\.[0-9]+$' \ --certificate-oidc-issuer https://token.actions.githubusercontent.comcosign verify-attestation "$REF" --type spdxjson \ --certificate-identity-regexp '^https://github\.com/olivaresai/olivares/\.github/workflows/release\.yml@refs/tags/[0-9]+\.[0-9]+$' \ --certificate-oidc-issuer https://token.actions.githubusercontent.comcosign verify-attestation "$REF" --type openvex \ --certificate-identity-regexp '^https://github\.com/olivaresai/olivares/\.github/workflows/release\.yml@refs/tags/[0-9]+\.[0-9]+$' \ --certificate-oidc-issuer https://token.actions.githubusercontent.comslsa-verifier verify-image "$REF" \ --source-uri github.com/olivaresai/olivares --source-tag <version>Despliega siempre la imagen por digest (@sha256:…), nunca por una etiqueta mutable.
En un entorno aislado de red
Sección titulada «En un entorno aislado de red»Un operador construye el bundle aislado de red con una clave cosign propia, y el bundle
incluye la cosign.pub correspondiente. Sus scripts comprueban el chart de Helm y las imágenes
guardadas contra esa clave sin Rekor; una imagen solo pasa si lleva una firma hecha con esa clave.
Una clave tomada del mismo bundle que verifica no autentica ese bundle: antes de confiar en el
bundle, compárala con una copia que el propietario de la clave te haya entregado por un canal
separado. Consulta Instala en un entorno aislado de red.