Memisahkan data pelanggan dalam aplikasi SaaS
Periksa batas antarorganisasi pelanggan pada API, database, cache, penyimpanan, antrean, ekspor, dan akses dukungan agar data tidak terbuka lintas pelanggan.
Di halaman ini
Identitas pelanggan harus diperiksa di server
Pada aplikasi multi-tenant, beberapa organisasi memakai layanan yang sama. Sistem perlu mengetahui organisasi mana yang boleh diakses oleh pengguna atau layanan pada setiap tindakan. Nilai pengenal pelanggan dari browser hanya merupakan pilihan yang diminta, bukan bukti hak akses.
Periksa identitas, keanggotaan, peran, dan kepemilikan objek di sisi server. Pengenal acak yang sulit ditebak tidak menggantikan pemeriksaan tersebut.
Batas data harus mengikuti seluruh alur
| Jalur | Hal yang sering terlupakan |
|---|---|
| Database | Kueri, pencarian, dan agregasi harus mengikuti batas organisasi yang sah |
| Cache | Kunci serta hasil tidak boleh tertukar antara pelanggan |
| Berkas | Unggahan, pratinjau, tautan unduhan, dan ekspor memerlukan pemeriksaan akses |
| Antrean | Pekerja memeriksa konteks tepercaya dan kewenangan saat menjalankan tugas |
| Dukungan/admin | Akses lintas pelanggan harus khusus, dibatasi, disetujui sesuai kebutuhan, dan dicatat |
Pemisahan dapat memakai arsitektur berbeda. Tidak semua sistem harus memiliki database terpisah, tetapi setiap jalur membutuhkan batas yang dapat ditegakkan dan diuji. Jika memakai kontrol tingkat baris, periksa peran database, koneksi yang digunakan ulang, dan jalur yang dapat melewati kontrolnya.
Uji dua organisasi dengan keadaan berbeda
Siapkan akun A dan B serta data uji masing-masing. Periksa daftar, detail, pencarian, perubahan, ekspor, dan berkas. Uji pula pengguna yang pindah organisasi, kehilangan peran, atau aksesnya dicabut ketika tugas masih berada dalam antrean.
Contoh fiktif: ekspor laporan dibuat setelah pengguna keluar dari organisasi. Pekerja tidak cukup mempercayai pengenal dalam pesan antrean; tindakan perlu mengikuti keputusan otorisasi yang sesuai saat dijalankan. Hasil tidak boleh tersedia melalui tautan publik tanpa batas.
Batasi dampak pada ketersediaan
Satu pelanggan juga dapat menghabiskan sumber daya bersama. Atur kuota atau batas yang relevan pada pekerjaan, koneksi, penyimpanan, dan permintaan. Pantau kegagalan lintas pelanggan tanpa memasukkan isi data pribadi ke log umum.
Simpan bukti pengujian
Gunakan matriks hak akses dan masukkan kasus penolakan ke pengujian regresi. Catat jalur yang belum diuji serta asumsi arsitektur. Temuan kebocoran memerlukan penanganan insiden, bukan hanya perubahan tampilan.
Panduan ini memperdalam keamanan API untuk SaaS; keberhasilan beberapa kasus uji tidak membuktikan seluruh aplikasi bebas kesalahan.
Pahami risiko di balik pemeriksaan
Baca Broken Access Control untuk memahami konsep dan contoh kegagalannya. Gunakan langkah di halaman ini untuk pekerjaan penerapan.
Sumber rujukan
- Multi-Tenant Security Cheat Sheet ↗OWASP Foundation; panduan teknis · Multi-Tenant Security: konteks tepercaya, database, cache, storage, antrean dan administrasi.
- Authorization Regression Testing Cheat Sheet ↗OWASP Foundation; panduan teknis · Pengujian otorisasi negatif dan regresi lintas tenant.
Baca naskah lengkap untuk melihat syarat dan pengecualiannya. Sesuaikan dengan layanan dan bidang usaha Anda.
Perlu membahas kebutuhan tim Anda?
Ceritakan sistem yang dikelola dan kebutuhan pengamanan tim Anda.
Konsultasikan kebutuhan Anda