Información general
Las atestaciones de artefactos permiten crear garantías de integridad y procedencia no verificables para el software que compile. A su vez, las personas que consumen el software pueden comprobar dónde y cómo se compiló el software.
Al generar atestaciones de artefactos con el software, se crean notificaciones firmadas criptográficamente que establecen la procedencia de la compilación e incluyen la siguiente información:
- Vínculo al flujo de trabajo asociado al artefacto
- El repositorio, la organización, el entorno, la confirmación de SHA y el evento desencadenante para el artefacto
- Otra información del token de OIDC que se usa para establecer la procedencia. Para más información, consulta OpenID Connect.
También puede generar atestaciones de artefactos que incluyan una lista de materiales de software asociada (SBOM). Asociar las compilaciones con una lista de las dependencias de código abierto usadas en ellas proporciona transparencia y permite a los consumidores cumplir con los estándares de protección de datos.
Niveles de SLSA para atestaciones de artefactos
El marco SLSA es un estándar del sector que se usa para evaluar la seguridad de la cadena de suministro. Se organiza en niveles. Cada nivel representa un mayor grado de seguridad y fiabilidad para una cadena de suministro de software. Las atestaciones de artefactos proporcionan por sí solas el nivel de compilación 2 de SLSA v1.0.
Esto ofrece un vínculo entre el artefacto y sus instrucciones de compilación, pero puede ir un paso más allá y exigir que las compilaciones usen instrucciones de compilación conocidas y examinadas. Una excelente manera de hacerlo es hacer que la compilación tenga lugar en un flujo de trabajo reutilizable que muchos repositorios de toda la organización comparten. Los flujos de trabajo reutilizables pueden proporcionar aislamiento entre el proceso de compilación y el flujo de trabajo de llamada para satisfacer el nivel de compilación 3 de SLSA v1.0. Para más información, consulta Uso de atestaciones de artefactos y flujos de trabajo reutilizables para lograr el nivel de compilación 3 de SLSA v1.
Para obtener más información sobre los niveles de SLSA, consulte Niveles de seguridad de SLSA.
Cómo genera GitHub atestaciones de artefactos
Para generar atestaciones de artefactos, GitHub usa Sigstore, que es un proyecto de código abierto que ofrece una solución completa para firmar y comprobar artefactos de software mediante atestaciones.
Los repositorios públicos que generan atestaciones de artefactos usan la instancia correcta pública de Sigstore. Una copia del paquete Sigstore generado se almacena con GitHub y también se escribe en un registro de transparencia inmutable que se puede leer públicamente en Internet.
Los repositorios privados que generan atestaciones de artefactos usan la instancia de Sigstore de GitHub. La instancia de Sigstore de GitHub usa el mismo código base que la instancia pública de Sigstore, pero no tiene un registro de transparencia y solo se federa con GitHub Actions.
Cuándo generar atestaciones
La generación de atestaciones por sí sola no proporciona ninguna ventaja de seguridad, las atestaciones deben comprobarse para que las ventajas se materialicen. Estas son algunas instrucciones para saber qué firmar y con qué frecuencia:
Debería firmar:
- Software en el que está lanzando con el que espera que las personas ejecuten
gh attestation verify ...
. - Archivos binarios que las personas ejecutarán, paquetes que los usuarios descargarán o manifiestos que incluyen hashes de contenido detallado.
No debería firmar:
- Compilaciones frecuentes que son solo para pruebas automatizadas.
- Archivos individuales, como código fuente, archivos de documentación o imágenes incrustadas.
Comprobación de atestaciones de artefactos
Si consume software que publica atestaciones de artefactos, puede usar GitHub CLI para comprobar esas atestaciones. Dado que las atestaciones proporcionan información sobre dónde y cómo se compiló el software, puede usar esa información para crear y aplicar directivas de seguridad que elevan la seguridad de la cadena de suministro.
Advertencia
Es importante recordar que las atestaciones de artefactos no son una garantía de que un artefacto sea seguro. En su lugar, las atestaciones de artefactos le vinculan al código fuente y las instrucciones de compilación que las generaron. Es su responsabilidad definir los criterios de la directiva, evaluar esa directiva mediante la evaluación del contenido y tomar una decisión de riesgo fundamentada al consumir software.
Pasos siguientes
Para empezar a generar y comprobar las atestaciones de artefactos para las compilaciones, consulta Uso de atestaciones de artefactos para establecer la procedencia de las compilaciones.