
# Vérifier les exports d'audit avec keenauth audit verify

`keenauth audit verify` vérifie un export d'audit de gestion sur votre propre machine. Il ne contacte pas KeenAuth et n'a besoin ni de clé d'API ni de session `keenauth login`. Vous n'avez donc pas à faire confiance à la plateforme pour faire confiance à l'export.

## Ce que cela prouve

La commande prend le bundle d'export que vous avez téléchargé (un fichier tar contenant `records.ndjson.gz`, `manifest.json` et `manifest.jws`) ainsi que le `audit-jwks.json` régional. Elle effectue ensuite les opérations suivantes :

1. vérifie la signature de `manifest.jws` avec la clé de point de contrôle d'audit, et vérifie que `manifest.json` en est la charge utile ;
2. vérifie la taille et le SHA-256 de `records.ndjson.gz` par rapport au manifeste ;
3. recalcule le hachage de chaque enregistrement, et vérifie que les numéros de séquence sont consécutifs et que chaque enregistrement pointe vers le hachage du précédent ;
4. reconstruit la feuille de chaque heure et suit sa preuve d'inclusion (RFC 9162) jusqu'à la racine du point de contrôle horaire signé.

Elle prouve donc que les enregistrements du bundle n'ont pas été modifiés, supprimés ni réordonnés. Elle ne prouve pas que vos filtres ont été appliqués correctement. La feuille contient l'identifiant de l'environnement : une preuve pour un autre environnement ne vaut donc pas pour vos enregistrements.

## Utilisation

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

| Option | Description |
|---|---|
| `--bundle` | Chemin du bundle d'export téléchargé (obligatoire). |
| `--jwks` | Chemin du `audit-jwks.json` régional (obligatoire). |
| `--environment-id` | Identifiant d'environnement (UUID) auquel le bundle doit appartenir. Recommandé : sans lui, la commande affiche un avertissement et ne vérifie pas l'environnement. |
| `--output`, `-o` | `table`, `json` ou `yaml`. Sans cette option, la CLI affiche un tableau dans un terminal et du JSON sinon. |

En cas de réussite, la commande affiche un résumé (`verified`, `export_id`, `environment_id`, `cell`, `stream`, `from`, `to`, `record_count`, `line_count`, `windows`, `key_id`, `include_ip`) et se termine avec le code 0. `record_count` compte les enregistrements qui correspondent à votre filtre ; `line_count` compte aussi les lignes de substitution pour les enregistrements hors filtre.

Si une vérification échoue, la commande n'affiche rien sur la sortie standard, écrit `audit verification failed (<kind>)` sur la sortie d'erreur et se termine avec le code 1. Le type d'erreur est `signature`, `manifest`, `chain`, `proof` ou `format`. Un fichier illisible ou une option manquante entraîne la sortie avec le code 2.

Consultez [l'API d'export d'audit](/docs/api/management/audit-exports/create) pour savoir comment créer et télécharger un export.
