Agen AI Membutuhkan Batasan, Bukan Kunci Utama
Memberikan akses agen AI ke aplikasi Anda melalui MCP sangat berisiko. Anda menyerahkan sebuah gantungan kunci dan berharap mereka hanya membuka pintu-pintu tertentu. Kepercayaan tersebut adalah risiko keamanan.
Saat membangun alat MCP untuk aplikasi Laravel multi-tenant, Anda harus menyelesaikan satu masalah: bagaimana membiarkan agen mengoperasikan aplikasi tanpa mengakses data orang lain.
Setiap alat MCP bertindak sebagai endpoint. Seorang agen memanggil sebuah alat, dan server Anda menjalankan kode. Dalam pengaturan multi-tenant, setiap alat harus menjawab dua pertanyaan:
- Apakah Anda diizinkan untuk melakukan ini?
- Apakah Anda diizinkan untuk melakukannya di sini?
Jika Anda melewatkan hal ini, Anda menciptakan celah keamanan.
Permintaan web menggunakan sesi untuk menangani multi-tenancy. Alat MCP menggunakan token. Tidak ada sesi dan tidak ada middleware untuk mengatur konteks tenant saat ini. Jika Anda mengandalkan global scope yang mencari "org saat ini" dalam sebuah sesi, mereka tidak akan menemukan apa pun. Sebuah query yang seharusnya dibatasi mungkin akan mengembalikan setiap baris dalam database Anda.
Saya menggunakan empat aturan ini agar tetap aman:
- Explicit filtering: Jangan pernah mengandalkan ambient scope di bawah autentikasi token. Gunakan satu trait tunggal untuk memfilter berdasarkan organisasi setiap saat.
- Use UUIDs: Jangan pernah menggunakan ID auto-increment. Gunakan pengenal yang tidak dapat ditebak agar agen tidak dapat menebak record lainnya.
- Reuse permissions: Jangan membuat set izin baru untuk agen. Gunakan string kemampuan (ability strings) yang sama dengan yang digunakan aplikasi web Anda.
- Mark side effects: Gunakan anotasi untuk melabeli alat sebagai read-only atau write-enabled.
Dengan menggunakan satu trait tunggal untuk pencarian organisasi, Anda menciptakan satu tempat untuk audit. Jika pencarian mengembalikan null, alat tersebut akan memberi tahu agen bahwa record tidak ditemukan. Agen tidak akan mendapatkan informasi tentang tenant lainnya.
Ini bukan masalah AI. Ini adalah masalah multi-tenancy dan otorisasi. MCP memudahkan Anda untuk mengekspos aplikasi Anda, jadi Anda harus disiplin terhadap batasan Anda.
Seorang agen harus melakukan tepat apa yang dapat dilakukan manusia, di dalam tenant mereka sendiri, dan tidak lebih.
Optional learning community: https://t.me/GyaanSetuAi
