![]() |
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: ![]() |
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. |
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... |
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.
|
AW: Benutzerverwaltung Client-Server Datenbank
Aber eine Zwischenschicht gibt es doch in meinem Fall nicht - oder hab ich da was mißverstanden?
|
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.
|
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 |
AW: Benutzerverwaltung Client-Server Datenbank
Jein. Wenn die Rechte fehlen kannst Du ja verhindern, dass die Daten geladen werden.
|
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? |
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 18:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz