Cosign
¿Qué es Cosign?
CosignCLI open source del proyecto Sigstore para firmar, verificar y atestiguar artefactos OCI y otro software, usando flujos con o sin claves de larga duración.
Cosign es la herramienta de cara al usuario del stack Sigstore, creada para responder a los ataques a la cadena de suministro —desde SolarWinds hasta paquetes npm secuestrados— que apuntan al pipeline de compilación y distribución en lugar de a los sistemas en ejecución. Puede firmar imágenes de contenedor, artefactos OCI, blobs, SBOM y atestaciones in-toto, almacenando las firmas junto al artefacto en un registro OCI.
Su innovación definitoria es la firma sin claves (keyless). En lugar de pedir a los desarrolladores que custodien una clave privada de larga duración, Cosign solicita un certificado a Fulcio, una autoridad de certificación que verifica una identidad OIDC (un workflow de GitHub Actions, un usuario de Google o de GitHub) y emite un certificado válido durante aproximadamente diez minutos. Cosign firma dentro de esa ventana y luego descarta la clave privada efímera; como los certificados son tan efímeros, no hacen falta listas de revocación ni OCSP. El evento de firma se registra en Rekor, un log de transparencia de solo anexado y a prueba de manipulaciones, de modo que cualquiera puede demostrar más tarde qué se firmó, con qué identidad y cuándo.
Las políticas de verificación pueden por tanto exigir quién firmó en lugar de con qué clave se firmó, p. ej. "solo se admiten imágenes compiladas por nuestro workflow reutilizable release.yml". Los controladores de admisión de Kubernetes como Kyverno, Connaisseur y OPA Gatekeeper imponen estas comprobaciones en el momento del despliegue, y las atestaciones producidas por Cosign sustentan la procedencia SLSA, convirtiendo afirmaciones de compilación que de otro modo serían autodeclaradas en afirmaciones criptográficamente verificables.
flowchart TD
A[El job de CI compila la imagen] --> B[cosign sign --identity-token OIDC]
B --> C[Fulcio verifica la identidad OIDC<br/>emite un certificado de ~10 min]
C --> D[Cosign firma y descarta la clave]
D --> E[Firma + cert registrados en Rekor<br/>log de transparencia]
E --> F[Push de la imagen + firma al registro]
F --> G[Controlador de admisión<br/>Kyverno / Connaisseur]
G --> H{¿Firmado por una identidad/<br/>workflow de confianza?}
H -->|Sí| I[Despliegue permitido]
H -->|No| J[Bloqueado]● Ejemplos
- 01
cosign sign --identity-token $OIDC_TOKEN ghcr.io/org/app:v1.2
- 02
Política Kyverno que verifica que las imágenes de producción están firmadas por un workflow concreto de GitHub Actions.
● Preguntas frecuentes
¿Qué es Cosign?
CLI open source del proyecto Sigstore para firmar, verificar y atestiguar artefactos OCI y otro software, usando flujos con o sin claves de larga duración. Pertenece a la categoría de Seguridad de aplicaciones en ciberseguridad.
¿Qué significa Cosign?
CLI open source del proyecto Sigstore para firmar, verificar y atestiguar artefactos OCI y otro software, usando flujos con o sin claves de larga duración.
¿Cómo defenderse de Cosign?
Las defensas contra Cosign combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para Cosign?
Nombres alternativos comunes: cosign.