Non-Functional and Security Contract¶
π Overview¶
Kelengkapan diagnostik tunduk pada prioritas ketersediaan (availability) runtime Tomcat. Seluruh pekerjaan dibatasi (strictly bounded) dan Diagnostic Service melakukan degradasi terkontrol (graceful degradation) ketika sumber bukti atau kapasitas host tidak memadai.
π Batasan Non-Fungsional (Pilot Limits)¶
| Kontrol Parameter | Nilai Batas Pilot |
|---|---|
| Diagnostic Workers | 1 (single worker) |
| Kapasitas Antrean Pekerjaan | 50 item |
| Timeout Global Diagnostik | 60 detik |
| Batas Memori Container (Limit) | 256 MiB |
| Batas CPU Container (Limit) | 500 millicores |
| Target Memori Kondisi Idle | 64 MiB |
| Target CPU Kondisi Idle | 10 millicores |
| Batas Payload Request Webhook | 256 KiB |
| Batas Payload Ingest Rules API | 64 KiB |
| Input Log per Insiden | 500 baris / 512 KiB |
| Ringkasan Bukti per Insiden | 256 KiB |
| Target / Batas Keras Database SQLite | 100 MiB / 250 MiB |
Ketika CPU host melebihi 90%, memori yang tersedia kurang dari 512 MiB, atau sisa ruang filesystem di bawah 5%, pengambilan metrik dan log opsional dilewati (skipped). Service akan mengeluarkan hasil diagnosis parsial berbasis bukti yang ada (partial evidence-only result). Ambang batas menerapkan mekanisme jeda (cooldown/hysteresis) sebelum pekerjaan opsional dapat dilanjutkan kembali.
π Batasan Keamanan (Security Boundary)¶
- Webhook menggunakan enkripsi TLS ketat, autentikasi bearer token, jaringan internal khusus container, tanpa port host yang terbuka, batas ukuran 256 KiB, dan validasi skema Ajv.
- Rules API (
/api/v1/rules) bersifat strictly append-only yang ditegakkan oleh 5-Layer Ingestion Guard: autentikasi bearer timing-safe, validasi skema Ajv (rulepack-v1), deteksi tabrakan aturan (proteksi TD-01 s/d TD-08 & keunikan branch), batas payload 64 KiB, dan pemeriksaan keamanan Regex. - Metode mutasi (
PUT,DELETE,PATCH) pada Rules API dilarang keras dan menghasilkan respons405 Method Not Allowed. - Berkas secret dan sertifikat TLS disimpan di luar Git (non-Git storage) dan di-mount secara hanya-baca (read-only).
- Diagnostic Service tidak memiliki akses ke Podman socket host, host namespace, eksekusi command arbitrary, kontrol siklus hidup container lain, maupun pembacaan direktori di luar allowlist.
- Path bukti dan pemetaan target hanya bersumber dari konfigurasi allowlist lokal (
targets.json). - Mount direktori spool event collector dan log Tomcat berstatus hanya-baca (read-only).
- Seluruh label, anotasi, log, dan artefak yang tidak tepercaya disanitasi sebelum disimpan ke database, dicatat di log, atau dimasukkan ke notifikasi email.
- Lingkungan operasional tidak memuat runtime LLM lokal, database vektor, pengindeks log kontinu, message broker berat, maupun database yang dikelola terpisah.
π©Ί Health Check dan Metrik Operasional¶
- Liveness: Mengindikasikan bahwa proses Node.js masih berjalan dan responsif.
- Readiness: Mewajibkan konfigurasi valid, migrasi skema database berhasil, SQLite dapat ditulisi di bawah batas keras 250 MiB, serta kemampuan menerima pekerjaan baru secara tahan-uji. Ketiadaan sumber bukti opsional tidak menggagalkan status readiness.
- Metrik Prometheus: Mengekspos metrik event diterima/ditolak/duplikat, kedalaman antrean, durasi pengumpulan bukti, status hasil, sumber bukti yang tidak tersedia, status pengiriman notifikasi, ukuran database SQLite, siklus housekeeping, dan penolakan isolasi. Metrik tidak pernah mengekspos label sensitif atau konten rahasia.
π Status¶
Implemented & Verified in Runtime (tomcat-diagnostic-service v0.1.4 / devops-lab).
Seluruh batasan non-fungsional, alokasi resource (256 MiB RAM, 0.5 CPU), batas payload, isolasi rootless, 5-layer ingestion guard pada Rules API, penolakan mutasi 405, sanitasi bukti, serta probe liveness/readiness/metrics telah diimplementasikan 100% dan terverifikasi secara live pada lingkungan devops-lab (TN-008, TN-009, TN-010, TN-011, TN-015, TN-017, dan TN-018).
π Related Documentation¶
- Diagnostic MVP Index
- Alertmanager Webhook Contract
- Target and Evidence Contract
- Knowledge Base and AI Enrichment Architecture
- Runtime Configuration and Verification Contract
- TN-008 β Implement Secure Service and SMTP Delivery Boundaries
- TN-018 β Implement Strict Declarative Rulepack Engine
- TM-ADR-0010 β Non-Functional Boundaries and Capacity Shedding