Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Benutzerverwaltung Client-Server Datenbank (https://www.delphipraxis.net/188758-benutzerverwaltung-client-server-datenbank.html)

elmar.faber 5. Apr 2016 08:09

Datenbank: MS-SQL • Version: 2008 • Zugriff über: Netzwerk

Benutzerverwaltung Client-Server Datenbank
 
Hallo,

ich suche Konzepte zum Aufbau einer Client-Server Benutzerverwaltung - vornehmlich MS-SQL, doch sollte das Konzept ja durchaud übertragbar sein.
Erst einmal sehe ich zwei unterschiedliche Möglichkeiten:

1. Die Benutzerverwaltung verwendet die Datenbankfunktionalitäten, Benutzer anlegen, Rollen vergeben etc.
- Vorteil: Funktioniert und ist durch verwenden von Views sehr sicher, kein Benutzer hat direkten Zugriff auf die Tabellen
- Nachteil: eine eigene Instanz ist notwendig mit rechten die das alles ermöglichen.

2. Eine eigene Benutzerverwaltung mittels einer Tabelle die die Zugangsdaten und Rollen der einzelnen Benutzer enthält
- Vorteil: keine eigene Instanz nötig, es wird nur ein Benutzer benötigt
- Nachteil, ich hab keine Ahnung wie ich das am besten umsetzen soll.

Zum besseren Verständnis:

Die aktuelle Situation ist folgende: Ich habe eine Delphi Applikation die im Domänen-Netzwerk läuft und auf einen MS-SQL Server
via FireDAC Komponenten zugreift. Die Benutzer die sich an der Applikation anmelden werden als Datenbank-Benutzer auf dem Server
eingetragen und über Rollen bekommen sie die Rechte innerhalb der Datenbank zugewiesen. Bei 50 Benutzern muß ich 50 Benutzer-Einträge
in die Datenbank machen und benötige dazu höhere Rechte zur Verwaltung auf dem SQL Server.
Im MS-SQL Cluster bräuchte ich nun eine eigene Instanz dafür ansonsten könnte ich auch Benutzer anderer Datenbanken löschen.
Das will der Systembetrieb nicht.
Wenn ich nun eine Tabelle nehme und dort meine Anwenderdaten ablege, bräuchte ich nur einen Benutzer der das Recht hat lesend und schreibend
auf die Datenbank zuzugreifen, müsste aber die Zugriffsverwaltung irgendwie innerhalb meiner Datenbank organisieren.
Da fehlt mir aber die zündende Idee, bzw. ich weiß nicht, ob das überhaupt funktionieren kann.
Es steht die Delphi XE7 Enterprise Version zur Verfügung.

zu 2: Wenn ich mit FDConnection eine Verbindung aufbaue mit einem Benutzer der lediglich das Recht hat eine Stored-Procedure
aufzurufen mit der ich auf die Tabelle mit den Benutzerdaten zugreifen kann, könnte ich ja die Benutzerdaten überprüfen
aber wie geht es weiter? Ich habe doch lediglich die Rechte zur Verfügung die der einzelne Benutzer hat - somit hilft mir
das ja nicht weiter? Wie kann ich im Backend (in meiner Datenbank) eine Verwaltung aufbauen die nur einen Benutzer benötigt?

Gibt es noch andere Verfahren und kennt von euch jemand Links die mir da auf die Sprünge helfen?

Ich hoffe auf eine angeregte Diskussion

Viele Grüße

Crossposting: http://forum.delphi-treff.de/index.p...105#post445106

jobo 5. Apr 2016 08:39

AW: Benutzerverwaltung Client-Server Datenbank
 
Was ist denn so schlimm an einer 2. Instanz. Kostet das? Oder geht es um den Ressourcenverbrauch?
Eine eigene Welt hätte den Vorteil, dass es nie Streß gibt, wenn irgendwo was schief läuft und die IT sagt, sie haben da doch vorgestern was eingespielt...
Ansonsten bin ich nicht so bewandert mit dem MSSQL Benutzerkonzept, aber es gibt doch dort nicht nur Instanzen, sondern auch ganz normale Datenbanken. Bieten die nicht schon einen eigenständigen Rechtekontext? Dann kannst Du eine eigene DB nehmen und dort das gleiche machen wie in einer eigenen Instanz, ohne das Du auf die anderen Systeme kannst.

Nur ein User für den Zugriff, das wird ja eigentlich bei fast jeder Webanwendung so gemacht. Die haben dann für sich ein Userkonzept mit eigenen Usertabelle, PW Verwaltung usw.. Sollte also im Zweifel auch möglich sein.

In Oracle mache ich Rollenzuweisung beim Login. Ein User, der nichts darf, bekommt unter gewissen umständen beim Login eine Rolle zugewiesen. Das ist Dbseitig wiederum mit Priviliges und PW verbunden, könnte mir aber vorstellen, dass es sowas ähnliches auch in MSSQL gibt. Die schauen sich ja eh immer untereinander alles ab.

elmar.faber 5. Apr 2016 10:35

AW: Benutzerverwaltung Client-Server Datenbank
 
Ja das habe ich auch gefragt, aber da geht es wohl um Prinzipien, dann kommen am ende noch andere und wollen auch...

Ja wie könnte man das wie bei einer Webanwendung umsetzen? Das wäre genau das, was ich gerne ausprobieren würde...

mquadrat 5. Apr 2016 11:20

AW: Benutzerverwaltung Client-Server Datenbank
 
Üblicherweise nimmt man 2.) und sorgt in der Zwischenschicht dafür, dass keine Statements gegen die DB ausgeführt werden, die im aktuellen Nutzerkontext nicht zulässig sind. Der DB-Benutzer darf meist alles.

