Manual Kebijakan Akses dan Filter
Ini adalah manual untuk pengguna dan administrator yang disebut dalam TOR ("Dokumentasi Pengguna: Access Policy and Filter Manual"). Manual ini membahas model akses dan Policy Filter secara bersamaan, serta menjelaskan hubungan keduanya, pengalaman pengguna, dan hal-hal yang dilihat serta dilakukan administrator. Untuk detail internal tentang apa yang ditangkap filter, lihat Dokumentasi Filter Policy.
Dua lapisan independen
Platform melindungi jawaban query dengan dua lapisan yang ortogonal dan
keduanya selalu aktif untuk /query dan /query/stream:
| Lapisan | Pertanyaan yang dijawab | Berlaku untuk |
|---|---|---|
| Kontrol akses (RBAC + ABAC) | Bolehkah pengguna ini melihat dokumen ini / menggunakan kemampuan ini? | Request dan korpus yang diambil |
| Government Policy Guard (Policy Filter) | Apakah jawaban yang dihasilkan ini aman menurut kebijakan untuk dikirim? | Output jawaban query |
Kontrol akses menentukan apa yang dapat dijangkau pengguna; Policy Guard menentukan apakah jawaban yang dihasilkan boleh dikirim. Keduanya ditegakkan pada titik yang berbeda dan tidak saling menggantikan — jawaban yang sepenuhnya dibangun dari dokumen yang berhak dilihat pengguna tetap melewati guard sebelum dikembalikan.
Model akses
Akses menggunakan RBAC + ABAC (ADR-0001; lihat Keamanan dan Tata Kelola). Peran yang digunakan adalah:
| Peran | Cakupan |
|---|---|
admin | Administrasi sistem, manajemen pengguna/peran, konfigurasi ingestion, konfigurasi kebijakan |
operator | Menjalankan ingestion, memantau pipeline, melihat dashboard |
user | Mengajukan query ke chatbot, melihat riwayat percakapan sendiri |
Atribut ABAC — departemen dan klasifikasi dokumen — memperinci RBAC untuk visibilitas tingkat dokumen. Atribut ini menentukan chunk mana yang dapat diambil oleh query, dan dengan demikian menentukan grounding yang menjadi dasar jawaban; atribut ini tidak mengubah perilaku Policy Guard, yang identik untuk setiap peran.
Pengalaman pengguna
- Pengguna mengajukan query ke chatbot dan menerima jawaban berbasis sumber yang dilengkapi sitasi.
- Jika Policy Guard memblokir jawaban, pengguna menerima pesan penolakan tetap
alih-alih teks yang dihasilkan: "Saya tidak dapat memberikan respons tersebut
karena melanggar Government Policy Guard", dengan sitasi yang ditambahkan
jika ada chunk fallback berbasis sumber (
src/aceh_rag/policy.py:96-121). - Penolakan dilaporkan sebagai respons lengkap, bukan draf terpotong, sehingga pengguna tidak diarahkan untuk "mencoba lagi dengan lebih banyak token" ketika terjadi pemblokiran kebijakan.
- Output yang melanggar tidak pernah ditampilkan dan tidak pernah disimpan.
Pada jalur chat, teks jawaban yang diblokir diganti dengan penolakan sebelum
pesan asisten disimpan (
src/aceh_rag/services.py:1185-1200, 1229), sehingga generasi yang melanggar tidak bertahan dalam riwayat percakapan.
Guard tidak dapat dinonaktifkan untuk query, pengguna, atau peran mana pun
(src/aceh_rag/policy.py:5). Tidak ada allowlist per pengguna yang dapat
melewati guard.
Apa yang dilihat administrator
Keputusan guard untuk jawaban chat yang tersimpan ditulis ke audit log — baik untuk jawaban yang diizinkan maupun yang diblokir, sehingga "diizinkan" juga merupakan bukti, bukan sekadar ketiadaan catatan. Pengecualian persistensi timeout mengikuti ADR-0041. Administrator yang meninjau jejak audit melihat, untuk setiap jawaban yang tersimpan:
- tindakan (
allowedataublocked), - versi classifier yang mengambil keputusan (
deterministic-rules-v2), - kategori kebijakan yang terpicu (
sara_inflammatory,jailbreak) (src/aceh_rag/services.py:1277-1289).
Pada jalur chat, field yang sama juga dilampirkan ke metadata pesan asisten di
bawah policy_guard (src/aceh_rag/services.py:1270-1274). Primitif tanpa sumber
POST /generate berada di luar kontrol ini: endpoint tersebut tidak menjalankan
guard dan tidak menulis baris audit kebijakan (ADR-0050).
Temuan kebijakan sengaja tidak membawa teks yang cocok — field alasan mencatat
"protected-group reference within an incitement construction", bukan kalimat
yang melanggar (src/aceh_rag/policy.py:81-84). Baris audit dan log tidak boleh
memuat konten jawaban. Auditor melihat bahwa pemblokiran terjadi dan
kategori mana yang memicunya, bukan teks yang memicunya.
Apa yang dilakukan administrator
Cakupan peran admin mencakup konfigurasi kebijakan. Dalam praktiknya,
interaksi administrator dengan Policy Filter adalah:
- Membaca aturan. Seluruh guard terdiri dari aturan kata Bahasa Indonesia,
Inggris, dan Aceh yang dapat diperiksa dalam satu file (
src/aceh_rag/policy.py) — tidak ada model opak yang perlu diinterogasi. - Mengedit permukaan kustomisasi — daftar leksikon dan konstruksi yang didokumentasikan dalam Filter Policy → Permukaan kustomisasi aturan.
- Membuktikan perubahan dengan menjalankan
make eval-slice SLICE=policy, yang melaporkan tingkat tangkapan dan penolakan keliru serta gagal pada regresi yang tidak terdokumentasi. Perubahan aturan tidak pernah dirilis hanya berdasarkan penilaian. - Memantau audit log untuk melihat keseimbangan keputusan
blockedversusallowed, serta kategori yang terpicu secara tidak terduga.
Loop perubahan lengkap — pengelakan → kasus korpus → aturan → gate → rilis — adalah proses Pembaruan Policy Berkala.
Dua deliverable Policy Filter dalam TOR adalah aktivitas delivery klien yang dimiliki manusia, bukan tugas yang diselesaikan sendiri oleh tim engineering atau manual ini:
- sesi kerja kustomisasi aturan bersama pemangku kepentingan Pemprov Aceh, tempat batas antara memblokir bahaya dan menolak pekerjaan yang sah disepakati menggunakan tingkat yang terukur, dan
- pelatihan administrator keamanan.
Keduanya disebutkan di sini agar pembaca mengetahui keberadaannya dan pihak yang bertanggung jawab; materi di atas adalah referensi yang digunakan oleh aktivitas-aktivitas tersebut.
Terkait
- Dokumentasi Filter Policy — apa yang ditangkap guard dan apa yang sengaja tidak ditangkapnya.
- Pembaruan Policy Berkala — bagaimana aturan berubah tanpa mengalami regresi.
- Keamanan dan Tata Kelola — kedaulatan data, audit log, dan tata kelola OCR.