Logo

SQL

Datenbank Userrechte

In diesem Artikel möchte ich auf die differenzierte Verwendung von Nutzerrecheten in Datenbankmanagementsystemen (DBMS) eingehen. Dabei versuche ich zu erklären warum es wichtig ist die Userrechte von Anfang an zu planen und welche Probleme auftreten können wenn dies nicht geschieht. Darüber hinaus möchte ich auch noch auf Sicherheitsprobleme, abseits von Hackerangriffen eingehen, und aufzeigen warum genau an diesne Stellen ein ordentliches Rechtemanagement den Schaden hätte abwehren können oder zumindest reduzieren kann.

Inhalt

Warum differenzierte Userrechte?

Jetzt wird sich der Ein oder Andere fragen warum man den Aufwand betreiben sollte bestimmte Rechte einem User zu geben oder zu verwehren und gegenebenfalls sogar unterschiedliche Nutzer anzulegen, wenn es doch auch mit einem Nutzer klappt der alle Rechte hat.

Ich versuche das Ganze anhand eines Beispiels erklären: Zu einem Haus haben zwei Personen einen Schlüssel. Mit diesem Schlüssel lassen sich alle Türen im Haus öffnen. Plötzlich fehlt aus dem Büro von Person A ein Gegenstand und Person A fragt sich wo diese hingekommen ist. Die Erklärung ist in dem Fall sehr einfach: Person B hat den Gegenstand entfernt, denn niemand anderes hat Zugang.

Jetzt haben sich Person A und Person B darauf geeinigt eine Putzfrau einszustellen und einen Hausmeister zu beschäftigen. Beide Angestellte erhalten ebenfalls einen Schlüssel zu allen Räumen. Wenn nun ein Gegenstand weg ist wird es schwer herauszufinden wo dieser hin ist.

Genau hier helfen die differenzierten Userrechte. Haben Person A und B nur Zugriff auf ihr eigenes Büro, die Putzfrau nur Zugriff auf die öffentlichen Räume ohne den Keller und der Hausmeister keinen Zugriff auf die Büros, lassen sich Änderungen in den Räumen leichter bestimmten Personen zuordnen. Auch wenn der Hausmeister beispielweise seinen Schlüssel verliert wären Unterlagen in den Büros noch sicher.

Übertragen auf ein DBMS zeigt es uns, dass es je nach gespeicherten Daten Sinn macht den Mehrausfwand für differenzierte Userrechte auf sich zu nehmen. Hierbei muss der Aufwand jedoch ganz klar im Verhältnis zu den zu schützenden Daten stehen. Wenn ich also in meiner Datenbank nur Informationen eines Onlinekatalogs speichere, welche ohnehin öffentlich abfragbar sind, benötige ich hier kaum eigene Nutzer für spezielle Bereiche. Habe ich jedoch eine Kundendatenbank mit Bestellhistorien und Zahlungsdaten macht es sehr wohl Sinn etwas Arbeit in den Schutz der teils sehr sensiblen Daten zu stecken. Hier muss also von Fall zu Fall abgewogen werden wie viel Arbeit investiert werden soll.

Worauf ist zu achten?

Haben ich die Notwendigkeit von differenzierten Userrechten für mein Projekt erkannt ist es um so wichtiger möglichst im Vorfeld der Umsetzung meines Datenbankdesigns die einzelen Nutzer zu planen. Hier sollte ich auch ein Auge auf eventeull kommende Erweiterungen haben und entsprechnde Möglichkeiten einplanen.

  • Welche Bereiche der Datenbank können einer bestimmten Funktion zugeordnet werden?
  • Welcher Nutzer muss auf welche Bereiche Zugriff haben?
  • Welcher Nutzer muss wird von einer Software benutzt werden damit dies lauffähig ist?
  • Welcher Daten bedürfen besonderem Schutz?
  • Gibt es rechtliche Vorgaben an die ich mich halten muss?
  • Welche künftigen Änderungen und Erweiterungen sind denkbar?

Besonders bei Updates oder Patches muss darauf geachtet werden das bestehende User Zugriff auf das erhalten, was sie zum reibungslosen Betrieb benötigen. Daher möchte ich besonders darauf hinweisen das es wichtig ist auch schon in einer Staging- oder Demoumgebung die Verhältnisse des Livesystems abzubilden. Gern wird aus Bequemlichkeit währen der Entwicklung auf diese zeitraubenden Konfigurationen verzichtet. Das kann sich aber beim Deploy Prozess im Live System böse rechen und im schlimmsten Fall ist es der Kunde dem diese Unachtsamkeit auffällt.

Ausserdem mag es in bestimmten Bereichen rechtliche Vorschriften geben die eingehalten werden müssen um bestimmte Daten überhaupt vorhalten zu dürfen, welche von Land zu Land verschieden sein können.

Welchen Nutzen habe ich?

Wie eingangs bereits erwähnt liegt der Nutzen bei einem solchen Vorgeben darin, das in vielen Fällen Schaden abgewehrt, oder zumindest minimiert werden kann. Hierbei sehe ich mögliche Angriffszenarien weniger bei irgendwelchen ominösen Hackern. Die Gefahr eines solchen Angriffs ist sicherlich gegeben und sollte auch nicht ignoriert werden. Hat ein Nutzer aber Zugriff auf das Hostsystem einer Anwendung, so ist auch eine differenzierte Userverwaltung mit abgestuften Rechten kein Problem mehr.

In meinen Augen liegt das größte Sicherheitsrisiko bei den Menschen die Zugriff auf bestimmte Informationen haben oder hatten. Hierbei kann ich mir vom gekränkten ehemaligen Mitarbeite bis hin zum verzweifelten Mitarbeiter in der Schuldenfalle alles vorstellen was einen Menschen dazu bewegen könnte mit dem Verkauf von sensiblen Daten Geld zu verdienen oder aber mit der Veröffentlichung von Daten Schaden für ein Unternehmen hervorzurufen.

Natürlich kann ich mit diffenrezierten Userrechten diese Möglichkeit nicht völlig eliminieren, aber doch signifikant einschränken. Darüber hinaus habe ich im Nachhinein die Möglichkeit den Personenkreis einzuschränken der Zugriff auf die Daten hatte. Ergänzt werden sollte dieses Vorgehen immer durch ein Logging von Zugriffen der einzelnen User anhand zeitlicher Kriterien.

Es sollte der Grundsatz gelten: "So viel Zugriff wie nötig, so wenig Zugriff wie möglich."

Ideen oder Beiträge? Teilt sie mir mit!