Min erfaring med at eksperimentere med en tilpasset RBAC-implementering er som følger:
-
Du læser meget af RBAC-litteraturen og tror, du forstår den. Så går du videre og prøver at implementere det, bare for at indse, at du slet ikke forstod det. Til sidst vil det give mening, når du bevæger dig videre i projektet.
-
Baseret på dit spørgsmål kender du allerede det forretningsdomæne, som du vil anvende RBAC til. Men glem alt om de faktiske forretningsobjekter for nu. Din RBAC-implementering skal være generisk, hvilket betyder, at du har et DB-skema, der består af Rolle, Bruger, Tilladelse, Operation osv. tabeller. Så vil du have objekter, der er knyttet til sådanne tabeller (en-til-en-relation).
Når først du har denne RBAC-implementering, kan den modelleres til praktisk talt ethvert forretningsdomæne, såsom en 'afdeling', som du har nævnt.
Bare husk, at det hele ikke er perfekt... Jeg har forbedret/modificeret/afledt fra den faktiske RBAC-litteratur for at tilføje brugerdefinerede funktioner, forbedre ydeevnen osv.
Jeg har ikke arbejdet på dette i et stykke tid, så jeg håber, at jeg har ret i følgende:
- Bruger:Forekomster oprettes og gemmes i dens backing-tabel.
-
Rolle:Forekomster oprettes og gemmes i dens bagsidetabel. Roller vil blive tildelt brugere.
-
Tilladelse:En tilladelse er grundlæggende en kombination af en operation på et objekt. Tilladelser tildeles roller.
-
Operation:En operation er simpelthen hvad som helst, du ønsker. Det kan være CRUD (opret, læs, opdater, slet), eller det kan også være 'print', 'søg' eller noget, et menneske (eller system) kan udføre på et objekt (eller en gruppe af objekter).
- Objekt:Dette er stort set alle dine objekter, der udgør dit forretningsdomæne.
For endnu mere kraft kan du implementere begrænsninger for at anvende en enorm mængde forskellige begrænsninger.
Med denne ramme bør du være i stand til at kortlægge:
- Hvem kan tildele brugere til en afdeling
- Hvem kan fjerne dem fra afdelinger
- Hvor mange brugere kan der være i en afdeling
- Hvilken slags brugere (baseret på deres tildelte roller) kan være i en afdeling
- Hvilke ruller kan udføre hvilke handlinger til en afdeling (oprette, læse, opdatere, slette dem)
- Ov.