Saya mencoba mengikuti model kontrol akses basis peran untuk membatasi apa yang dapat atau tidak dapat dilakukan pengguna di sistem saya.
Sejauh ini saya memiliki entitas berikut:
pengguna - Orang yang akan menggunakan sistem. Di sini saya memiliki nama pengguna dan kata sandi. peran - Kumpulan peran yang dapat dimiliki pengguna. Hal-hal seperti sumber daya manajer, admin, dll. - Hal-hal yang dapat dimanipulasi pengguna. Seperti kontrak, pengguna, konsep kontrak, dll. Operasi - Hal yang dapat dilakukan pengguna dengan sumber daya. Suka membuat, membaca, memperbarui atau menghapus.
Sekarang, keraguan saya muncul di sini dalam diagram di mana saya memiliki hubungan seperti ini:
operasi (0 .. *) dijalankan pada sumber daya (0 .. *) yang menghasilkan tabel yang saya sebut izin dan yang akan menyimpan operasi dan sumber daya .
Tabel izin akan terlihat seperti ini (satu baris): ID: 1, operasi: buat, sumber daya: kontrak.
Yang berarti izin untuk membuat sebuah kontrak .
Saya telah melakukannya dengan cara ini karena saya merasa beberapa sumber daya mungkin tidak memiliki semua jenis operasi. Misalnya, untuk mendaftar kontrak , pengguna dapat mengunggah file , tetapi operasi ini tidak tersedia untuk mendaftarkan penyedia .
Jadi sekarang ketika administrator akan memberikan izin untuk sebuah peran , ia tidak akan memiliki daftar sumber daya dengan setiap operasi yang terdaftar dalam sistem.
Saya pikir setiap sumber daya memiliki koleksi operasi sendiri yang dapat dijalankan padanya.
Saya bisa mengklarifikasi jika ada sesuatu yang tidak bisa dimengerti.
Apakah ini cara yang benar untuk mengimplementasikan rbac?
EDIT
Maksud saya adalah bahwa dengan memiliki tabel izin yang memiliki operasi dan sumber daya , saya punya DUA tabel tambahan karena saya ingin mengaitkan sumber daya dengan operasi . Saya juga bisa melakukan sumber daya yang memiliki izin di mana tabel izin akan menyimpan izin.
Tetapi kemudian apa yang akan terjadi adalah bahwa beberapa izin yang bahkan tidak ada untuk beberapa sumber daya akan muncul ketika admin akan menugaskan mereka.
Jadi saya ingin tahu dari sudut pandang desain database jika tabel ini mengizinkan yang memiliki satu operasi kolom dan sumber daya lain sudah benar? Apakah saya akan mengalami masalah jika tetap seperti ini?