Evidencia y auditoría

Demuestre cada decisión. Vuelva a reproducirlo meses después.

Las cápsulas de decisión sellan la evidencia para que los auditores puedan verificar cualquier liberación, fuera de línea, de forma independiente, idéntica bit por bit.

Vista del auditor: lo que recibes

Exportar una cápsula de decisión produce un bundle firmado y direccionado por contenido con las entradas y salidas exactas usadas para la decisión de release.

  • SBOM exacto usado para el escaneo
  • Snapshots congelados de feeds de vulnerabilidades (NVD, OSV, avisos de proveedores)
  • Evidencia de alcanzabilidad (artefactos de grafos de llamadas estáticos y trazas en runtime)
  • Versión de la política y reglas lattice usadas para el gate
  • Declaración VEX derivada con justificaciones
  • Firmas DSSE que cubren el contenido de la cápsula

Fuente: Documentación de cápsulas de decisión

¿Qué es un paquete de evidencia?

Contenido

Cada Cápsula de Decisión agrupa el SBOM exacto, feeds de vulnerabilidades congelados, grafos de alcanzabilidad, versión de política, VEX derivado y metadatos de aprobación.

Firma

Las firmas DSSE/in-toto hacen los paquetes a prueba de manipulaciones. Elige perfiles criptográficos FIPS-140-3, GOST R 34.10, SM2/SM3 o eIDAS.

Exportar

Exporta cápsulas en cualquier paso de promoción. Almacena en Evidence Locker con semántica WORM para períodos de retención de cumplimiento.

Reproducir

Vuelve a ejecutar cualquier decisión histórica con stella replay. Mismas entradas, mismas salidas, offline u online.

Estructura de cápsula de muestra

Cada Decision Capsule es un directorio autónomo con artefactos firmados:

decision-capsule-20260126-prod-a1b2/
├── manifest.json           # Metadatos de la cápsula + firmas
├── sbom.cdx.json           # SBOM CycloneDX 1.7
├── sbom.cdx.json.sig       # Firma DSSE
├── reachability/
│   ├── analysis.json       # Veredictos de alcanzabilidad
│   ├── call-graph.json     # Prueba de análisis estático
│   └── analysis.json.sig   # Firma DSSE
├── policy/
│   ├── rules.rego          # Snapshot de la política
│   └── verdict.json        # Decisión del gate + justificación
├── approvals/
│   └── jsmith.sig          # Firma de aprobación humana
└── feeds/
    └── snapshot.json       # Estado congelado de CVE/avisos

Extracto del manifiesto de la cápsula

El manifiesto fija cada entrada y salida por digest para que la decisión pueda reproducirse más tarde.

apiVersion: capsule.stellaops.dev/v1
metadata:
  id: "cap-2025-12-11-abc123"
  timestamp: "2025-12-11T14:30:00Z"
  scan_id: "scan-xyz789"
inputs:
  sbom:
    format: "cyclonedx@1.6"
    digest: "sha256:..."
  feeds:
    - name: "nvd"
      snapshot: "2025-12-11"
      digest: "sha256:..."
  policy:
    version: "corp-policy@2025-12-01"
    digest: "sha256:..."
outputs:
  vex:
    format: "openvex"
    digest: "sha256:..."
signatures:
  - scheme: "DSSE"
    profile: "FIPS-140-3"
    signer: "build-ca@corp"

Cadena de evidencia

Cómo fluye la evidencia a través de Stella
Flujo de evidenciaImagenSBOMAlcanzabilidadVeredicto de políticaFirmado con DSSEFirmado con DSSEFirmado con DSSE

Qué contiene una Cápsula de Decisión

Digest del artefacto

Dirección de contenido SHA-256

Firmado

Snapshot de SBOM

CycloneDX 1.7 / SPDX 3.0

Firmado

Evidencia de alcanzabilidad

Grafo + atestaciones de aristas

Firmado

Estado VEX

Veredicto resuelto en lattice

Firmado

Versión de política

Rego/DSL con dirección de contenido

Firmado

Aprobaciones

Registros de aprobación firmados

Firmado

Flujo de trabajo de cumplimiento

Los auditores pueden reproducir decisiones meses después
Flujo de reproducción de auditoríaCápsula de decisiónde hace 6 mesesstella reproducirMismo veredictoidéntico bit a bit
  1. 1

    El auditor pregunta

    "Muéstrame prueba de que esta CVE fue manejada correctamente en el release de enero."

  2. 2

    El operador exporta

    stella cápsula exportar jan-release-capsule.yaml --formato paquete de auditoría

  3. 3

    El paquete verifica

    El auditor ejecuta stella capsule verify jan-release-capsule.yaml — las firmas verifican, los digests coinciden.

  4. 4

    La reproducción confirma

    stella replay jan-release-capsule.yaml produce un veredicto idéntico con entradas congeladas.

Reproducción determinista

Ejecute la misma decisión 6 meses después: las mismas entradas congeladas producen un veredicto idéntico. No se requiere red, no hay deriva de estado, no hay ambigüedad.

  • Verifica las firmas de la cápsula con claves fijadas.
  • Confirma que los digests del SBOM y del feed coinciden con el manifiesto.
  • Repite con el mismo bundle de políticas y entradas de alcanzabilidad.
  • Exporta el bundle de auditoría con veredicto, VEX y pruebas.
Terminal
$ stella replay capsule.json --verify
Reproduciendo decisión de 2025-07-15T14:32:00Z...
Versión de la política: sha256:e5f6g7h8... (coincide)
Snapshot del feed:  sha256:i9j0k1l2... (coincide)
Veredicto: ALLOW (idéntico al original)
Chequeo de determinismo: PASS

Formatos e interoperabilidad

SBOM

CycloneDX 1.7 y SPDX 3.0.1. Importe desde Trivy, Grype, Syft o genere de forma nativa.

VEX

OpenVEX y CSAF 2.0. Resolución de celosía de múltiples emisores con detección de conflictos.

SARIF

Exportación de formato de intercambio de resultados de análisis estático para integración IDE y CI.

Verificación con espacio libre

Los auditores verifican las firmas, verifican la integridad del resumen y reproducen decisiones sin ningún acceso a la red. Todo el material criptográfico viaja con la cápsula.

Terminal
$ stella capsule verify decision-capsule.yaml --offline
Verificación de firma: PASS (ECDSA-P256)
Coincidencia de digest:           PASS (sha256:abc123...)
Versión de la política:         VALID (v3.2.1)
Integridad de evidencias:     TODOS LOS COMPONENTES FIRMADOS
Veredicto:                ALLOW — no se requiere red

¿Listo para hacer los releases auditables?

Leer la especificación de Cápsulas de Decisión · Ver todas las características