Lewati ke konten utama

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:

LapisanPertanyaan yang dijawabBerlaku 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:

PeranCakupan
adminAdministrasi sistem, manajemen pengguna/peran, konfigurasi ingestion, konfigurasi kebijakan
operatorMenjalankan ingestion, memantau pipeline, melihat dashboard
userMengajukan 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 (allowed atau blocked),
  • 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).

Hal yang TIDAK dilihat administrator dalam jejak audit

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:

  1. 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.
  2. Mengedit permukaan kustomisasi — daftar leksikon dan konstruksi yang didokumentasikan dalam Filter Policy → Permukaan kustomisasi aturan.
  3. 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.
  4. Memantau audit log untuk melihat keseimbangan keputusan blocked versus allowed, serta kategori yang terpicu secara tidak terduga.

Loop perubahan lengkap — pengelakan → kasus korpus → aturan → gate → rilis — adalah proses Pembaruan Policy Berkala.

Deliverable yang dimiliki manusia

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​