Rollen, Gruppen, Rechte (RBAC) Benutzermanagement

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Rollen, Gruppen, Rechte (RBAC) Benutzermanagement

    Hallo!

    Auch wenn dieses Thema sehr oft angesprochen wird, wage ich es erneut. Ich verfolge einen anderen Ansatz, als das offizielle Rechtemanagement in dieses Forum.

    z.B. hier
    http://www.php-resource.de/forum/sho...5&pagenumber=3

    oder hier.
    http://www.php-resource.de/forum/sho...chtemanagement

    Ich versuche gerade ein bestehendes Web-Content-Management-System neu zu strukturieren bzw. zu modularisieren und es mit einer komfortablen Benutzerverwaltung zu versehen. Die Verwaltung von Usern Rechte etc. findet wie gewohnt im Backend des Systems statt.

    Einen groben Entwurf findet ihr im Anhang!

    Prinzip: Module, Templates …

    Herzstück jeder Website ist die Navigation. Die Navigation soll im Backend beliebig erweiterbar sein. Die verschiedenen Links werden in der Tabelle navigation verwaltet.
    Jedem Link ist eine template_id zugeordnet. Das Template ist die Schablone der Website, die beliebig ausgetauscht werden kann. Im Template (HTML-Code, CSS etc. werden Platzhalter als Funktionen eingetragen, die den Inhalt repräsentieren. z.B. load_Module(0)
    Was jetzt an dieser Stelle angezeigt wird, kann im Backend zugewiesen werden. Load_Module(0) muss also nicht zwingend z.B. die Navigation der Website sein, sondern kann auch die Artikelverwaltung darstellen. Die Zuweisung erfolgt in der Tabelle box_mod_templ!
    Box entspricht dabei die „0“ als Argument der Funktion load_Module(0).
    Die Tabelle box_mod_templ weißt also einem bestimmten Template und einer bestimmten Box das Modul zu! Das Modul besteht aus einer Eingabedatei (fileinput) und einer Ausgabedatei (fileoutput). Die Eingabedatei schreibt etwas in die Datenbank hinein und die Ausgabedatei holt einen Inhalt aus der Datenbank wieder heraus.

    Zur Tabelle gruppe_module komme ich gleich…

    Nun zum Rechtemanagement (linker Teil):
    Ausgangspunkt des Rechtemanagement Systems ist der Workflow (Arbeitsablauf) eines bestimmten Mitarbeiters. Beispiel für einen Workflow: Knicken -> Lochen -> Abheften ;-)
    Dabei stellen diese drei Prozesse die Rechte dar. Kann natürlich beliebig erweitert werden.

    Nun zum Rollen und Gruppen Konzept.
    Verschieden Mitarbeiter können verschiedene Rollen in verschiedenen Gruppen einnehmen.
    Gruppen sind hier keine Gruppierung von Rechten!
    Eine Gruppe ist ein Teilbereich des Systems z.B. Gruppen: Artikelverwaltung, Administration, Forum etc.
    Rollen sind z.B. User, Editor, Author, Admin etc.
    Ein Benutzer kann also die Rolle Editor in der Gruppe Forum einnehmen, weil er die Kompetenz dafür besitzt. Der gleiche Benutzer kann aber die Rolle User in der Gruppe Artikelverwaltung einnehmen.
    In der Tabelle session werden die User und Gäste gespeichert, die gerade online sind (das ist schon fertig).

    Nun zur Tabelle gruppe_module: Mit dieser Tabelle versuche ich den Zusammenhang zwischen der Rechteverwaltung und der Modul/Template-Verwaltung zu schaffen. Ein Modul kann also in verschiedenen Gruppen eingesetzt werden und demnach haben die Benutzer des Systems nach ihrer Rolle entweder Zugriff und keinen Zugriff auf das Modul (edit_article.php/show_articles.php).

    Lange Rede kurzer Sinn…

    hat jemand schon einmal mit solch einem System (RBAC:Role-Base-Access-Controll) Erfahrungen gemacht?

    Ist es sinnvoll, eine CMS so aufzubauen?

    Hat jemand vielleicht Verbesserungsvorschläge?

    Ich bin über jeden Kommentar sehr dankbar!
    Das ganze soll irgendwann auch mal ein Tutorial werden...

    In diesem Tutorial soll das Matrixmodell (wie hier im Forum)
    Das RBAC-Modell
    Und ein Rechtemodell mit Vererbung enthalten.
    Siehe Dissertation von G. Popp Kapitel 4 ab Seite 29.
    http://mediatum.ub.tum.de/mediatum/s...df?hosts=local
    Ich möchte ein Tutorial über ein dynamisches Rechtemanagement-System schreiben (mit Rechtevererbung). Suche nach Freiwilligen! -> php_jan@freenet.de

  • #2
    hmm... seht ihr nur den Anhang oder habe ich etwas vergessen?

    zur Sicherheit: Mein Entwurf!
    http://www.php-lernen.de/rechte_11.png
    Zuletzt geändert von php_jan; 17.12.2005, 14:25.
    Ich möchte ein Tutorial über ein dynamisches Rechtemanagement-System schreiben (mit Rechtevererbung). Suche nach Freiwilligen! -> php_jan@freenet.de

    Kommentar


    • #3
      Original geschrieben von php_jan
      hmm... seht ihr nur den Anhang oder habe ich etwas vergessen?

      zur Sicherheit: Mein Entwurf!
      http://www.php-lernen.de/rechte_11.png
      ich seh ihn nicht :/

      Kommentar


      • #4
        hmmm... vielleicht sollte ich mich ersteinmal in die Geheimnisse des Datei-Anhang in diesem Forum einarbeiten ;-) Das du die Datei nicht siehst, verwundert mich doch sehr... ich sehe sie...

        aber mal einen neuen...

        http://www.php-lernen.de/rechte_11.gif
        Ich möchte ein Tutorial über ein dynamisches Rechtemanagement-System schreiben (mit Rechtevererbung). Suche nach Freiwilligen! -> php_jan@freenet.de

        Kommentar


        • #5
          User, Gruppen, Rechtemanagement

          Hallo, ich habe bereits im Brainstorming Board meinen Entwurf und eine ausführliche Beschreibung gepostet. Da es doch sehr dringend ist, bitte ich euch, vielleicht ein Statement abzugeben.

          * Effizienz
          * Skalierbarkeit
          * sonstiges

          Link:
          http://www.php-resource.de/forum/sho...threadid=63453

          Auch wenn ich dieses System für ein CMS benötige, schreibe ich gerade ein Tutorial für die breite Masse. Deswegen sollte es schon Hand und Fuß haben!

          Vielen Dank!
          Jan
          Ich möchte ein Tutorial über ein dynamisches Rechtemanagement-System schreiben (mit Rechtevererbung). Suche nach Freiwilligen! -> php_jan@freenet.de

          Kommentar


          • #6
            was mir etwas zu denken gibt ist die Tabelle: user_rolle_gruppe.

            Wo ist da der Primärschlüssel?
            Sinnigerweise müssten die 3 Attribute zusammen Primärschlüssel sein.

            Dir ist auch klar, dass du damit keine Rolle einer gruppe zuordnen kannst ohne dass die Gruppe einem User zugeordnet ist.
            Oder:
            du kannst keine rolle einem User zuordnen, ohne die rolle einer Gruppe zuzuordnen.

            Ich würde hier doch 3 binäre relationen nehmen, einmal zwischen user und recht und einmal zwischen gruppe und recht und eine zwischen user und gruppe.

            Damit bist du etwas flexibler, wenn du einem bestimmten benutzer mehr rechte verleiehn willst, als anderen in der gruppe.

            Kommentar


            • #7
              Wo ist da der Primärschlüssel?
              Sinnigerweise müssten die 3 Attribute zusammen Primärschlüssel sein.
              Das könnte in der Tat ein Problem werden!

              Dir ist auch klar, dass du damit keine Rolle einer gruppe zuordnen kannst ohne dass die Gruppe einem User zugeordnet ist.
              Oder:
              du kannst keine rolle einem User zuordnen, ohne die rolle einer Gruppe zuzuordnen.
              Ein neuer Entwurf...

              http://www.php-lernen.de/rechte_12.gif

              Ich denke, diese beiden Probleme habe ich mit dem neuen Entwurf gelöst.


              Ich würde hier doch 3 binäre relationen nehmen, einmal zwischen user und recht und einmal zwischen gruppe und recht und eine zwischen user und gruppe.
              Binäre Relation zwischen User und Recht: Irgendwie stört mich diese Relation ein wenig, weil ich die Aufgabe z.B. knicken,lochen, abheften als einen Arbeitsablauf betrachte (Rolle: "Handlanger"). Wird dieser Workflow erweitert: knicken.lochen,abheften und wegwerfen ist das für mich eine neue Aufgabe für eine andere Kompetenz innerhalb des Content-Management-Systems (Rolle: Handlanger2).

              Binäre Relation zwischen Gruppe und Recht: Ein Recht gehört meiner Meinung nach nicht in die Gruppe... weil
              Eine Gruppe ist ein Teilbereich des Systems z.B. Gruppen: Artikelverwaltung, Administration, Forum etc.
              Rollen sind z.B. User, Editor, Author, Admin etc.
              Binäre Relation zwischen user und gruppe: Ein user betritt immer als Rolle in der Gruppe auf.

              Aber vielleicht kann mich jemand vom Gegenteil überzeugen. Würde mich freuen, weiter über diesen Entwurf zu diskutieren ;-)

              Gruß,
              Jan
              Ich möchte ein Tutorial über ein dynamisches Rechtemanagement-System schreiben (mit Rechtevererbung). Suche nach Freiwilligen! -> php_jan@freenet.de

              Kommentar


              • #8
                Original geschrieben von php_jan
                Hallo, ich habe bereits im Brainstorming Board meinen Entwurf und eine ausführliche Beschreibung gepostet. Da es doch sehr dringend ist, bitte ich euch, vielleicht ein Statement abzugeben.
                auch wenn du einen Verweis darauf eingebaut hast, führe ich deine Posts trotzdem zusammen, ob dringend oder nicht, du hast zukünftig 2 Sachen zu unterlassen:

                - drängeln
                - doppel posten

                Kommentar


                • #9
                  Original geschrieben von php_jan
                  Das könnte in der Tat ein Problem werden!



                  Ein neuer Entwurf...

                  http://www.php-lernen.de/rechte_12.gif

                  Ich denke, diese beiden Probleme habe ich mit dem neuen Entwurf gelöst.

                  Du hast das gelöst? Dir fehlt immernoch der Primärschlüssel in der Tabelle. Ist aber soweit nicht arg tragisch, nur wenn das ein Tut werden soll, dann solltest das noch verbessern.
                  Fehlt in anderen Tabellen übrigens auch.

                  Original geschrieben von php_jan
                  Binäre Relation zwischen User und Recht: Irgendwie stört mich diese Relation ein wenig, weil ich die Aufgabe z.B. knicken,lochen, abheften als einen Arbeitsablauf betrachte (Rolle: "Handlanger"). Wird dieser Workflow erweitert: knicken.lochen,abheften und wegwerfen ist das für mich eine neue Aufgabe für eine andere Kompetenz innerhalb des Content-Management-Systems (Rolle: Handlanger2).

                  Binäre Relation zwischen Gruppe und Recht: Ein Recht gehört meiner Meinung nach nicht in die Gruppe... weil

                  Binäre Relation zwischen user und gruppe: Ein user betritt immer als Rolle in der Gruppe auf.

                  Aber vielleicht kann mich jemand vom Gegenteil überzeugen. Würde mich freuen, weiter über diesen Entwurf zu diskutieren ;-)

                  Gruß,
                  Jan
                  Dann hab ich die Funktion der Gruppe bei dir falsch verstanden. In dem fall macht dein jetziger Ansatz durchaus Sinn.

                  Allgemein würde ich sagen, dass du dich noch etwas mit ERM beschäftigen solltest, wenn du schon Datenbanken damit Modellierst.
                  Zuletzt geändert von flyx; 19.12.2005, 12:39.

                  Kommentar


                  • #10
                    Allgemein würde ich sagen, dass du dich noch etwas mit ERM beschäftigen solltest, wenn du schon Datenbanken damit Modellierst.
                    Das Modell sollte nur das Prinzip darstellen. Sehr viel Erfahrung mit RRM habe ich leider noch nicht. Aber was nicht ist, kann ja noch werden! ;-)

                    Vielen Dank für deine Hilfe!
                    Jan
                    Zuletzt geändert von php_jan; 19.12.2005, 14:45.
                    Ich möchte ein Tutorial über ein dynamisches Rechtemanagement-System schreiben (mit Rechtevererbung). Suche nach Freiwilligen! -> php_jan@freenet.de

                    Kommentar


                    • #11
                      @php_jan Besten Dank, beitrag hat mir echt geholfen dafür gibbet nen rocker . Werd mich mal an dem Beispiel orintieren und meine Umsetzung an deiner anlehnen

                      @asp2php Wie immer unhöfflich und keinesfalls hilfreich, schade du kannst doch bestimmt mehr

                      mfg
                      alex

                      Kommentar


                      • #12
                        Original geschrieben von atothek
                        @asp2php Wie immer unhöfflich [...]
                        @atothek:
                        Unterlasse sowas zukünftig (zumal der Hinweis noch nicht einmal an dich gerichtet war, und dich somit einen Sch... anging), sonst ist für dich hier bald Feierabend!
                        Keine weitere Diskussion darüber.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar

                        Lädt...
                        X