Jika Anda ingin melindungi aset (file, baris database, Entitas Domain, dokumen, dll.) alih-alih fitur aplikasi atau kemampuan pengguna , keamanan berbasis peran tidak terlalu cocok.
Model yang lebih baik adalah menggunakan Daftar Kontrol Akses (ACL) seperti yang Anda ketahui dari NTFS. Anda hampir mengatakannya sendiri karena Anda perlu menetapkan izin tertentu pada setiap objek untuk setiap pengguna atau peran. Itulah yang dilakukan ACL.
Jika Anda perlu melindungi objek yang pada akhirnya merupakan baris di SQL Server, Anda perlu menentukan tabel khusus untuk ACL Anda, karena SQL Server tidak memiliki dukungan untuk izin tingkat baris.
Berdasarkan data di ACL tersebut, Anda harus menerapkan pemeriksaan keamanan yang diperlukan di Komponen Akses Data Anda.
Berikut adalah beberapa tautan ke jawaban SO terkait:
- Kontrol Akses di ASP.NET MVC tergantung pada parameter input / lapisan layanan?
- Apa mekanisme terbaik untuk menerapkan keamanan granular (yaitu otorisasi) dalam aplikasi ASP.NET MVC?
- Bagaimana cara menerapkan kode undangan untuk berbagi sumber daya dengan pengguna lain?