php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.10.2010, 15:12  
Benutzer
 
Registriert seit: 04.10.2010
Beiträge: 62
PHP-Kenntnisse:
Fortgeschritten
Geryon befindet sich auf einem aufstrebenden Ast
Standard

Ja das Thema is halt für mich einfach sehr neu und damit sehr schwer verständlich gewesen. Kein Wunder also, dass man dabei auch mal aneineander vorbeiredet und etwas ganz anderes meint.

Ich hatte das am Anfang so verstanden, dass Benutzer einfach zu Gruppen gruppiert werden können, und dass dann diese Gruppen Rollen erhalten. So ist das aber garnicht. Benutzergruppen enthalten garnicht direkt Benutzer sondern sie enthalten Rollen. Und Benutzer können diese Rollen in verschiedenen Benutzergruppen einnehmen. Daher weiß ich auch jetzt erst, was du mit Rollensets gemeint hast. Diese enthalten verschiedene Rollen. Aber immer nur maximal eine Rolle aus einer Benutzergrupe. Damit geben diese an, welcher Benutzer in Welcher Benutzergruppe, welche maximale Rolle besitzt. Also: Was ist deine Rolle in dieser und jener Gruppe.

Im Folgenden noch einmal mein Konzept im Überblick. Es beinhaltet erste Überlegungen der Klassenmethoden, das Datenbankkonzept, ein RBAC Schaubild sowie meine Überlegungen noch einemal in der Zusammenfassung.

http://corems.de/core_files/rbac_core.pdf

Ich werde das genau so umsetzen. In einem Punkt werde ich allerdings, wie schon gesagt, von RBAC abweichen. Nähmlich dann, wenn ein Benutzer in manchen Fällen ein Recht direkt braucht. Dass kann allerdings nicht in der Verwaltung direkt vergeben werden sondern wird höchstens zur Laufzeit vergeben. Beispiel: Ein Benutzer erstellt einen Beitrag. In diesem Fall erhält er dieses Recht zur Veränderung direkt.

Logt sich ein Benutzer ein, erhält er automatisch immer die geringste Rolle aus den Benutzergruppen, in denen er sich befindet. Er kann innerhalb der Benutzergruppen in der Rollenhierarchie bis zu seiner im Rollenset festgelegten maximalen Rolle aufsteigen. Das erfordert dann die erneute Eingabe des Passworts.

Das hier beschriebene Modell passt auch endlich auf alle meine theoretischen Szenarien, die eintreten können.

Geändert von Geryon (31.10.2010 um 16:05 Uhr).
Geryon ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 31.10.2010, 18:01  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Zitat:
Im Folgenden noch einmal mein Konzept im Überblick. Es beinhaltet erste Überlegungen der Klassenmethoden, das Datenbankkonzept, ein RBAC Schaubild sowie meine Überlegungen noch einemal in der Zusammenfassung.
Warum werden Rollen einem Benutzer über Role <-> Group <-> User zugeordnet? Ich sehe hier eher Role <-> User <-> Group.
Des weiteren sollte as Thema Sichtbarkeits-Berechtigungen noch bedacht sein.

Zitat:
Logt sich ein Benutzer ein, erhält er automatisch immer die geringste Rolle aus den Benutzergruppen, in denen er sich befindet. Er kann innerhalb der Benutzergruppen in der Rollenhierarchie bis zu seiner im Rollenset festgelegten maximalen Rolle aufsteigen. Das erfordert dann die erneute Eingabe des Passworts.
Diese Logik verstehe ich nicht. Warum die "geringste"? Ein Benutzer soll doch über seine Rollen eine Schnittmenge an Permissions erhalten. Sollte eine Rolle eine Permission mit "false" definieren, eine andere mit "true" muss man sich überlegen, wie das auf Permission-Ebene funktionieren soll. Andernfalls sollte das Kumulat aller Permissions über alle Rollen dem Benutzer zugeführt werden.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 31.10.2010, 18:34  
Benutzer
 
