Frage

Was ist die beste Datenbank-schema zu verfolgen, role-based access controls für eine web-Anwendung?

Ich bin mit Rails, aber das RBAC-plugin verbunden durch Google sieht nicht gepflegt (nur 300 verpflichtet, SVN;die Letzte war vor fast einem Jahr).

Das Konzept ist einfach genug für die Durchführung von Grund auf neu, aber dennoch Komplex und wichtig genug, dass es sich lohnt, Recht zu bekommen.

So, wie andere Architekten und Umsetzung Ihrer RBAC-Modell?

War es hilfreich?

Lösung

Zu meinen eher Grundkenntnisse in diesem Bereich, die grundlegenden Akteure eines RBAC sind:

  • Ressourcen.
  • Berechtigungen.
  • Benutzer.
  • Rollen (das heißt Gruppen).

Ressourcen <- erfordern ->. ( eine oder mehr ) Berechtigungen

Rollen <- sind Sammlungen von ->. ( eine oder mehrere ) Berechtigungen

Nutzer <- haben kann ->. ( eine oder mehr ) Rollen

Die Tabellen für ein solches Modell wäre:

  • Erlaubnis
  • Rolle
  • Benutzer
  • role_permission
  • user_role

Jetzt sollten Sie Ressourcen auch hier sind, wenn Sie Benutzer Ihrer Anwendung wollen in der Lage zu konfigurieren, welche eine Ressource müssen die Berechtigungen. Aber ich brauchte nie. Hoffe, das hilft.

Andere Tipps

Hier ist ein einfaches Diagramm Amr Mostafa die ausgezeichnete Antwort

zu veranschaulichen

eingeben Bild Beschreibung hier

Ich bin zufällig auf das RBAC-sub-system hier bei der Arbeit in diese moment...was für ein Zufall.

Mein Modell beruht auf den Bausteinen der verschiedenen Einheiten in das system, die Berechtigungen benötigen, werden Sie Attribute zum anzeigen/aktualisieren oder Aktionen durchführen.Es gibt auch, natürlich, verschiedene Rollen in das system (die Nutzer gegeben werden), und der Leim, der hält das ganze zusammen ist Zugriffsregel,, die verbindet eine Besondere Rolle, eine spezielle Erlaubnis benötigen Unternehmen und die Genehmigung gewährt.Eine access-Regel Aussehen könnte wie diese:

rule 14: guest role + page name + read permission
rule 46: approver role + add column + execute permission

und so weiter.Ich lasse den ERD-als übung für den Leser ;-) wenn Sie Fragen haben, einen Kommentar hinterlassen.

Yuval =8-)

Sie können mit Restful ACL Rails Plugin .

Ich denke, die Antwort auf Ihre Frage so tief geht, wie Sie gehen möchten. Wenn Sie geschehen, über das Setzen Rolle in Gruppen denken und dann Assoziieren Gruppen mit Benutzern würde nicht ausreichen. Schließlich müssen Sie bestimmte Berechtigungen für einen Benutzer auf einem bestimmten Objekt (ein Forum, ein Video usw.).

geben

Ich bin mehr in der Nähe Yuval Antwort, alles, was wir brauchen, ist projektweit Objekte + Aktionen + Benutzer zu verknüpfen. Zur Bereitstellung dieser; ein Basisobjekt (Entity) ist durchaus sinnvoll. Jedes Objekt von Entity vererben kann leicht mit einer Benutzer-Aktion auf diese Weise in Verbindung gebracht werden.

Wie Sie auch die Dinge einfach halten wollen; Mein Vorschlag wäre;

  • Jedes Objekt aufgrund rbac Einschränkungen sollte von einer Basis Entity abzuleiten.
  • Es sollte eine Liste der Rollen sein, die mit einer Entität Eins-zu-Eins-Beziehung stehen.
  • Es sollte eine Liste der Beziehungen zwischen Benutzern und Rollen sein.

