Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Rechte aus DB Gruppieren (https://www.delphipraxis.net/118255-rechte-aus-db-gruppieren.html)

barnti 4. Aug 2008 08:41

Datenbank: Oracle • Version: 9/10 • Zugriff über: pl/sql ODBC

Rechte aus DB Gruppieren
 
Hallo,

heute mal wieder etwas zu Datenbanken.

Ich habe die Aufgabe Rechte von mehreren Applikationen zu vereinheitlichen. Die Rechte sind in einer DB hinterlegt. Pro Applikation gibt es verschiedene Funktionen, die jeweils mit einem Recht verbunden sind, z.B. Leserechte, Schreibrechte, etc. Wird nun ein User neu eingerichtet, so wurden bisher benötigte Rechte einzeln in die DB eingetragen. Das hatte zur Folge, dass es mitlerweile unterschiedlichste Kombinationen der Rechte in der DB gibt.

Um diese Rechtevergabe zu vereinfachen, möchte ich nun bestimmte Gruppen oder Rechteprofile identifizieren. Beispiel

User A hat die Rechte 21, 22, 23 => Profil I
User B hat die Rechte 21, 22, 23, 38 => Profil II

usw.
Damit könnte man einen User einrichten indem man ihm eiinem bestimmten Profil zuordnet.


Meine Fragen:

1. Wie würdet ihr vorgehen, um die Profile zu bestimmen(User eines Profils)?
2. Wie kann man geschickt die Anzahl der Profile herabsetzen ohne Rechte zu verlieren?

DGL-luke 4. Aug 2008 09:23

Re: Rechte aus DB Gruppieren
 
Naja.

Tabelle PrivilegeCaptions: PrivilegeID int, Caption varchar(255), PRIMARY KEY PrivilegeID autoincrement;

Ordnet jedem recht, das durch eine zahl identifiziert ist, eine beschreibung zu.

Tabelle Privileges: UserID int, Privilege int

Ordnet einzelnen usern einzelne rechte zu.

Tabelle ProfileLinks: UserID int, PrivilegeProfile int

Ordnet einzelnen usern Profile zu

Tabelle Profiles: ProfileID int, Privilege int

Ordnet einzelnen profilen rechte zu.

So könnte man es machen, ist aber so normalisiert, dass die einfache frage, "darf user $userid eine aktion ausführen, die das recht $privilege erfordert" einiges an logik über der DB erfordert. (also anwendungscode oder SP)

barnti 4. Aug 2008 09:37

Re: Rechte aus DB Gruppieren
 
Hallo DGL-luke,

ich habe mich wohl mißverständlich ausgedrückt: Die User und zugehörigen Rechte existieren bereits. Ich möchte daraus Profile bilden und die Anzahl der Profile auf ein Minimum beschränken.

DGL-luke 4. Aug 2008 10:33

Re: Rechte aus DB Gruppieren
 
Naja. Zuerst muss auf der DB auch eine Infrastruktur für die Templates stehen.

Und dann stehen wir vor einem Problem der linearen (?) ganzzahligen Optimierung.
Du musst die also ein Optimierungsframework suchen - eine Matlab-Implementation, oder dieses gnu-teil. damit drückst du dein problem durch mathematische gleichungen und eine optimierungsbedingung aus.
wenn du glück hast, spuckt das programm dir dann eine passende lösung aus.

Andererseits wird ja wohl eine gewisse Logik auf die rechterverteilung superimposed sein. Z.B. werden bestimmte Administratoren sehr viele Rechte haben, Benutzer weniger, etc.
Ich würde das also eher "nach Gefühl" machen, und eine gewisse Rollenverteilung erstellen. Also Benutzer, Administrator, Reportersteller, etc.

Diese Rollen gleich mal in Profile gießen und dann schauen, obs hinhaut.

mkinzler 4. Aug 2008 10:34

Re: Rechte aus DB Gruppieren
 
Ausserdem könnte man additive Rechtegruppen (Rollen) verwenden.

DGL-luke 4. Aug 2008 10:37

Re: Rechte aus DB Gruppieren
 
stimmt. ein Administrator müsste dann entweder die Profile "Benutzer" und "Administrator" bekommen, oder das Profil "Administrator" müsste darauf verweisen, dass es das Profil "Benutzer" bereits enthält.

barnti 4. Aug 2008 10:53

Re: Rechte aus DB Gruppieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich habe mir mal alle Profile in einer Excell-Tabelle dargestellt. Daraus ergeben sich nun 35 verschiedene Profile. Wobei einige Profile in anderen enthalten sind.

Beispiel siehe Screenshot

Ich würde nun als nächstes schauen wie ich ein Profil durch andere Profile ausdrücken kann. Scheint mir aber sehr nach "versuchen". Eine andere Optimierungsstrategie habe ich nicht. Matlab habe ich mir noch nicht angeschaut.

Weitere Vorschläge zur Optimierung der Profile?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz