Poin utama
- Konteks tenant harus eksplisit dan divalidasi di setiap batasan eksekusi.
- Otorisasi ada di operasi domain, bukan hanya route middleware.
- Antrian, cache, ekspor, log, dan alat dukungan adalah bagian dari model isolasi.
- Uji jalur penolakan lintas tenant secara berkelanjutan.
Multi-tenancy adalah arsitektur otorisasi
Kolom tenant_id berguna, tetapi bukan strategi isolasi. Permintaan mengalir melalui browser, API, layanan, antrian, cache, object storage, ekspor, dan alur kerja dukungan. Setiap batasan memerlukan identitas tenant yang jelas dan aturan tentang apa yang boleh melintasinya.
Default paling aman adalah menurunkan konteks tenant dari keanggotaan yang diautentikasi dan routing sisi server—bukan dari identifier arbitrary yang diterima dari klien.
Pilih isolasi sesuai konsekuensi
Tabel bersama, skema terpisah, dan database terpisah menawarkan properti operasional dan isolasi yang berbeda. Pilihan yang benar bergantung pada skala, kustomisasi, ekspektasi regulasi, risiko noisy-neighbor, kebutuhan backup dan restore, serta kapasitas operasional.
Model hibrida umum: sebagian besar tenant berbagi skema yang terindeks baik sementara workload tertentu menerima pemisahan fisik yang lebih kuat. Aplikasi harus menyembunyikan penempatan itu di balik repository atau layanan yang stabil.
Pekerjaan latar belakang adalah kegagalan isolasi yang umum
Setiap job harus membawa konteks tenant dan aktor yang immutable, memvalidasinya lagi selama eksekusi, dan menulis output ke lokasi yang dicakup tenant. Kunci cache generik, direktori sementara yang digunakan kembali, dan nama file ekspor yang tidak dicakup dapat melewati otorisasi API yang sebenarnya telah hati-hati.
- Kunci cache dan object storage dengan prefix tenant
- Kontrol rate dan concurrency per tenant jika diperlukan
- Log dan trace yang dicakup tanpa kebocoran payload sensitif
- Impersonation dukungan dengan persetujuan, alasan, kedaluwarsa, dan riwayat audit
Uji ruang negatif
Pengujian happy-path membuktikan bahwa pengguna dapat mengakses data mereka. Pengujian isolasi membuktikan bahwa identifier, filter, ekspor, webhook, pencarian, dan timing tidak dapat mengekspos data tenant lain.
Buat dua tenant dalam pengujian integrasi dan secara sistematis coba pembacaan dan mutasi lintas batasan. Sertakan worker, operasi batch, alat admin, dan jalur kegagalan—bukan hanya endpoint HTTP.
Tentang penulis
Centillion Edge Engineering
Tim rekayasa kami menulis tentang keputusan arsitektur, keamanan, data, dan pengiriman di balik sistem enterprise yang andal.