sql >> Database >  >> RDS >> Mysql

DB-schema voor RBAC met meerdere rollenniveaus

Mijn ervaring tijdens het experimenteren met een aangepaste RBAC-implementatie is als volgt:

  1. Je leest veel van de RBAC-literatuur en denkt dat je het begrijpt. Dan ga je door en probeer je het uit te voeren, alleen maar om te beseffen dat je het helemaal niet begreep. Uiteindelijk zal het logisch worden naarmate je verder komt in het project.

  2. Op basis van uw vraag weet u al op welk bedrijfsdomein u RBAC wilt toepassen. Maar vergeet de eigenlijke zakelijke objecten voor nu. Uw RBAC-implementatie moet generiek zijn, wat betekent dat u een DB-schema hebt dat bestaat uit tabellen met rollen, gebruikers, machtigingen, bewerkingen, enzovoort. Dan heb je objecten die naar zulke tabellen verwijzen (een-op-een relatie).

Zodra u deze RBAC-implementatie heeft, kan deze worden gemodelleerd naar vrijwel elk bedrijfsdomein, zoals een 'afdeling' die u hebt genoemd.

Onthoud dat het niet allemaal perfect is... Ik heb de feitelijke RBAC-literatuur verbeterd/aangepast/afgeleid om aangepaste functies toe te voegen, de prestaties te verbeteren, enz.

Ik heb hier een tijdje niet aan gewerkt, dus ik hoop dat ik het volgende goed heb:

  • Gebruiker:Instanties worden gemaakt en opgeslagen in de backing-tabel.
  • Rol:Instanties worden gemaakt en opgeslagen in de backing-tabel. Rollen worden toegewezen aan gebruikers.

  • Toestemming:Een toestemming is in feite een combinatie van een bewerking op een object. Machtigingen worden toegewezen aan rollen.

  • Operatie:Een operatie is gewoon alles wat je wilt. Het kan CRUD zijn (creëren, lezen, bijwerken, verwijderen) of het kan ook 'afdrukken', 'zoeken' zijn of iets anders dat een mens (of systeem) kan uitvoeren op een object (of een groep objecten).

  • Object:dit zijn eigenlijk al uw objecten die samen uw bedrijfsdomein vormen.

Voor nog meer kracht zou je beperkingen kunnen invoeren om een ​​enorm aantal verschillende beperkingen toe te passen.

Met dit raamwerk zou u in staat moeten zijn om:

  • Wie kan gebruikers toewijzen aan een afdeling
  • Wie kan ze van afdelingen verwijderen
  • Hoeveel gebruikers kunnen er op een afdeling zijn
  • Wat voor soort gebruikers (op basis van hun toegewezen rollen) op een afdeling kan zijn
  • Welke rollen kunnen welke bewerkingen voor een afdeling uitvoeren (maken, lezen, bijwerken, verwijderen)
  • Enz.


  1. Yii2 stapsgewijze handleiding bij inloggen vanuit de tabel in MySQL

  2. Limiet instellen voor een tabelrijen in SQL

  3. geef javascript-variabele door aan php mysql select query

  4. Hoe kan ik verbinding maken met SQL Server met behulp van geïntegreerde beveiliging met het JDBC-stuurprogramma?