[Alg] Hoe handig root (superuser) op te slaan

Pagina: 1
Acties:

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Topicstarter
In mijn CMS heb ik inmiddels een handig systeem ontwikkeld voor het werken met permissies e.d. volgens het RBAC systeem.

Nu wil ik één gebruiker in mijn systeem hebben, met root priviléges. Deze gebruiker staat (vanzelfsprekend) boven alle ingestelde restricties. Ik vraag me nu alleen af, hoe ik gestalte moet geven aan deze superuser. Een aantal van de opties die ik heb overwogen:
  1. In de db table met rollen komt een extra veld "is_root" o.i.d. Zodra dit veld een 1 heeft, zijn alle gebruikers met deze rol superuser. In iedere functie die met permissies werkt, wordt gekeken of de huidige gebruiker superuser is. Als dat het geval is, krijgt deze gebruiker alle rechten, ongeacht eventueel ingestelde restricties. Voor de rol waarvoor "is_root" op 1 staat, zijn geen instellingen te maken m.b.t. permissies/rechten.
  2. De superuser krijgt geen rol en komt nergens naar boven in de verschillende schermen voor het instellen van gebruikers. Hij wordt als het ware "hard-coded" in de verschillende functies aangegeven als superuser (op basis van gebruikersnaam of userID).
  3. De rol "superusers" krijgt door overerving alle permissies op alle objecten automatisch toegevoegd in de database op het moment dat de database wordt aangemaakt en deze zijn door niemand te wijzigen. Omdat de permissies/rechten worden toegewezen volgens het standaard rechten-model, zijn er geen aanpassingen nodig in de verschillende functies die met permissies werken. Nadeel is eventueel dat - wanneer er onverhoopt iets fout gaat in de database - de superuser geen toegang meer heeft tot de verschillende onderdelen.
Ik ben erg benieuwd wat de verschillende visies hierover zijn. Waarschijnlijk zie ik opties 4 en verder over het hoofd, of zijn er allang standaard oplossingen voor dit probleem. Mocht iemand een site weten waar ik hierover meer kan lezen: Gaarne!

Dat er maar flink gediscussieerd moge worden!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 20:33

mulder

ik spuug op het trottoir

4. maak root een rol

Je hoeft dan geen extra check op root te doen, geen hard-coded shit te gebruiken en geen (extra)bulken permissies toe te voegen.

[ Voor 3% gewijzigd door mulder op 22-07-2005 12:42 ]

oogjes open, snaveltjes dicht


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 11:08

alienfruit

the alien you never expected

is_predefined attribuut maken en die instellen op gebruiker root en/of role root. Predefined gebruikers en rollen kunnen niet gewijzigd of weggegooid worden in het systeem. Zo heb ik het gedaan.

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Topicstarter
@Don Facundo
Ja, dat is dan dus eigenlijk optie 3. Enige waar ik dan mee zit, is dat ik moet voorkomen dat de Root-permissies zijn te wijzigen. Op dit moment kan iedereen die SCHRIJF-rechten op een object heeft, ook de permissies voor dat object wijzigen. In theorie zou dus een gebruiker de rechten voor de superuser op DENY kunnen zetten. Dat mag niet kunnen. Wanneer je dus van de ROOT een standaard-rol maakt, moet alsnog ergens terugkomen dat er een uitzonderlijke situatie voor die rol bestaat.

Of kun je dit op een andere manier regelen?

@alienfruit
Dat is dan dus eigenlijk optie 1. Maar dat betekent dus dat je overal in de functies die te maken hebben met het toekennen/wijzigen van rechten een deel hebt ingericht voor het geval dat de gebruiker/rol in kwestie de "is_predefined" flag op 1 heeft staan. Dat lijkt ook weer omslachtig...

[ Voor 25% gewijzigd door gvanh op 22-07-2005 12:50 ]


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 20:33

mulder

ik spuug op het trottoir

Zie alienfruit ;)

oogjes open, snaveltjes dicht