noch einen Schritt weiter gehen, würde ich auch die folgende (für eine automatisierte RBAC) reccomend

  • Ich benutze Service-basierten Zugriff auf meine Objekte. Das ist; Ich schaffe respositories von Objekten (die für mich der db-Zugang zu tun) und ich Zugriff auf Repositories über Servicefunktionen.
  • Ich verwende ein benutzerdefiniertes Attribut am Anfang jeder Servicefunktion. Dies definiert die erforderliche Rolle diese Funktion zuzugreifen.
  • Ich verwende den Benutzerparameter, um alle meine Service-Funktionen zugreifen zu können, und jeder Servicefunktion hat eine Rolle Prüfung vor sich ausführt. Reflexion hilft mir, welche Funktion ich rufe, und welche Art von Rolle zu verstehen, es hat (über benutzerdefinierte Attribute)
  • Ich betreibe auch einen Initialisierer auf meinem Start der Anwendung und prüft für alle Funktionen (und ihre Attribute) und sieht, wenn ich eine neue erforderliche Rolle hinzugefügt. Wenn es eine Rolle ist nur hinzugefügt I und erscheint nicht auf dem db zu sein, schafft es auf db.

Aber ach, das ist nur für .NET zur Verfügung, soweit ich weiß, Java nicht benutzerdefinierte Attribute hat, so ist das noch nicht wahrscheinlich für Java verfügbar sein.

Ich möchte mit einigen Codebeispielen kommen, aber ich bin zu faul, das zu tun. Dennoch, wenn Sie Fragen zu meiner Art zu rbac haben; Sie können hier fragen und ich werde sicher antworten kann.

Rolle Requirement mit Restful Authentifizierung funktioniert sehr gut rollenbasierten Authentifizierungsfunktionen zur Verfügung zu stellen und gut gepflegt wird.

Für .net-Anwendungen sollten Sie so etwas wie Visual Guard http: //www.visual-guard. com / zu vermeiden, Berechtigungen und Rollen von Grund auf neu zu behandeln.

Auch für .net, haben Sie die Mitgliedschafts- und Rollenanbieter und Genehmigung bei der Konfiguration behandelt. http://www.odetocode.com/Articles/427.aspx

Versuchen Sie https://github.com/ThoughtWorksStudios/piece , es ist eine Regel-Engine für Sie Benutzer rollenbasierte Zugriffskontrolle verwalten:

  1. definieren Zugriffskontrollregeln
  2. Regeln kombinieren, um neue Regeln zu konstruieren

Sie können vollständige Rails-Anwendung Beispiel finden Sie hier: https://github.com/xli/piece-blog

Einführung in die RBAC -

Role based access control system ist eine Methode, den Zugang zu " einigen Quellen oder Anwendungen oder einige Funktionen von Anwendungen auf der Grundlage der Rollen, die von Benutzern der Organisation.

Hier können Einschränkungen werden durch mehrere Berechtigungen, die sind erstellt von administrator auf den Zugriff einzuschränken, und diese Berechtigungen Kollektiv darstellt, eine Rolle, die dem Benutzer zugewiesen.

Und wenn wir gehen, die leichten, die tiefer in RBAC, es enthält im Grunde 3 features.

1) Authentifizierung - Es bestätigt die Identität des Benutzers.Normalerweise erfolgt über Benutzerkonten und Passwörter oder Anmeldeinformationen.

2) Berechtigung - Es wird definiert, was Benutzer tun können und nicht tun können in einer Anwendung.Ex.'Ändern der Reihenfolge" ist erlaubt, aber "creating new order" ist nicht erlaubt.

3) Prüfung der Benutzer-Aktionen auf Anwendungen.- Hält track der Benutzer die Aktionen auf Anwendungen, sowie wer hat eingeräumt, die den Zugriff auf die Benutzer?

Das war sehr basic-top-view-Bild der RBAC-system.

Grundlegende Struktur der RBAC-system kann enthalten folgende Komponenten:Benutzer, Rollen, Berechtigungen oder Einschränkungen, Ressourcen.

  • Berechtigungen oder Einschränkungen – Berechtigungen stellt einen Zugang zu Anwendung Ressource.
  • Rolle – Es enthält eine Sammlung von Berechtigungen
  • Benutzer – Einzelne oder mehrere Rollen, die dem Benutzer zugewiesen, so dass schließlich Nutzer enthält die Berechtigungen, die über Mittel der Rolle.

Darüber hinaus können Sie auch die Sammlung von Benutzer – namens – Gruppen und der Rolle können Gruppen zugewiesen werden, wenn Sie wollen, um komplexe Szenarien.So, Das war sehr grundlegende Informationen zu RBAC-Struktur.

Ich mag diese Blog-Post: https: // Inhalt. pivotal.io/blog/access-control-permissions-in-rails

EDIT:

Es scheint, dass ryanb von Railscasts auf der gleichen Linie gedacht und erstellt ein Juwel namens Cancan https: // GitHub. com / ryanb / Cancan eine grundlegende Technik ähnlich den pivotollabs mit schreiben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top