
# keenauth audit verify による監査エクスポートの検証

`keenauth audit verify` は、お使いのマシン上で管理用の監査エクスポートを検証します。KeenAuth に接続せず、API キーも `keenauth login` のセッションも必要ありません。そのため、エクスポートを信頼するためにプラットフォームを信頼する必要はありません。

## 検証できる内容

コマンドには、ダウンロードしたエクスポートバンドル（`records.ndjson.gz`、`manifest.json`、`manifest.jws` を含む tar ファイル）と、リージョンの `audit-jwks.json` を指定します。コマンドは次を行います。

1. `manifest.jws` の署名を、監査チェックポイント鍵で検証し、`manifest.json` がそのペイロードであることを確認します。
2. `records.ndjson.gz` のサイズと SHA-256 をマニフェストと照合します。
3. 各レコードのハッシュを再計算し、シーケンス番号が連番であること、およびすべてのレコードが直前のレコードのハッシュを指していることを確認します。
4. 1時間ごとのリーフを再構築し、その包含証明（RFC 9162）を、署名済みの1時間ごとのチェックポイントのルートまでたどります。

したがって、バンドル内のレコードが変更、削除、並べ替えされていないことは証明されます。ただし、フィルタが正しく適用されたことは証明されません。リーフには環境 ID が含まれるため、別の環境向けの証明はお使いのレコードには当てはまりません。

## 使い方

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

| フラグ | 説明 |
|---|---|
| `--bundle` | ダウンロードしたエクスポートバンドルのパス（必須）。 |
| `--jwks` | リージョンの `audit-jwks.json` のパス（必須）。 |
| `--environment-id` | バンドルが属している必要がある環境 ID（UUID）。推奨です。指定しない場合、コマンドは警告を表示し、環境は確認しません。 |
| `--output`, `-o` | `table`、`json`、または `yaml`。フラグを指定しない場合、CLI はターミナルでは表形式、それ以外では JSON を出力します。 |

成功すると、コマンドは概要（`verified`、`export_id`、`environment_id`、`cell`、`stream`、`from`、`to`、`record_count`、`line_count`、`windows`、`key_id`、`include_ip`）を出力し、終了コード 0 で終了します。`record_count` はフィルタに一致するレコードの数を数えます。`line_count` はフィルタ外のレコードのプレースホルダー行も数えます。

いずれかのチェックに失敗した場合、コマンドは標準出力には何も出力せず、`audit verification failed (<kind>)` を標準エラー出力に書き込み、終了コード 1 で終了します。エラーの種類は `signature`、`manifest`、`chain`、`proof`、`format` のいずれかです。読み取れないファイルやフラグの欠落は、終了コード 2 で終了します。

エクスポートの作成とダウンロードの方法は、[監査エクスポート API](/docs/api/management/audit-exports/create) を参照してください。
