Multi-Tenancy Adalah Masalah Sebenar Platform Ejen
Kebanyakan demo ejen berfungsi kerana ia hanya mempunyai seorang pengguna.
Seorang pengguna bermakna satu storan memori, satu set alatan, dan satu laluan lancar (happy path). Tiada apa yang perlu diasingkan.
Apabila anda menukarkan demo kepada sebuah platform, bahagian yang sukar bukanlah prompt. Bahagian yang sukar ialah pengasingan (isolation).
Bolehkah setiap pertanyaan pangkalan data, kunci cache, aliran (stream), panggilan alatan, dan pencarian memori membuktikan kepada penyewa (tenant) mana ia tergolong? Jika satu pun tidak dapat, anda bakal menghadapi kebocoran data.
Banyak pasukan memberi tumpuan kepada pilihan model atau kualiti memori. Mereka terlupa untuk bertanya sama ada data dan kos satu penyewa terasing daripada penyewa yang lain.
Pengasingan bukanlah tugasan yang anda tambah di penghujung. Ia adalah bentuk platform anda.
Untuk membina platform ejen yang sebenar, cari mekanik berikut:
- Konteks permintaan bertipe (typed request context) yang dibawa ke dalam graf.
- Capaian berskope (scoped access) pada setiap sempadan.
- Ujian yang mengesan kebocoran penyewa sebelum ia menjadi insiden.
Ejen pengguna tunggal boleh kelihatan mengagumkan walaupun mengabaikan keselamatan. Ia mungkin memanggil alatan carian tanpa penapis penyewa atau menyimpan sejarah di bawah ID yang ringkas. Ini berfungsi untuk demo, tetapi ia gagal untuk sebuah platform.
Dalam sebuah platform, ejen mesti membawa sempadan melalui setiap langkah. Jika ejen melepaskan sempadan tersebut, ia mungkin memberikan jawapan yang sempurna kepada orang yang salah. Itu adalah satu kegagalan.
Setiap operasi yang menyentuh data, alatan, atau memori mesti diskopkan mengikut penyewa sebelum model bertindak. Ini adalah keselamatan backend standard yang diaplikasikan pada runtime ejen.
Langkah praktikal untuk seni bina anda:
- Gunakan satu objek
RequestContextdan bukannya parameter yang berselerak. - Pastikan setiap sempadan sama ada menerima konteks atau gagal.
- Tapis katalog alatan sebelum model dapat melihatnya.
- Gunakan penapisan vektor sebagai bahagian mandatori dalam pengesahan (authorization).
- Pastikan jejak (traces) dan log menggunakan tag penyewa yang kabur (opaque) dan bukannya data sensitif.
Jangan minta model untuk mengingati penyewa bagi pihak anda. Model boleh membuat penaakulan ke atas data, tetapi ia tidak sepatutnya menentukan siapa pemilik data tersebut.
Bina laluan berskope sebagai laluan yang paling mudah. Jika anda membina platform berasaskan model pengguna tunggal, anda akan menghadapi keperluan penulisan semula secara menyeluruh pada hari organisasi sebenar pertama menyertai anda.
Mulakan dengan menjejak satu aliran ejen. Ikuti konteks penyewa daripada permintaan HTTP sehingga ke panggilan alatan terakhir. Petakan setiap titik di mana konteks tersebut disalin atau digugurkan. Peta itulah tempat risiko sebenar anda berada.
Sumber: https://dev.to/luffy_14/multi-tenancy-is-the-real-agent-platform-problem-1dh2
Komuniti pembelajaran pilihan: https://t.me/GyaanSetuAi
