Skip to content
This repository was archived by the owner on Aug 11, 2026. It is now read-only.
This repository was archived by the owner on Aug 11, 2026. It is now read-only.

Peningkatan: aktivasi sistem log & manajemennya (correlation ID end-to-end, retensi/purge audit log, extension point observability) #447

Description

@ahliweb

Konteks

Structured logger (src/lib/logging/logger.ts, Issue 10.1/#403) dan audit trail (awcms_mini_audit_events, sama) sudah ada dan sudah diperkuat keamanannya (redaksi, RLS, GET /logs/audit dengan keyset pagination sejak Issue #435). Tapi tiga gap operasional tercatat eksplisit sebagai backlog di src/modules/logging/README.md §Belum tersedia dan docs/awcms-mini/20_threat_model_security_architecture.md §Matrix kepatuhan (A.8.16), belum pernah jadi issue tersendiri:

  1. Correlation ID (X-Correlation-ID) di-set middleware untuk semua request, tapi hanya diwiring end-to-end ke ApiMeta.correlationId pada satu endpoint (GET /logs/audit, sebagai demonstrasi Issue 10.1) — endpoint lain tidak menyertakannya di body respons.
  2. Tidak ada retensi/purge untuk awcms_mini_audit_events — tabel append-only tumbuh tanpa batas, tidak ada kebijakan atau mekanisme pembersihan (beda dari awcms_mini_idempotency_keys yang doc 04 sudah tetapkan retensi 7–30 hari).
  3. Tidak ada extension point bagi aplikasi turunan/deployment untuk memasang consumer log/audit (alerting, export, SIEM) — Issue Peningkatan: security hardening berbasis standar (OWASP Top 10, ASVS, ISO 27001) #437 secara eksplisit men-scope "monitoring/alerting terpusat" (ISO 27001 A.8.16) di luar base generik ini, tapi base ini belum menyediakan titik pemasangan untuk itu sama sekali.

Tujuan

Mengaktifkan sistem log yang sudah ada menjadi kemampuan operasional yang benar-benar bisa dikelola (correlation ID lengkap, retensi eksplisit, titik ekstensi observability) — bukan membangun SIEM/dashboard monitoring baru (itu tetap di luar cakupan sesuai batas doc 20).

Scope

  • Correlation ID full-propagation: wiring ApiMeta.correlationId ke seluruh endpoint publik (bukan hanya satu demo), konsisten dengan header X-Correlation-ID yang sudah ada di semua respons sejak Issue 10.1.
  • Retensi/purge awcms_mini_audit_events: kebijakan retensi eksplisit (durasi, didokumentasikan di doc 04 sejajar idempotency_keys) + mekanisme purge (skrip CLI atau job terjadwal, bukan endpoint publik — pola sama seperti dispatcher Issue Peningkatan: kerasan backend & integrasi eksternal (outbox, resiliensi, observability) #436), tunduk pada aturan retention/legal doc 04 (physical delete hanya untuk retensi berizin, tidak boleh memutus FK). Aksi purge itu sendiri harus terekam sebagai audit event (tidak boleh purge diam-diam).
  • Extension point observability: interface/hook opsional (mis. LogSink/AuditExportHook) supaya aplikasi turunan bisa memasang consumer tanpa mengubah kode inti — default no-op, tidak menambah dependency baru, tidak membangun SIEM nyata.
  • Verifikasi LOG_LEVEL benar-benar dihormati di lingkungan produksi (regresi-check, bukan fitur baru).
  • Secara eksplisit TIDAK membangun rotasi file log di dalam aplikasi — console.log/stdout tetap sumber kebenaran; capture/rotate adalah tanggung jawab lapisan deployment (docker logging driver/systemd journal, doc 18). Kalau praktik ini belum terdokumentasi jelas, tambahkan sebagai dokumentasi, bukan kode.

Definition of Done

  • ApiMeta.correlationId konsisten muncul di respons seluruh endpoint publik yang relevan, bukan hanya satu demo endpoint.
  • Kebijakan + mekanisme retensi/purge awcms_mini_audit_events terimplementasi, diuji (termasuk skenario purge nyata terhadap Postgres), dan aksi purge-nya sendiri diaudit.
  • Extension point observability tersedia dan didokumentasikan (default no-op, sesuai ADR-0006 "provider eksternal opsional"), dengan minimal satu contoh konsumen di test/dokumentasi.
  • Migration berurutan bila ada perubahan skema (kolom retensi/permission purge baru — TIDAK dibutuhkan, lihat komentar penutup); OpenAPI diperbarui bila ada endpoint berubah (tidak ada endpoint berubah); bun run check hijau; integration suite penuh terhadap Postgres nyata hijau; diverifikasi live.

Referensi

Doc 10 (audit helper, logger redaction), doc 16 (data access/integration), doc 20 §Matrix kepatuhan OWASP/ASVS/ISO 27001 (baris A.8.16, A.8.15), doc 04 (retensi/purge, klasifikasi data). Issue 10.1 (#403), Issue #435 (keyset pagination pada /logs/audit), Issue #436 (pola dispatcher internal, circuit breaker per-provider), Issue #437 (security hardening, batas scope A.8.16). Skill: awcms-mini-audit-log, awcms-mini-integration.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:loggingStructured logging, audit trailenhancementNew feature or requestpriority:p2Prioritas sedang - opsional/provider-dependentstatus:readyDependency selesai, siap dikerjakantype:featureFitur baru sesuai doc 06

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions