Agent AI bisa menemukan dokumen, tetapi belum tentu boleh membacanya

2026-10-22 · Agus Ramdan

Seorang staf penjualan meminta agent AI merangkum riwayat kerja sama pelanggan. Jawabannya rapi, lengkap dengan kutipan dokumen. Masalahnya, salah satu kutipan berasal dari catatan negosiasi yang hanya boleh dibaca pemilik usaha. Sistem menemukan informasi yang relevan, lalu memberikannya kepada orang yang tidak berhak.

Contoh itu hipotetis, tetapi persoalan desainnya konkret. Ketika perusahaan menghubungkan AI dengan arsip bersama, kualitas pencarian dan hak membaca harus diperiksa terpisah. Jawaban yang akurat tetap bisa menjadi kebocoran data.

RAG, atau retrieval-augmented generation, mengambil informasi dari sumber lain untuk membantu model menyusun jawaban. Dalam aplikasi bisnis, sumber itu bisa berupa panduan layanan, kontrak, atau catatan pelanggan. Menurut saya, batas awalnya sederhana: agent hanya boleh menerima dokumen yang memang boleh dibaca pengguna untuk pekerjaan tersebut. Menuliskan larangan membocorkan rahasia di prompt saja tidak cukup.

Periksa izin sebelum dokumen masuk ke konteks

Bayangkan usaha jasa dengan dua perusahaan pelanggan. Masing-masing memiliki kontrak, daftar harga khusus, dan catatan dukungan. Keduanya mungkin memakai istilah produk yang sama. Mesin pencari berbasis kemiripan dapat menganggap dokumen pelanggan lain sangat relevan, meskipun dokumen itu tidak boleh digunakan.

Karena itu, alur yang saya sarankan adalah memverifikasi pengguna, menentukan ruang data yang boleh diakses, lalu melakukan pencarian dengan pembatasan tersebut. Hanya hasil yang lolos pemeriksaan izin yang diteruskan ke model. Jika mesin pencari menghasilkan kandidat lebih dulu, lapisan aplikasi tetap harus menyaringnya sebelum konten dikirim ke model atau komponen lain yang tidak berwenang.

Mengambil seluruh dokumen lalu meminta model mengabaikan bagian rahasia menempatkan kontrol pada tahap yang terlambat. Informasi itu sudah masuk ke konteks pemrosesan. Menyembunyikan kutipan dari tampilan akhir juga tidak membatalkan akses yang telanjur terjadi.

Identitas pengguna tidak berasal dari kalimat percakapan

Pernyataan “saya pemilik perusahaan” di kolom chat bukan bukti identitas. Aplikasi perlu mengambil identitas dari sesi yang telah diautentikasi dan membaca hak akses dari sumber yang dipercaya. Permintaan pengguna boleh menjelaskan kebutuhan, tetapi tidak boleh menentukan sendiri keanggotaan grup atau perusahaan yang dibukakan aksesnya.

Dokumentasi Microsoft tentang security trimming di Azure AI Search memberi batas yang berguna. Pola filter keamanan menggunakan identitas berupa string untuk menyertakan atau mengecualikan dokumen. String tersebut sendiri bukan mekanisme autentikasi atau otorisasi. Aplikasi harus memastikan identitas dan daftar hak yang dipakai filter memang benar.

Implikasinya, jangan menyerahkan penyusunan batas akses sepenuhnya kepada model. Backend sebaiknya menambahkan pembatas wajib dari identitas terverifikasi, terlepas dari pertanyaan yang disusun agent. Jika identitas atau ruang akses tidak tersedia, hentikan pencarian sensitif dan minta pengguna masuk melalui alur resmi, bukan memperluas pencarian agar jawaban tetap muncul.

Potongan dokumen harus membawa izin yang sama

Banyak sistem memecah dokumen panjang menjadi potongan kecil agar pencarian lebih tepat. Pembatasan di tingkat berkas mudah hilang jika proses pemecahan hanya menyimpan teks dan representasi pencariannya.

Setiap potongan perlu membawa informasi yang cukup untuk memeriksa hak aksesnya: asal dokumen, ruang pelanggan, dan aturan pembaca yang berlaku. Judul, ringkasan otomatis, serta lampiran juga perlu diperhatikan. Judul seperti “Rencana diskon khusus pelanggan” bisa mengungkap informasi meskipun isi berkas disembunyikan.