Registriert seit: 04.10.2010
Beiträge: 62
PHP-Kenntnisse:
Fortgeschritten
Geryon befindet sich auf einem aufstrebenden Ast
Standard

Hallo.

Zitat:
Warum werden Rollen einem Benutzer über Role <-> Group <-> User zugeordnet? Ich sehe hier eher Role <-> User <-> Group.
In dem Schaubild wird Benutzern jeweils ein Rollenset zugeteilt. Diese Rollensets bestimmen über das beinhalten von Rollen in welcher Gruppe sich der User befindet. Daher befindet sich der Benutzer in Rollen und damit in Gruppen. Wie heißt denn eigentlich diese Schreibweise mit <-> ? Ich tu mich damit irgendwie schwer.

Zitat:
Des weiteren sollte as Thema Sichtbarkeits-Berechtigungen noch bedacht sein.
Sichtbarkeit bedeutet doch, dass der Benutzer grundsätzlich sehen kann, dass er die Möglichkeit hat ein Recht auszuführen. Daher ob er auch sehen kann, ob er Artikel löschen darf, auch wenn er die nötige Rolle gerade nicht inne hat aber besitzt. Oder? Mit der Methode check() prüfe ich ob er das Recht in irgendeiner möglichen Rolle inne hat. Und mit call() wird geprüft ob er die benötigte Rolle momentan hat. Von daher sehe ich da keine Probleme.

Zitat:
Diese Logik verstehe ich nicht. Warum die "geringste"? Ein Benutzer soll doch über seine Rollen eine Schnittmenge an Permissions erhalten. Sollte eine Rolle eine Permission mit "false" definieren, eine andere mit "true" muss man sich überlegen, wie das auf Permission-Ebene funktionieren soll. Andernfalls sollte das Kumulat aller Permissions über alle Rollen dem Benutzer zugeführt werden.
Diese Schnittmenge hat er ja auch. Beispiel:

Benutzer Geryon hat durch sein Rollenset in bestimmten Gruppen Rollen, die er einnehmen kann. Innerhalb der Gruppen sind Rollen hierarchisch aufgebaut:

So gibt es in der Gruppe Forum folgende Rollen, die sich gegenseitig unterstehen: Rolle Moderator -> Rolle Verfasser

Und in der Gruppe Chat gibt es ähnlche Rollen, die auch einander unterstehen: Rolle Moderator -> Rolle Verfasser

Geryon ist in der Gruppe Forum ein Moderator und in der Gruppe Chat ein Verfasser. Wenn er sich einloggt bekommt er aber in beiden Gruppen nur die Rolle des Verfassers zugeordnet. Seine Session hält also 2 Rollen aus 2 Gruppen. Das ist seine Schnittmenge. Will Geryon im Forum nun eine moderative Funktion ausführen so muss er in der Gruppe Forum die Rolle wechseln. In der Gruppe Chat allersings kann er erst garnicht sehen, dass es überhaupt moderative Funktionen gibt.

Mit dem laden der geringsten Rolle meine ich also, dass jeweils aus jeder angehörenden Gruppe nur die niedrigste Rolle geladen wird. Während der Sitzung kann er dann in den jeweiligen Gruppen bis zu seiner maximalen Rolle aufsteigen. Und aufsteigen meint auch, dass eine übergeordnete Rolle alles darf, was eine untergeordnete Rolle auch darf.

Ich arbeite wie schon gesagt mit Funktionsberechtigungen. Permissions mit True oder False gibt es nicht. Ich kann in der Verwaltung nur angeben, dass ich Funktionen() ausführen darf. Soll bedeuten: Ich kann nicht festlegen, dass eine Funktion() mit einem Parameter nicht ausgeführt werden darf, sondern nur, dass sie ausgeführt werden darf. Ist eine Funktion und ihr erlaubter Parameter nicht in der Rechtetabelle aufgeführt so wird diese einfach verweigert. Das System kann also nur erlauben. Alles andere ist verboten.
Geryon ist offline   Mit Zitat antworten
Alt 02.11.2010, 09:47  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

installier Dir mal phpBB und schau Dir den Adminbereich an mit der Rechteverwaltung.

