Toon posts:

[Alg] RBAC, maar met condities

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig uit te zoeken hoe nu zo flexibel mogelijk een rollen/rechten systeem op te zetten. Uiteraard kom je dan al gauw de termen ACL en RBAC tegen. Nu zou je zeggen "gebruik gewoon RBAC".

De moeilijkheid zit'm in het feit dat ik eigenlijk instelbare condities aan permissies zou willen hangen. Bijvoorbeeld "Gebruikersgroep X heeft permissie Y, maar alleen als het dinsdag is". Of: "Gebruikersgroep X mag de status van project Y wijzigen, maar alleen als het project de status NIEUW heeft".

Dit zijn slechts enkele voorbeelden. Volgens mij leg je dit soort business logica normaal gesproken in je programma vast. Maar ik wil toch proberen dit instelbaar te maken.

M'n idee tot nu toe:

Bij het toewijzen van een permissie aan een groep voeg je 1 extra kolom toe aan je koppeltabel, waarin je de conditie vastlegt. Dit zal in een soort van scripttaaltje gedefinieerd zijn, dat dus door je programma geinterperteerd dient te worden.

Nadeel hiervan is dat dit nogal ten koste zal gaan van de performance. Heeft iemand suggesties, alternatieven, links, tips en/of ideeen?

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Access control performance wordt typisch gecached door een access token af te geven nadat de check voor de eerste keer geslaagd is. Bij de tweede check verifieer je alleen of de token (nog) geldig is. Performance maakt dan niet veel uit. Het token voor Y is dan geldig tot woensdag, en hoeft verder niet diepgravend gecontroleerd te worden.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

Topicstarter
Mee eens. Op zich ben ik nog niet eens zo heel bang voor de performance (al is het rotte natuurlijk wel dat de geldigheid van je token afhankelijk kan zijn van de conditie die je aan een permissie hangt).

Maar is deze opzet aan te raden? Of zijn er betere alternatieven? En zie ik dingen over het hoofd?