
# Audit-Exporte mit keenauth audit verify prüfen

`keenauth audit verify` prüft einen Management-Audit-Export auf Ihrem eigenen Rechner. Der Befehl kontaktiert KeenAuth nicht, benötigt keinen API-Schlüssel und keine `keenauth login`-Sitzung. Sie müssen der Plattform daher nicht vertrauen, um dem Export zu vertrauen.

## Was er belegt

Der Befehl nimmt das heruntergeladene Export-Bundle (eine tar-Datei mit `records.ndjson.gz`, `manifest.json` und `manifest.jws`) und den regionalen `audit-jwks.json` entgegen. Anschließend führt er folgende Schritte aus:

1. prüft die Signatur von `manifest.jws` mit dem Schlüssel für Audit-Checkpoints sowie, dass `manifest.json` dessen Nutzlast ist;
2. prüft Größe und SHA-256 von `records.ndjson.gz` anhand des Manifests;
3. berechnet den Hash jedes Datensatzes neu und prüft, dass die Sequenznummern fortlaufend sind und jeder Datensatz auf den Hash des vorherigen Datensatzes verweist;
4. baut das Blatt jeder Stunde neu auf und folgt seinem Inklusionsbeweis (RFC 9162) bis zur Wurzel des signierten stündlichen Checkpoints.

Der Befehl belegt also, dass die Datensätze im Bundle nicht verändert, entfernt oder umsortiert wurden. Er belegt nicht, dass Ihre Filter korrekt angewendet wurden. Das Blatt enthält die Umgebungs-ID, daher gilt ein Beweis für eine andere Umgebung nicht für Ihre Datensätze.

## Verwendung

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

| Option | Beschreibung |
|---|---|
| `--bundle` | Pfad des heruntergeladenen Export-Bundles (erforderlich). |
| `--jwks` | Pfad des regionalen `audit-jwks.json` (erforderlich). |
| `--environment-id` | Umgebungs-ID (UUID), zu der das Bundle gehören muss. Empfohlen: Ohne sie gibt der Befehl eine Warnung aus und prüft die Umgebung nicht. |
| `--output`, `-o` | `table`, `json` oder `yaml`. Ohne die Option gibt die CLI in einem Terminal eine Tabelle aus, sonst JSON. |

Bei Erfolg gibt der Befehl eine Zusammenfassung aus (`verified`, `export_id`, `environment_id`, `cell`, `stream`, `from`, `to`, `record_count`, `line_count`, `windows`, `key_id`, `include_ip`) und endet mit dem Code 0. `record_count` zählt die Datensätze, die Ihrem Filter entsprechen. `line_count` zählt zusätzlich die Platzhalterzeilen für Datensätze außerhalb des Filters.

Schlägt eine Prüfung fehl, gibt der Befehl nichts auf der Standardausgabe aus, schreibt `audit verification failed (<kind>)` auf die Standardfehlerausgabe und endet mit dem Code 1. Die Art ist `signature`, `manifest`, `chain`, `proof` oder `format`. Eine nicht lesbare Datei oder eine fehlende Option führt zum Code 2.

Informationen zum Erstellen und Herunterladen eines Exports finden Sie unter [der Audit-Export-API](/docs/api/management/audit-exports/create).