Dort gibt es User, Usergruppen und Foren(=Objekte "auf" denen gewisse Rechte ausgeübt werden dürfen).

In bestimmten Foren können nur bestimmte Rechte ausgeführt werden.

Die Usergruppen haben per default bestimmte Rechte.

Ein User wird einer bestimmten Gruppe zugeordnet,
wobei es aber auch machbar ist die Rechte des einzelnen Users
zu erweitern oder einzuschränken. ("Userrechte" stehen also über "Gruppenrechte", "Userrecht bricht Gruppenrecht" wenn Du so willst).

ein pratisches Beispiel:
Du möchtest einem User der Gruppe "Gast" ausnahmsweise das Recht zugestehn in einem bestimmten Forum
in dem normalerweise nur Admins und Mods Rechte haben zu lesen und zu schreiben.
Der Gast hat also eine bestimmte, individuelle Rolle.
Ein Admin kann nun vorübergehend die Rolle dieses Gastes einnehmen.


Zitat:
dass eine übergeordnete Rolle alles darf, was eine untergeordnete Rolle auch darf.
es gibt keine über- und untergeordneten Rollen.

Zitat:
Sollte eine Rolle eine Permission mit "false" definieren, eine andere mit "true" muss man sich überlegen, wie das auf Permission-Ebene funktionieren soll.
Damit ist eben gemeint ob z.B. Userrecht Gruppenrecht bricht oder umgekehrt.

Und die Forenrechte, also was mit einem Forum gemacht werden darf, mußt in Deine Überlegungen auch noch einfließen lassen.

Mein Vorschlag: Forenrecht bricht Gruppenrecht, aber nicht Userrecht.
Das heißt ein für normale registrierte User nicht zugängliches Forum, kann durch die Vergabe individueller Rechte an einzelne User
dieser Gruppe zugänglich gemacht werden.

hm ... war hoffentlich verständlich ...
__________________
Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.
Koala ist offline   Mit Zitat antworten
Alt 02.11.2010, 20:34  
Benutzer
 
Registriert seit: 04.10.2010
Beiträge: 62
PHP-Kenntnisse:
Fortgeschritten
Geryon befindet sich auf einem aufstrebenden Ast
Standard

Hallo Koala

Zitat:
es gibt keine über- und untergeordneten Rollen.
Die erste Erweiterung von RBAC 0 nämlich RBAC 1 erlaubt das erben von Rechten aufgrund einer Rollenhierarchie. Dort stehen die Rollen nicht mehr nur nebeneinander sondern ordnen sich baumartig an.

Zitat:
Damit ist eben gemeint ob z.B. Userrecht Gruppenrecht bricht oder umgekehrt.
In meiner Überlegung, die ich weiter oben beschrieben habe ist es völlig ausgeschlossen, dass sich Rechte irgendwie in die Quere kommen. Denn es gibt kein Recht, was irgendein anderes einschränken könnte. Alle Rechte haben in meinem System nur die Fähigkeit etwas zu erlauben. Aber sie können nicht verbieten. Alles ist verboten. Solange bis es von einem Recht erlaub wird. Konflikte sind so absolut ausgeschlossen.

Koala, folgendes Zitat von dir ist mir am wichtigsten. Und ich glaube dieser Punktz sorgt in den meisten Beschreibungen von RBAC für viel Verwirrung.
Zitat:
Ein User wird einer bestimmten Gruppe zugeordnet
Kann jetzt sein, dass du das nur auf PHPBB beziehst. Aber wenn du damit RBAC meinst muss ich doch wiedersprechen. Zumindest wage ich es^^ .
Mal im Ernst: Ich habe RBAC jetzt so begriffen, dass wenn eine RBAC Version überhaupt Gruppen unterstützt dann wie folgt: Ja es gibt Benutzergruppen. Aber Benutzer werden nicht direkt hinzugeordnet. Sondern Jeder Benutzer besitzt versciedene Rollen. UNd diese Rollen wiederrum bestimmen in welcher Gruppe sich der Benutzer befindet. RBAC bedeutet für mich: Welche Rolle hat eine Person in welcher Gruppe? In der Gruppe Kindergarten kann er Kind, Clown oder Erzieher sein. In der Gruppe Forum kann er Leser, Schreiber oder Moderator sein. Der User hat die Rolle Moderator und die Rolle Erzieher inne. Darum befindet er sich in den Gruppen Kindergarten und Forum. So habe ich RBAC mit Benutzergruppen verstanden. Bitte korrigiert mich, wenn das absolut daneben liegt.

Das Beispiel verstehe ich hier nicht ganz. Warum sollte ein Admin die Rolle eines Gastes einnehmen? Ich glaube sowas geht in PHPBB sogar zum Beispiel zum Testen. Aber wolltest du nicht sagen, dass ein Gast die Rolle daes Admins einnehmen kann?

Zitat:
Du möchtest einem User der Gruppe "Gast" ausnahmsweise das Recht zugestehn in einem bestimmten Forum
in dem normalerweise nur Admins und Mods Rechte haben zu lesen und zu schreiben.
Der Gast hat also eine bestimmte, individuelle Rolle.
Ein Admin kann nun vorübergehend die Rolle dieses Gastes einnehmen.
Geryon ist offline   Mit Zitat antworten
Alt 02.11.2010, 21:39  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Warum sollte ein Admin die Rolle eines Gastes einnehmen? Ich glaube sowas geht in PHPBB sogar zum Beispiel zum Testen.
Warum nicht ? Das geht nicht nur in phpBB, sondern z.B. auch in Shopsystemen wie xt-Commerce.

Und das sieht RBAC auch vor:
http://de.wikipedia.org/wiki/Role_Based_Access_Control
Zitat:
Bei der rollenbasierten Zugriffskontrolle werden den Benutzern des Computers oder Netzwerks Rollen zugeordnet. Benutzer können dabei mehrere Benutzerrollen besitzen. An eine Rolle sind beispielsweise 1 bis n Gruppenzugehörigkeiten gebunden. Je nach Rollenzuordnung des Benutzers (und den damit verbundenen Gruppenzugehörigkeiten) erteilt oder sperrt das System dann das Zugriffsrecht auf Ressourcen. Häufig werden vor allem Lesen, Schreiben und Ausführen von Dateien mittels RBAC kontrolliert; das Verfahren ist jedoch nicht darauf beschränkt.
Eine Gruppe ist also nicht zwingend einer Rolle gleichzusetzen. Der Grund dafür ist, dass sich die Unterteilung der Benutzer danach richtet, in welcher Rolle, also in Ausübung welcher Aufgaben, sie auf den Computer zugreifen. Das englische Wort „Role“ wird im IT-bezogenen deutschen Sprachgebrauch unter anderem für Webmaster, Postmaster, Newsmaster, Netzwerkadministratoren, Systemadministratoren und ähnliches verwendet und soll verdeutlichen, dass es sich nicht zwangsläufig um verschiedene Personen handelt, sondern dass zum Beispiel ein- und dieselbe Person mal in der Rolle des Webmasters Webseiten aktualisiert, dann in der Rolle des Postmasters Beschwerden über sein offenes Mail-Relay liest und als nächstes in der Rolle des Systemadministrators Software installiert. Für die Ausübung sind dabei je nach Rolle möglicherweise unterschiedliche Zugriffberechtigungen notwendig, die auch eine Zuordnung eines Benutzers zu mehr als einer Gruppe erforderlich machen.
Wegen der dreistufigen Gliederung in Benutzer, Rollen und Gruppen ist es möglich, Zugriffsrechte eines Benutzers über eine Rollenzuordung und daran gebundene Gruppenzuordnungen zu kontrollieren.
Für die Verwaltung dieser Zuordnungen werden in der Regel Identitätsmanagement-Systeme (IDM) implementiert. Diese ermöglichen die Zuordnung von Benutzern zu jeweils 1 bis n Gruppen in 1 bis n Computersystemen lediglich über die Bindung an wenigstens eine Rolle. Voraussetzung hierfür ist unter anderem die Erstellung eines einheitlichen Nutzer-Rollenkonzepts. Diese Systeme erlauben es auch, die Konformität mit IT-Sicherheitsvorgaben sicherzustellen. Dazu kann in konfigurierbaren Zeitabständen ein Vergleich der Gruppenzugehörigeit(en) eines Benutzers in 1 bis n Computersystemen mit den Rollendefinitionen im Regelwerk des IDM-Systems erfolgen. Das IDM-System kann diese Abweichung (Non-Compliance) dann bei Bedarf korrigieren und somit eine Zugriffskonsistenz sicherstellen.
__________________
Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.

Geändert von Koala (02.11.2010 um 21:46 Uhr).
Koala ist offline   Mit Zitat antworten
Alt 02.11.2010, 23:03  
Benutzer
 
Registriert seit: 04.10.2010
Beiträge: 62
PHP-Kenntnisse:
Fortgeschritten
Geryon befindet sich auf einem aufstrebenden Ast
Standard

OK. Alles klar. Und im Rest? Stimmst du da mit mir überein?
Geryon ist offline   Mit Zitat antworten
Alt 02.11.2010, 23:08  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Und im Rest? Stimmst du da mit mir überein?
es gibt eben verschiedene Ansätze.
Ich würds so machen wie es das phpBB macht.
Wobei auch phpBB rollenbasiert funktioniert und die Rechte die ein Forum "hat"
(also was man mit dem Forum machen kann) entspricht dem was dr.e mit Sichtbarkeit gemeint hat.

Von einer hierarchischen Anordnung der Rollen halt ich nicht viel.

Aber gut, das ist wohl Geschmackssache.
__________________
Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.
Koala ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Komisches Verhalten von $this bei Vererbung delta PHP Tipps 2010 27 05.05.2010 17:49
Singleton mit Vererbung -> Ctor Problem Alex04 PHP-Fortgeschrittene 3 28.03.2010 14:05
Eine Nutzerverwaltung mit Rechten erstellen timmeyy PHP Tipps 2009 26 31.07.2009 20:55
Singleton Model oder Vererbung ? MollocH PHP-Fortgeschrittene 2 10.02.2009 20:32
[Erledigt] "Klassen" und sinvolle Vererbung phpdummi JavaScript, Ajax und mehr 8 28.01.2009 04:01
CSS: div am rechten Rand positieren Autoterrorist HTML, Usability und Barrierefreiheit 3 31.07.2008 14:09
Vererbung - Include? Igäl PHP Tipps 2008 13 17.08.2007 10:10
Klasse und Vererbung Rio99 PHP Tipps 2006 4 05.07.2006 16:41
PHP5: DOMDocument + vererbung Syntaxx PHP-Fortgeschrittene 4 07.06.2006 09:02
Frage zur Vererbung 250Euro PHP-Fortgeschrittene 3 15.05.2006 08:53
Vererbung bei Templates Pain-maker PHP-Fortgeschrittene 9 28.03.2006 10:05
Vererbung von Klassen und Performance ggfan PHP Tipps 2006 5 05.03.2006 12:00
probleme mit rechten an einem ordner: nicht veränderbar?!?!? Promaetheus PHP Tipps 2004 8 30.10.2004 18:42
Datenmodell Antragsbearbeitung Rollen? PHP Tipps 2004 3 14.07.2004 22:41
Datenmodell Antragsbearbeitung Rollen? Datenbanken 0 14.07.2004 00:57

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
hierarchisches rollenkonzept, rbac vererbung, was ist ein rollenset, gruppen rollen, rbac datenbank umsetzung, gruppenrollen in der kita, rbac_core.pdf, php rechte und rollen, rbac gruppen, gruppenrollen kindergarten, gruppenrollen im kindergarten, rollendefinition idm, gruppenrollen beschreiben, schaubild rollenkonzept, php rechte rollenkonzept, gruppenrollen kita, rollenkonzept rechte benutzerrollen, vererbung rolle idm, rbac php, verschiedene gruppenrollen im kindergarten

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:42 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum