Tout d’abord, quel type de modèle de sécurité envisagez-vous de mettre en œuvre? Contrôle d'accès basé sur les rôles (RBAC) ou contrôle d'accès discrétionnaire (DAC)?
RBAC dans le modèle de contrôle d'accès basé sur le rôle (RBAC), l'accès aux ressources est basé sur le rôle attribué à un utilisateur. Dans ce modèle, un administrateur attribue à un utilisateur un rôle doté de certains droits et privilèges prédéterminés. En raison de l'association de l'utilisateur avec le rôle, l'utilisateur peut accéder à certaines ressources et effectuer des tâches spécifiques. Le RBAC est également connu sous le nom de contrôle d'accès non discrétionnaire. Les rôles attribués aux utilisateurs sont administrés de manière centralisée.
DAC Dans le modèle DAC (Discretionary Access Control), l'accès aux ressources est basé sur l'identité de l'utilisateur. Un utilisateur se voit accorder des autorisations sur une ressource en étant placé sur une liste de contrôle d'accès (ACL) associée à une ressource. Une entrée de la liste de contrôle d'accès d'une ressource est appelée entrée de contrôle d'accès (ACE). Lorsqu'un utilisateur (ou un groupe) est le propriétaire d'un objet dans le modèle DAC, l'utilisateur peut accorder des autorisations à d'autres utilisateurs et groupes. Le modèle DAC est basé sur la propriété des ressources.
voir la source
1) Dans RBAC: vous avez besoin de la table ElementType pour attribuer des droits au rôle (les utilisateurs sont affectés à un ou plusieurs rôles). RBAC définit: "Que peut faire ce rôle / utilisateur". L'administrateur attribue des droits pour les rôles et des autorisations pour les rôles, attribue aux utilisateurs des rôles pour accéder aux ressources. 2) Sous DAC: les utilisateurs et les rôles ont des droits sur les éléments via la liste de contrôle d'accès (propriété). DAC définit: "qui a accès à mes données". Utilisateur (propriétaire) accorde des autorisations à la ressource possédée.
De toute façon, je suggère ce modèle de données:
CREATE TABLE ElementType
(
Id (PK)
Name
...
)
CREATE TABLE ElementBase
(
Id (PK)
Type (FK to ElementType)
...
)
(une à une relation)
CREATE TABLE Element_A
(
Id (PK, FK to ElementBase)
...
)
CREATE TABLE Element_B
(
Id (PK, FK to ElementBase)
...
)
1) RBAC (relation plusieurs à plusieurs)
CREATE TABLE ElementType_To_Role_Rights
(
RightId (PK)
RoleId (FK to Role)
ElementTypeId (FK to ElementType)
...
)
2) DAC (relation plusieurs à plusieurs)
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)
...
)