AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MSSQL Datenbank >sicher< mandantenfähig machen
Thema durchsuchen
Ansicht
Themen-Optionen

MSSQL Datenbank >sicher< mandantenfähig machen

Ein Thema von jensw_2000 · begonnen am 28. Sep 2006 · letzter Beitrag vom 30. Sep 2006
 
jensw_2000
(Gast)

n/a Beiträge
 
#1

MSSQL Datenbank >sicher< mandantenfähig machen

  Alt 28. Sep 2006, 02:18
Datenbank: MSSQL • Version: 2000 • Zugriff über: ADO, T-SQL
Ich muss eines meiner "größeren" Datenbank-Projekte demnächst auf einem zentralen SQL-Server für mehrere konkurierende Unternehmen bereitstellen.
Bei der Suche nach der richtigen "Mehrmandanten-Lösung" habe ich nicht die nötige Praxiserfahrung.


Lösungsansatz eins, Mandantentabelle mit Mandanten-ID Beziehing in den "Nutzdaten-Tabellen", habe ich verworfen, weil er aus meiner Sicht zu unsicher ist.

In meiner Software kann ich noch sicherstellen, das Benutzer xy zu Mandant 1 gehört und kann die Mandanten-ID hart in den SQL-Abfragen übergeben.
SELECT * FROM Kundendaten WHERE ID_Mandant = 1 Kann ich irgendwie verhindern, das der User einen SQL-Editor nimmt, und sich die Daten von Mandant 2 klaut ?
SELECT * FROM Kundendaten WHERE ID_Mandant = 2 .


Mein zweiter Gedanke war, pro Kunden eine eigene Datenbank anzulegen, auf die nur er Zugriff hat.
Es können aber mal 30-40 Kunden werden ... Bedeutet das den sicheren Performance-Tot des SQL-Servers ?
Der Arme muss jetzt in 40 DB's die Statistiken aktualisieren, Indizies warten usw.


Variante drei ist mir entwicklungstechnisch zu "frickelig".
Ich könnte alle Tabellen mandantengebunden benennen und jeden SQL-Benutzer mit SQL-Server Rechten auf seine Tabellen beschränken.
Code:
Benutzer M1 hat nur Zugriff auf Tabelle Kundendaten_M1, Benutzer M2 nur auf Kundendaten_M2 usw.
Das wäre kein Problem. Sorgen habe ich nur mit den bestehenden 350 SP's, 80 Funktionen und etlichen Triggern in der DB. Ich müsste alles komplett durcharbeiten und die Mandaten-Kennung ( = SQL-Benutzer ) auslesen und mit dynamic-SQL neuen SQL-Code stricken, damit ich den kompletten SQL-Code nicht auch 40 mal anlegen und später auch noch 40 warten muss.
Zudem bin ich mir nicht sicher, ob die Performance bei dieser Variante nicht genauso in die Knie geht, wie bei der Variante mit den 40 Datenbanken.

Die Ideal-Lösung sollte folgende Kriterien erfüllen:
Die Datenbank muss mandanten-isoliert arbeiten, die Mehrbelastung des Servers durch das Mehrmandanten-Szenario sollte möglicht gering sein und der SQL-Code sollte grundlegend für alle Mandanten zentral wartbar sein.


Hatte jemand von euch mal ein ähnliches Problem, bzw. einen Lösungsansatz ?


Schöne Grüße,
Jens
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:57 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 by Thomas Breitkreuz