Po pierwsze, jaki typ modelu bezpieczeństwa planujesz wdrożyć? Kontrola dostępu oparta na rolach (RBAC) czy dyskrecjonalna kontrola dostępu (DAC)?
RBAC w modelu kontroli dostępu opartej na rolach (RBAC) dostęp do zasobów zależy od roli przypisanej użytkownikowi. W tym modelu administrator przypisuje użytkownika do roli, która ma pewne określone prawa i uprawnienia. Ze względu na powiązanie użytkownika z rolą użytkownik może uzyskać dostęp do niektórych zasobów i wykonywać określone zadania. RBAC jest również znany jako niedyskrecjonalna kontrola dostępu. Role przypisane do użytkowników są administrowane centralnie.
DAC W modelu dyskretnej kontroli dostępu (DAC) dostęp do zasobów zależy od tożsamości użytkownika. Użytkownik otrzymuje uprawnienia do zasobu poprzez umieszczenie go na liście kontroli dostępu (ACL) powiązanej z zasobem. Wpis na liście ACL zasobu jest znany jako wpis kontroli dostępu (ACE). Gdy użytkownik (lub grupa) jest właścicielem obiektu w modelu DAC, użytkownik może udzielić uprawnienia innym użytkownikom i grupom. Model DAC opiera się na własności zasobów.
patrz źródło
1) W RBAC: potrzebujesz tabeli ElementType, aby przypisać prawa do roli (użytkownicy są przypisani do ról). RBAC definiuje: „Co może zrobić ta rola / użytkownik”. Administrator przypisuje prawa do ról i uprawnienia do ról, przypisuje użytkowników do ról w celu uzyskania dostępu do zasobów. 2) W DAC: użytkownicy i role mają prawa do elementów poprzez listę kontroli dostępu (własność). DAC definiuje: „kto ma dostęp do moich danych”. Użytkownik (właściciel) przyznaje uprawnienia do posiadanego zasobu.
W dowolny sposób sugeruję ten model danych:
CREATE TABLE ElementType
(
Id (PK)
Name
...
)
CREATE TABLE ElementBase
(
Id (PK)
Type (FK to ElementType)
...
)
(relacja jeden do jednego)
CREATE TABLE Element_A
(
Id (PK, FK to ElementBase)
...
)
CREATE TABLE Element_B
(
Id (PK, FK to ElementBase)
...
)
1) RBAC (relacja wiele do wielu)
CREATE TABLE ElementType_To_Role_Rights
(
RightId (PK)
RoleId (FK to Role)
ElementTypeId (FK to ElementType)
...
)
2) DAC (relacja wiele do wielu)
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)
...
)