Welche Art von Sicherheitsmodell planen Sie zuallererst zu implementieren? Rollenbasierte Zugriffskontrolle (RBAC) oder diskretionäre Zugriffskontrolle (DAC)?
RBAC Im RBAC-Modell (Role-Based Access Control) basiert der Zugriff auf Ressourcen auf der einem Benutzer zugewiesenen Rolle. In diesem Modell weist ein Administrator einem Benutzer eine Rolle zu, die über bestimmte vordefinierte Rechte und Berechtigungen verfügt. Aufgrund der Zuordnung des Benutzers zur Rolle kann der Benutzer auf bestimmte Ressourcen zugreifen und bestimmte Aufgaben ausführen. RBAC wird auch als nicht diskretionäre Zugriffskontrolle bezeichnet. Die den Benutzern zugewiesenen Rollen werden zentral verwaltet.
DAC Im DAC-Modell (Discretionary Access Control) basiert der Zugriff auf Ressourcen auf der Identität des Benutzers. Einem Benutzer werden Berechtigungen für eine Ressource erteilt, indem er in eine der Ressource zugeordnete Zugriffssteuerungsliste (Access Control List, ACL) aufgenommen wird. Ein Eintrag in der ACL einer Ressource wird als Access Control Entry (ACE) bezeichnet. Wenn ein Benutzer (oder eine Gruppe) Eigentümer eines Objekts im DAC-Modell ist, kann der Benutzer anderen Benutzern und Gruppen Berechtigungen erteilen. Das DAC-Modell basiert auf dem Ressourcenbesitz.
siehe Quelle
1) In RBAC: Sie benötigen die ElementType-Tabelle, um Rollenberechtigungen zuzuweisen (Benutzer sind Rollen zugeordnet). RBAC definiert: "Was kann diese Rolle / dieser Benutzer tun". Der Administrator weist den Rollen Rechte und Berechtigungen zu, weist den Rollen Benutzer zu, die auf Ressourcen zugreifen sollen. 2) In DAC: Benutzer und Rollen haben Rechte an Elementen über die Zugriffssteuerungsliste (Eigentümer). DAC definiert: "Wer hat Zugriff auf meine Daten". Benutzer (Eigentümer) erteilt Berechtigungen für die besessene Ressource.
Wie auch immer, ich schlage folgendes Datenmodell vor:
CREATE TABLE ElementType
(
Id (PK)
Name
...
)
CREATE TABLE ElementBase
(
Id (PK)
Type (FK to ElementType)
...
)
(eins zu eins Beziehung)
CREATE TABLE Element_A
(
Id (PK, FK to ElementBase)
...
)
CREATE TABLE Element_B
(
Id (PK, FK to ElementBase)
...
)
1) RBAC (Viele-zu-Viele-Beziehung)
CREATE TABLE ElementType_To_Role_Rights
(
RightId (PK)
RoleId (FK to Role)
ElementTypeId (FK to ElementType)
...
)
2) DAC (Viele-zu-Viele-Beziehung)
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)
...
)