
# 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. 시간별 각 리프를 다시 만든 뒤 포함 증명(RFC 9162)을 따라 서명된 시간별 체크포인트의 루트까지 확인합니다.

따라서 번들의 레코드가 변경, 삭제 또는 순서가 바뀌지 않았음을 증명합니다. 필터가 올바르게 적용되었는지는 증명하지 않습니다. 리프에는 환경 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)를 참조하십시오.
