
# Verifica degli export di audit con keenauth audit verify

`keenauth audit verify` controlla un export di audit di gestione sulla tua macchina. Non contatta KeenAuth, non richiede una chiave API né una sessione `keenauth login`, quindi non devi fidarti della piattaforma per fidarti dell'export.

## Cosa dimostra

Il comando prende il bundle di export che hai scaricato (un file tar con `records.ndjson.gz`, `manifest.json` e `manifest.jws`) e la `audit-jwks.json` regionale. Poi:

1. controlla la firma di `manifest.jws` con la chiave del checkpoint di audit e che `manifest.json` sia il suo payload;
2. controlla dimensione e SHA-256 di `records.ndjson.gz` rispetto al manifest;
3. ricalcola l'hash di ogni record e verifica che i numeri di sequenza siano consecutivi e che ogni record punti all'hash del precedente;
4. ricostruisce la foglia di ogni ora e ne segue la prova di inclusione (RFC 9162) fino alla radice del checkpoint orario firmato.

Quindi dimostra che i record nel bundle non sono stati modificati, rimossi o riordinati. Non dimostra che i tuoi filtri siano stati applicati correttamente. La foglia contiene l'ID dell'ambiente, quindi una prova per un altro ambiente non vale per i tuoi record.

## Utilizzo

```sh
keenauth audit verify --bundle audit-export.tar --jwks audit-jwks.json --environment-id 0192b6f0-7c1e-7a55-8f3d-2a6f0e9d4b11
```

| Flag | Descrizione |
|---|---|
| `--bundle` | Percorso del bundle di export scaricato (obbligatorio). |
| `--jwks` | Percorso della `audit-jwks.json` regionale (obbligatorio). |
| `--environment-id` | ID dell'ambiente (UUID) a cui deve appartenere il bundle. Consigliato: senza di esso il comando stampa un avviso e non controlla l'ambiente. |
| `--output`, `-o` | `table`, `json` o `yaml`. Senza il flag la CLI stampa una tabella in un terminale e JSON altrimenti. |

In caso di successo il comando stampa un riepilogo (`verified`, `export_id`, `environment_id`, `cell`, `stream`, `from`, `to`, `record_count`, `line_count`, `windows`, `key_id`, `include_ip`) ed esce con codice 0. `record_count` conta i record che corrispondono al tuo filtro; `line_count` conta anche le righe segnaposto per i record fuori dal filtro.

Se un controllo fallisce, il comando non stampa nulla sullo standard output, scrive `audit verification failed (<kind>)` sullo standard error ed esce con codice 1. Il tipo è `signature`, `manifest`, `chain`, `proof` o `format`. Un file illeggibile o un flag mancante escono con codice 2.

Per sapere come creare e scaricare un export, consulta [l'API degli export di audit](/docs/api/management/audit-exports/create).