elmar.faber 5. Apr 2016 12:48

AW: Benutzerverwaltung Client-Server Datenbank
 
Aber eine Zwischenschicht gibt es doch in meinem Fall nicht - oder hab ich da was mißverstanden?

mkinzler 5. Apr 2016 12:59

AW: Benutzerverwaltung Client-Server Datenbank
 
Die "Zwischenschicht" kann auch in Deinem Programm implementiert werden. Die Benutzer müssen dann nicht als Datenbankbenutzer angelegt werden, sondern Dein Programm enscheidet anhand des Benutzers (des Programmes) was dieser darf.

elmar.faber 5. Apr 2016 14:09

AW: Benutzerverwaltung Client-Server Datenbank
 
Dann hätte ich aber keine saubere Trennung von Frontend und Backend mehr da ja prinzipiell
alle Daten ins Frontend gelangen und erst da gefiltert wird

mkinzler 5. Apr 2016 14:50

AW: Benutzerverwaltung Client-Server Datenbank
 
Jein. Wenn die Rechte fehlen kannst Du ja verhindern, dass die Daten geladen werden.

elmar.faber 5. Apr 2016 16:04

AW: Benutzerverwaltung Client-Server Datenbank
 
Ja genau da liegt mein Verständnisproblem, ich baue eine Verbindung zur Datenbank auf und die Rechte
sind fest über einen Benutzer definiert, wie erreiche ich es, dass ein bestimmter Benutzer nur ganz
bestimmte Rechte bekommt? Ich müßte doch hierzu die Verbindung trennen und mit einem Benutzer mit anderen Rechten
wieder neu aufbauen. Wie steuere ich die Rechte für viele Anwender mit nur einem angelegten DB-Benutzer?
Und verhindere gleichzeitig, dass nie Daten das Backend verlassen, zu denen der Anwender keine Rechte besitzt?

mkinzler 5. Apr 2016 16:10

AW: Benutzerverwaltung Client-Server Datenbank
 
Die Frage ist ja, ob man das über Datenbankbenutzer regeln muss, oder durch eine Benutzerverwaltung im Programm.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 Uhr.
Seite 1 von 2  1 2      

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