Introducción
Las atestaciones de artefactos son una buena manera de crear garantías de integridad y procedencia no verificables para el software que compile.
De forma predeterminada, las atestaciones se almacenan en la API de atestación de GitHub, que gh attestation verify
consultará cuando vaya a comprobar la atestación. Ese comando también se pondrá en contacto con los servidores de GitHub para comprobar si hay material de clave actualizado que se usará para comprobar la atestación.
Este comando puede funcionar sin conectividad a Internet, pero debe proporcionar manualmente la agrupación de atestaciones y el material de clave en la raíz de confianza.
Antes de iniciar esta guía, debe estar creando con la generación de atestaciones de artefactos. Consulte "Uso de atestaciones de artefactos para establecer la procedencia de las compilaciones".
Paso 1: Descargar la agrupación de atestaciones
En primer lugar, obtenga el conjunto de atestaciones de la API de atestación.
Puede hacerlo con el siguiente comando desde una máquina que esté en línea:
gh attestation download PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME
gh attestation download PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME
Esta es la salida de ejemplo de ese comando:
Wrote attestations to file sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl.
Any previous content has been overwritten
The trusted metadata is now available at sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl
Paso 2: Descargar raíces de confianza
A continuación, obtenga el material de clave de las raíces de confianza.
Las atestaciones de artefactos usan la instancia correcta pública de Sigstore para repositorios públicos y la instancia de Sigstore de GitHub para repositorios privados. Puede usar un comando para obtener ambas raíces de confianza:
gh attestation trusted-root > trusted_root.jsonl
gh attestation trusted-root > trusted_root.jsonl
Actualización de la información de las raíces de confianza en un entorno sin conexión
Se recomienda generar un nuevo archivo trusted_root.jsonl
cada vez que importe nuevo material firmado en el entorno sin conexión.
El material de clave de trusted_root.jsonl
no tiene una fecha de expiración integrada, por lo que cualquier cosa firmada antes de generar el archivo raíz de confianza seguirá comprobando correctamente. Cualquier cosa firmada después de generar el archivo comprobará hasta que la instancia de Sigstore rote su material de clave, lo que suele ocurrir varias veces al año. No sabrá si el material de clave se ha revocado desde la última vez que generó el archivo raíz de confianza.
Paso 3: Realizar la comprobación sin conexión
Ahora, tiene todo listo para comprobar el artefacto sin conexión.
Debe importar en el entorno sin conexión lo siguiente:
- GitHub CLI
- El artefacto
- El archivo de agrupación
- El archivo raíz de confianza
A continuación, puede realizar la comprobación sin conexión con el siguiente comando:
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME --bundle sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl --custom-trusted-root trusted_root.jsonl
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME --bundle sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl --custom-trusted-root trusted_root.jsonl
Conclusión
Ahora está comprobando las atestaciones de artefactos en un entorno sin conexión. Se recomienda importar una nueva raíz de confianza cada vez que se introducen nuevos artefactos firmados en el entorno sin conexión.