Pertama-tama, jenis model keamanan apa yang Anda rencanakan untuk implementasikan? Kontrol Akses Berbasis Peran (RBAC) atau Discretionary Access Control (DAC)?
RBAC dalam model Kontrol Akses Berbasis Peran (RBAC), akses ke sumber daya didasarkan pada peran yang diberikan kepada pengguna. Dalam model ini, administrator menetapkan pengguna ke peran yang memiliki hak dan hak istimewa tertentu yang telah ditentukan. Karena keterkaitan pengguna dengan peran, pengguna dapat mengakses sumber daya tertentu dan melakukan tugas tertentu. RBAC juga dikenal sebagai Kontrol Akses Non-Diskresioner. Peran yang diberikan kepada pengguna dikelola secara terpusat.
DAC Dalam model Discretionary Access Control (DAC), akses ke sumber daya didasarkan pada identitas pengguna. Pengguna diberikan izin ke sumber daya dengan ditempatkan pada daftar kontrol akses (ACL) yang terkait dengan sumber daya. Entri pada ACL sumber daya dikenal sebagai Entri Kontrol Akses (ACE). Ketika pengguna (atau grup) adalah pemilik objek dalam model DAC, pengguna dapat memberikan izin kepada pengguna dan grup lain. Model DAC didasarkan pada kepemilikan sumber daya.
lihat sumber
1) Di RBAC: Anda perlu tabel ElementType untuk menetapkan hak atas peran (pengguna ditugaskan ke peran) RBAC mendefinisikan: "Apa yang bisa dilakukan peran / pengguna ini". Administrator memberikan hak untuk peran dan izin ke peran, menetapkan pengguna ke peran untuk mengakses sumber daya. 2) Di DAC: pengguna dan peran memiliki hak atas elemen melalui daftar kontrol akses (kepemilikan). DAC mendefinisikan: "siapa yang memiliki akses ke data saya". Pengguna (pemilik) memberikan izin ke sumber daya yang dimiliki.
Cara saya menyarankan model data ini:
CREATE TABLE ElementType
(
Id (PK)
Name
...
)
CREATE TABLE ElementBase
(
Id (PK)
Type (FK to ElementType)
...
)
(hubungan satu lawan satu)
CREATE TABLE Element_A
(
Id (PK, FK to ElementBase)
...
)
CREATE TABLE Element_B
(
Id (PK, FK to ElementBase)
...
)
1) RBAC (hubungan banyak ke banyak)
CREATE TABLE ElementType_To_Role_Rights
(
RightId (PK)
RoleId (FK to Role)
ElementTypeId (FK to ElementType)
...
)
2) DAC (hubungan banyak ke banyak)
CREATE TABLE ElementBase_To_Actor_Rights
(
RightId (PK)
ElementBaseId (FK to ElementBase)
ActorId (FK to Actor)
...
)
CREATE TABLE Actor
(
Id (PK)
Name
)
CREATE TABLE User
(
Id (PK, FK to Actor)
Password
...
)
CREATE TABLE Role
(
Id (PK, FK to Actor)
...
)