AI Agents Memerlukan Sempadan, Bukan Kunci Induk
Memberikan ejen AI akses ke aplikasi anda melalui MCP adalah berisiko. Anda seolah-olah menyerahkan satu gugusan kunci dan berharap mereka hanya membuka pintu-pintu tertentu sahaja. Kepercayaan tersebut merupakan satu risiko keselamatan.
Apabila membina alatan MCP untuk aplikasi Laravel berbilang penyewa (multi-tenant), anda mesti menyelesaikan satu masalah: bagaimana untuk membenarkan ejen mengendalikan aplikasi tanpa mengakses data orang lain.
Setiap alatan MCP bertindak sebagai titik akhir (endpoint). Ejen memanggil alatan, dan pelayan anda menjalankan kod. Dalam tetapan berbilang penyewa, setiap alatan mesti menjawab dua soalan:
- Adakah anda dibenarkan untuk melakukan ini?
- Adakah anda dibenarkan untuk melakukannya di sini?
Jika anda mengabaikan perkara ini, anda akan mewujudkan lubang keselamatan.
Permintaan web menggunakan sesi (sessions) untuk mengendalikan berbilang penyewa. Alatan MCP menggunakan token. Tiada sesi dan tiada middleware untuk menetapkan konteks penyewa semasa. Jika anda bergantung pada skop global yang mencari "organisasi semasa" dalam sesi, ia tidak akan menemui apa-apa. Satu pertanyaan (query) yang sepatutnya dihadkan mungkin akan memulangkan setiap baris dalam pangkalan data anda.
Saya menggunakan empat peraturan ini untuk kekal selamat:
- Penapisan eksplisit: Jangan sesekali bergantung pada skop ambien di bawah pengesahan token. Gunakan satu trait tunggal untuk menapis mengikut organisasi setiap kali.
- Gunakan UUIDs: Jangan sesekali gunakan ID auto-increment. Gunakan pengenal pasti yang tidak boleh diteka supaya ejen tidak dapat meneka rekod lain.
- Gunakan semula kebenaran: Jangan cipta set kebenaran baharu untuk ejen. Gunakan rentetan keupayaan (ability strings) yang sama seperti yang digunakan oleh aplikasi web anda.
- Tandakan kesan sampingan: Gunakan anotasi untuk melabel alatan sebagai baca-sahaja (read-only) atau boleh-tulis (write-enabled).
Dengan menggunakan satu trait tunggal untuk carian organisasi, anda mewujudkan satu tempat untuk audit. Jika carian memulangkan null, alatan tersebut akan memberitahu ejen bahawa rekod tidak ditemui. Ejen tidak akan mendapat sebarang maklumat tentang penyewa lain.
Ini bukan masalah AI. Ini adalah masalah berbilang penyewa dan kebenaran (authorization). MCP memudahkan pendedahan aplikasi anda, jadi anda mesti berdisiplin tentang sempadan anda.
Seorang ejen sepatutnya melakukan tepat apa yang boleh dilakukan oleh manusia, dalam penyewa mereka sendiri, dan tidak lebih daripada itu.
Komuniti pembelajaran pilihan: https://t.me/GyaanSetuAi
