Preuves et audit
Prouvez chaque décision. Rejouez-le des mois plus tard.
Les capsules de décision scellent les preuves afin que les auditeurs puissent vérifier toute version - hors ligne, indépendamment, bit pour bit identique.
Vue auditeur : ce que vous recevez
Exporter une capsule de décision produit un bundle signé et adressé par contenu avec les entrées et sorties exactes de la décision de release.
- SBOM exact utilisé pour le scan
- Snapshots figés des feeds de vulnérabilités (NVD, OSV, avis fournisseurs)
- Preuves d’atteignabilité (artefacts de graphes d’appels statiques et traces runtime)
- Version de la politique et règles lattice utilisées pour le gate
- Déclaration VEX dérivée avec justifications
- Signatures DSSE couvrant le contenu de la capsule
Qu'est-ce qu'un paquet de preuves ?
Contenu
Chaque Capsule de Décision regroupe le SBOM exact, les flux de vulnérabilités figés, les graphes d'atteignabilité, la version de la politique, le VEX dérivé et les métadonnées d'approbation.
Signature
Les signatures DSSE/in-toto rendent les paquets inviolables. Choisissez les profils crypto FIPS-140-3, GOST R 34.10, SM2/SM3 ou eIDAS.
Exportation
Exportez les capsules à chaque étape de promotion. Stockez dans Evidence Locker avec sémantique WORM pour les périodes de rétention de conformité.
Rejeu
Rejouez n'importe quelle décision historique avec stella replay. Mêmes entrées, mêmes sorties, hors ligne ou en ligne.
Exemple de structure de capsule
Chaque capsule de décision est un répertoire autonome avec des artefacts signés :
decision-capsule-20260126-prod-a1b2/ ├── manifest.json # Métadonnées de la capsule + signatures ├── sbom.cdx.json # SBOM CycloneDX 1.7 ├── sbom.cdx.json.sig # Signature DSSE ├── reachability/ │ ├── analysis.json # Verdicts d’atteignabilité │ ├── call-graph.json # Preuve d’analyse statique │ └── analysis.json.sig # Signature DSSE ├── policy/ │ ├── rules.rego # Snapshot de politique │ └── verdict.json # Décision du gate + justification ├── approvals/ │ └── jsmith.sig # Signature d’approbation humaine └── feeds/ └── snapshot.json # État figé des CVE/avis
Extrait du manifeste de capsule
Le manifeste épingle chaque entrée et sortie par digest afin de rejouer la décision plus tard.
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" Chaîne de preuves
Contenu d'une Capsule de Décision
Digest de l'artefact
Adresse de contenu SHA-256
Snapshot SBOM
CycloneDX 1.7 / SPDX 3.0
Preuves d'atteignabilité
Graphe + attestations d'arêtes
État VEX
Verdict résolu par lattice
Version de politique
Rego/DSL adressé par contenu
Approbations
Enregistrements d'approbation signés
Workflow de conformité
- 1
L'auditeur demande
"Montrez-moi la preuve que cette CVE a été traitée correctement dans la release de janvier."
- 2
L'opérateur exporte
export de capsules Stella jan-release-capsule.yaml --format audit-bundle - 3
Le paquet vérifie
L'auditeur exécute
stella capsule verify jan-release-capsule.yaml— les signatures sont vérifiées, les digests correspondent. - 4
Le rejeu confirme
stella replay jan-release-capsule.yamlproduit un verdict identique avec les entrées figées.
Replay déterministe
Exécutez la même décision 6 mois plus tard : les mêmes entrées gelées produisent un verdict identique. Aucun réseau requis, aucune dérive d'état, aucune ambiguïté.
- Vérifier les signatures de la capsule avec les clés épinglées.
- Confirmer que les digests du SBOM et du feed correspondent au manifeste.
- Rejouer avec le même bundle de politiques et les entrées d’atteignabilité.
- Exporter le bundle d’audit avec verdict, VEX et preuves.
$ stella replay capsule.json --verify
Rejeu de la décision du 2025-07-15T14:32:00Z...
Version de la politique : sha256:e5f6g7h8... (correspond)
Snapshot du feed : sha256:i9j0k1l2... (correspond)
Verdict : ALLOW (identique à l’original)
Contrôle de déterminisme : PASS Formats et interopérabilité
SBOM
CycloneDX 1.7 et SPDX 3.0.1. Importez depuis Trivy, Grype, Syft ou générez de manière native.
VEX
OpenVEX et CSAF 2.0. Résolution de réseau multi-émetteurs avec détection des conflits.
SARIF
Exportation au format d'échange de résultats d'analyse statique pour l'intégration IDE et CI.
Vérification à espacement d'air
Les auditeurs vérifient les signatures, vérifient l'intégrité du résumé et rejouent les décisions sans aucun accès au réseau. Tout le matériel cryptographique voyage avec la capsule.
$ stella capsule verify decision-capsule.yaml --offline
Vérification de signature : PASS (ECDSA-P256)
Correspondance de digest : PASS (sha256:abc123...)
Version de la politique : VALID (v3.2.1)
Intégrité des preuves : TOUS LES COMPOSANTS SIGNÉS
Verdict : ALLOW — pas de réseau requis Prêt à rendre les releases auditables ?
Lire la spécification des Capsules de Décision · Voir toutes les fonctionnalités