Sebagai rekomendasi desain, tetapkan perlakuan yang aman ketika metadata izin tidak lengkap. Dokumen tanpa informasi hak baca jangan otomatis dianggap terbuka. Sediakan tempat pemeriksaan terpisah agar staf dapat memperbaiki metadata tanpa membiarkan agent memakainya lebih dulu.

Jangan mengartikan opsi untuk tidak menampilkan sebuah field sebagai perlindungan seluruh dokumen. Dokumentasi Microsoft menegaskan bahwa pengaturan field agar tidak dikembalikan dalam hasil bukan mekanisme keamanan tingkat field; pola yang dijelaskan tetap memerlukan filter keamanan pada setiap kueri.

Kontrol database membantu, dengan batas yang perlu dipahami

Untuk data terstruktur, pembatasan dapat ditempatkan lebih dekat ke penyimpanan. PostgreSQL mendukung row-level security untuk membatasi baris yang dapat dibaca atau diubah melalui kebijakan. Dokumentasinya menjelaskan bahwa ketika row security diaktifkan tetapi tidak ada kebijakan yang mengizinkan, akses normal menggunakan prinsip default-deny.

Namun, memasang kebijakan belum membuktikan semua jalur aplikasi terlindungi. Superuser dan role dengan atribut BYPASSRLS melewati mekanisme tersebut. Pemilik tabel biasanya juga melewatinya, kecuali diberi pengaturan yang sesuai. Karena itu, pengujian perlu memakai role yang benar-benar digunakan aplikasi, bukan hanya akun administrator saat menyiapkan contoh.

Batas lainnya: kebijakan di database asal tidak otomatis ikut melindungi salinan teks yang sudah dipindahkan ke indeks pencarian terpisah. Tim perlu memeriksa izin di jalur pengindeksan dan pengambilan dokumen juga. Pilih kontrol sesuai tempat data dibaca; jangan menganggap satu fitur database menutup seluruh perjalanan informasi.

Hak akses berubah setelah dokumen diindeks

Seorang staf bisa berpindah divisi. Kontrak bisa menjadi lebih terbatas. Pelanggan bisa meminta akun tertentu ditutup. Indeks yang hanya menyalin izin saat unggahan pertama akan tertinggal dari perubahan tersebut.

Sebelum mengaktifkan pencarian, tentukan cara memperbarui izin serta batas keterlambatan yang diterima. Untuk dokumen yang sangat sensitif, pertimbangkan pemeriksaan tambahan terhadap sumber otorisasi yang mutakhir sebelum mengirim isinya ke model. Ini rekomendasi arsitektur, bukan jaminan bawaan setiap produk RAG.

Cache dan riwayat percakapan juga termasuk ruang pemeriksaan. Jawaban yang pernah dibuat untuk pemilik tidak boleh diberikan kepada staf hanya karena pertanyaannya sama. Pemisahan cache perlu mempertimbangkan ruang akses, bukan teks pertanyaan saja. Saat izin dicabut, tentukan pula perlakuan terhadap hasil tersimpan dan percakapan yang masih aktif. Pembaruan indeks saja belum menyelesaikan semuanya.

Uji akses yang ditolak, bukan hanya jawaban yang berhasil

Mulailah dengan dokumen sintetis untuk dua pelanggan rekaan dan beberapa peran staf. Beri setiap dokumen frasa penanda yang berbeda. Cara ini membantu tim melihat apakah konten terlarang masuk ke hasil pencarian, konteks model, atau jawaban akhir tanpa menggunakan data pelanggan sebenarnya.

Kasus pengujian sebaiknya mencakup:

Nilai hasil di beberapa titik, bukan hanya pada kalimat jawaban. Agent mungkin tidak mengutip dokumen terlarang, tetapi isi dokumen sudah telanjur dikirim ke model. Catatan pengujian perlu menunjukkan hasil retrieval dan konteks yang diteruskan, dengan perlindungan akses untuk catatan itu sendiri.

Untuk usaha kecil, cakupan awal bisa dibatasi pada panduan layanan yang memang boleh dibaca seluruh staf. Tambahkan kontrak dan arsip pelanggan setelah pemisahan akses terbukti berjalan. Lebih baik staf mendapat penjelasan bahwa dokumen belum tersedia baginya daripada menerima jawaban lengkap dari arsip orang lain.

Sumber

Contoh usaha, urutan implementasi, dan skenario pengujian dalam artikel ini merupakan rekomendasi desain, bukan laporan penerapan pada suatu perusahaan.