← Developers

02.3 — Motore 3: Controllo (RBAC, audit, firme)

Spec riferita a SPEC-DX-01 / control v1

L’Invariante

Ogni mutazione è attribuibile e ogni artefatto è verificabile senza fidarsi della piattaforma. L’identità arriva da sessioni autenticate e ruoli dichiarati nel manifest; la catena di audit è hash-linked per tenant; manifest, licenze, batch di ingest e payload di verifica pubblica sono firmati Ed25519 — chiunque abbia la chiave pubblica può controllarli.

Il Contratto

Il Flusso

  1. Un’azione operatore entra in pipeline; l’RBAC confronta i ruoli di sessione con rbac_engine.permissions.
  2. Al commit la riga di audit viene accodata con l’hash della riga precedente — manomettere un anello invalida la catena.
  3. Il Control Plane pubblica i manifest dopo aver validato la firma; l’edge verifica prima dello swap is_active.
  4. I batch di sync arrivano firmati; il Control Plane ri-verifica contro la pubkey registrata del nodo e conserva il batch come evidenza ri-controllabile.
  5. GET /api/v1/public/verify/event/:id permette a un terzo di verificare un evento committato — senza credenziali tenant.

Esempio di Payload

# Verifica end-to-end della catena di audit tenant (Control Plane)
curl -s https://cp.axiom-trace.eu/api/v1/tenant/audit/verify \
  -H "Authorization: Bearer $PORTAL_SESSION"
# → { "ok": true, "checked": 4811, "head": "9f2c…" }

# Oracolo pubblico — verifica la traccia di un singolo evento, senza credenziali
curl -s https://cp.axiom-trace.eu/api/v1/public/verify/event/$EVENT_ID
# → { "valid": true, "chain_depth": 12, … }

I Fallimenti Noti

Sintomo Causa
403 su un operatore legittimo Ruolo non presente in permissions per quel trigger — aggiornare il manifest, non il codice
Manifest rifiutato al pull Firma non valida o versione non monotona — ri-firmare con la MANIFEST_PRIVATE_KEY corrente
verify segnala un anello rotto Riga di audit cancellata o riscritta — la catena sta facendo il suo lavoro; investigare il gap
L’edge non parte in produzione Chiavi pubbliche Ed25519 mancanti — il fallback HMAC è solo per sviluppo