Hedef kitle:
forgelm verify-audit'i yayın kapılarına bağlayan operatörler ve CI/CD pipeline'ları. Ayna: verify_audit.md
verify-audit alt-komutu, EU AI Act Madde 12 kayıt-tutma kapsamında üretilen bir ForgeLM audit_log.jsonl dosyasının SHA-256 hash zincirini doğrular. Operatörün FORGELM_AUDIT_SECRET'i ortamda set edilmişse satır başına HMAC etiketleri de doğrulanır. CLI, kütüphane giriş noktası forgelm.compliance.verify_audit_log etrafında ince bir dispatcher'dır (sonuç: forgelm.compliance.VerifyResult).
forgelm verify-audit [--hmac-secret-env VAR] [--require-hmac]
[-q] [--log-level {DEBUG,INFO,WARNING,ERROR}]
log_path
log_path (pozisyonel, zorunlu) — audit_log.jsonl yolu. Genesis manifest sidecar'ı (<log_path>.manifest.json) varsa otomatik bulunur ve çapraz kontrol edilir.
| Bayrak | Varsayılan | Açıklama |
|---|---|---|
--hmac-secret-env VAR |
FORGELM_AUDIT_SECRET |
Log yazımı sırasında kullanılan HMAC sırrını taşıyan ortam değişkeninin adı. Değişken set edildiğinde satır başına _hmac etiketleri doğrulanır; aksi halde sadece SHA-256 zinciri kontrol edilir. |
--require-hmac |
False |
Sıkı mod. Yapılandırılmış env var set değilse 1 ile çıkar (bir pre-flight seçenek hatası — doğrulayıcı hiç çalışmadı). Herhangi bir satırda _hmac alanı eksikse 6 ile çıkar (log okundu ve sıkı-mod doğrulamasını geçemedi — bir zincir-bütünlüğü arızası). Her kaydın HMAC ile imzalı olması gereken regüle CI pipeline'larında kullanın. |
-q, --quiet |
kapalı | INFO loglarını bastırır. |
--log-level {DEBUG,INFO,WARNING,ERROR} |
INFO |
Log ayrıntı seviyesi. |
-h, --help |
— | Argparse yardımını gösterir ve çıkar. |
| Kod | Anlam |
|---|---|
0 |
EXIT_SUCCESS — SHA-256 zinciri (ve doğrulandığında HMAC etiketleri) uçtan uca bütün. |
1 |
EXIT_CONFIG_ERROR — karşılaştırılabilecek hiçbir şey yoktu: --require-hmac setken yapılandırılmış env var unset, log yolu yok / bir dizin / çağıran-girdisi nedeniyle okunamıyor, veya log var ama sıfır kayıt tutuyor ve ne tutması gerektiğini sabitleyen bir genesis manifest yok. Bir bütünlük kararı yok. |
2 |
EXIT_TRAINING_ERROR — log var ama okunamadı (izin reddi, okuma-ortası G/Ç hatası). Tekrar denenebilir. |
6 |
EXIT_INTEGRITY_FAILURE — log okundu ve zincir doğrulanmıyor: zincir kopması, HMAC uyuşmazlığı, genesis-manifest uyuşmazlığı, çözülemeyen bir satır, log içinde geçerli-olmayan UTF-8 baytları, veya (--require-hmac altında) _hmac alanı eksik bir satır. Bu tahrifat sinyalidir ve kodun var olma nedenidir — önceden kırık bir hash zinciri ile yanlış yazılmış bir yol ikisi de 1 ile çıkardı, bu yüzden bir CI pipeline'ı bir güvenlik olayını operatör yazım hatasından ayırt edemezdi. |
Kodlar dispatcher tarafından _run_verify_audit_cmd (forgelm/cli/subcommands/_verify_audit.py) satırlarından emit edilir; bu, dosyayı önce prob'lar (_probe_log_readable) — böylece bir okuma hatası doğrulayıcı çalışmadan önce 1 veya 2'ye yönlenir; bu prob başarılı olduktan sonra kütüphane giriş noktasının döndürdüğü her valid=False gerçek bir bütünlük kararıdır (6). forgelm.compliance.verify_audit_log'un kendisi zincir-seviyesi arızalar için asla exception fırlatmaz; her zaman bir VerifyResult(valid=False, reason=...) döndürür ve yalnızca doğrulama sırasında okunamaz hâle gelen bir dosya için OSError fırlatır.
forgelm verify-audit salt-okunur bir doğrulayıcıdır ve audit_log.jsonl'a hiçbir kayıt eklemez. Yalnızca zinciri inceler. Doğrulanan log'un içinde görünen event'ler audit_event_catalog-tr.md'de kataloglanmıştır (verify-audit'in yürüdüğü _hmac, prev_hash ve run_id alanları için Ortak zarf satırına bakın).
$ forgelm verify-audit checkpoints/run/compliance/audit_log.jsonl
OK: 87 entries verified$ export FORGELM_AUDIT_SECRET="$(cat /run/secrets/audit-secret)"
$ forgelm verify-audit checkpoints/run/compliance/audit_log.jsonl
OK: 87 entries verified (HMAC validated)$ FORGELM_AUDIT_SECRET="$(cat /run/secrets/audit-secret)" \
forgelm verify-audit --require-hmac \
checkpoints/run/compliance/audit_log.jsonl
OK: 87 entries verified (HMAC validated)
$ echo $?
0--require-hmac altında sır env var'ı set değilse komut 1 ile çıkar:
$ forgelm verify-audit --require-hmac checkpoints/run/compliance/audit_log.jsonl
ERROR: --require-hmac specified but $FORGELM_AUDIT_SECRET is unset.
$ echo $?
1Her kiracının kendi sır değişkenini taşıdığı çok-kiracılı ortamlar için:
$ TENANT_ACME_AUDIT_KEY="$(cat /run/secrets/acme-audit)" \
forgelm verify-audit --hmac-secret-env TENANT_ACME_AUDIT_KEY \
artifacts/acme/audit_log.jsonl
OK: 412 entries verified (HMAC validated)$ forgelm verify-audit checkpoints/run/compliance/audit_log.jsonl
FAIL at line 53: prev_hash mismatch — chain break suggests entry was inserted, removed, or reordered
$ echo $?
6Var olan ama sıfır kayıt tutan bir log dosyası asla doğrulanmaz. Hangi kodu alacağınız, log'un ne içermesi gerektiğini söyleyen bir genesis manifest'in hayatta kalıp kalmadığına bağlıdır.
Manifest yok — çıkış 1. Sıfır kaydı karşılaştıracak hiçbir şey mevcut değildir; bu yüzden doğrulayıcı silinmiş bir log ile yanlış yazılmış bir yolu birbirinden ayıramaz:
$ forgelm verify-audit checkpoints/run/compliance/audit_log.jsonl
FAIL: audit log at 'checkpoints/run/compliance/audit_log.jsonl' exists but contains 0 entries,
and there is no genesis manifest at
'checkpoints/run/compliance/audit_log.jsonl.manifest.json' to say what it should contain —
nothing could be verified. …
$ echo $?
1Manifest bir ilk kayıt sabitliyor — çıkış 6. Manifest bir referans noktasıdır; yani bir karşılaştırma yapıldı ve başarısız oldu. Bu, sıfıra-truncate sinyalidir:
$ forgelm verify-audit checkpoints/run/compliance/audit_log.jsonl
FAIL at line 1: genesis manifest pins a first entry (first_entry_sha256='…', run_id='…')
but the audit log is empty — log truncated to zero entries
$ echo $?
6Var olan ama bozuk, ya da sabitlenmiş alanları eksik bir manifest de 6 ile çıkar — sidecar'ı bozmak, truncate koruyucusunu etkisizleştirmenin silmekten daha sessiz bir yolu olmamalıdır.
Boş bir log asla meşru bir taze-çalıştırma durumu değildir. AuditLogger çıktı dizinini oluşturur ama log dosyasını oluşturmaz; dosya ve manifest'i ilk event tarafından birlikte yazılır. Hiç kullanılmamış bir log bu nedenle yoktur (çıkış 1, audit log not found), boş değil — dolayısıyla boş olan bir log truncate edilmiş, gövdesi rotate ile taşınmış, yanlışlıkla touchlanmış ya da yanlış bir yoldur.
audit_event_catalog-tr.md— bu komutun doğruladığı log'un içinde görünen event'ler.verify_annex_iv_subcommand.md— Annex IV teknik dokümantasyon artifact'ı için kardeş doğrulayıcı.verify_gguf_subcommand.md— export edilmiş GGUF model dosyaları için kardeş doğrulayıcı.- Audit Log kullanım kılavuzu sayfası — log'un kendisine dair operatör-odaklı kılavuz.
forgelm.compliance.verify_audit_log— entegratörlerin CLI'dan geçmeden doğrudan çağırdığı kütüphane giriş noktası.