SQL Server-Security – Teil 5: Rechtevergabe auf Abteilungsebene

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Bernd Jungbluth – Horn

Die aktuelle Rechtevergabe der Beispielapplikation erlaubt den Anwendern eine Anmeldung am SQL Server und den Zugang zur Datenbank WaWi_SQL. Innerhalb der Datenbank ist ihnen das Lesen und Schreiben der Daten sowie das Ausführen von Gespeicherten Prozeduren erlaubt. Ein solch pauschales Berechtigungskonzept beinhaltet viel zu viele Rechte. Den Anwendern stehen alle Daten zur Verfügung – sogar die Daten, die sie besser nicht lesen oder ändern sollten. Um das zu verhindern, bedarf es einer detaillierteren Rechtevergabe. Eine mögliche Variante zeigt Ihnen dieser Beitrag.

Warnung

Die beschriebenen Aktionen haben Auswirkungen auf Ihre SQL Server-Installation. Führen Sie die Aktionen nur in einer Testumgebung aus. Verwenden Sie unter keinen Umständen Ihren produktiven SQL Server!

Aktueller Stand

Das derzeitige Berechtigungskonzept basiert auf der SQL Server-Anmeldung WaWiMa. Mit dieser Anmeldung stellt die Access-Applikation WaWi die Verbindung zur SQL Server-Datenbank WaWi_SQL her. Ob nun eine Mitarbeiterin aus dem Vertrieb oder ein Mitarbeiter aus der Personalabteilung mit der Access-Applikation WaWi arbeitet, der Datenzugriff erfolgt immer über die gleiche Anmeldung. Die Zugriffsrechte werden folglich nicht über den Anwender, sondern über die Applikation gesteuert.

Welcher Anwender in der Applikation mit welchen Daten arbeiten darf, wird beim Start der Applikation bestimmt. Im Start-Formular ermittelt die VBA-Funktion fBerechtigungen den aktuellen Windows-Benutzer und aktiviert entweder die Schaltflächen für den Vertrieb oder die für die Personalverwaltung.

Auf diese Weise wird verhindert, dass ein Mitarbeiter des Vertriebs die Funktionen der Personalverwaltung nutzen kann. Allerdings schränkt dies nur den Zugriff auf die Funktionen ein, nicht aber den auf die Daten. Die Zugriffssteuerung findet ausschließlich im Start-Formular statt. Umgeht ein Anwender dieses Formular, stehen ihm alle Daten der Datenbank WaWi_SQL zur Verfügung. Dazu gehören auch die Daten der Personalverwaltung.

Das gilt es zu vermeiden. Dazu wird das Berechtigungskonzept um eine weitere Anmeldung im SQL Server ergänzt. Das Ziel ist eine Rechtevergabe auf Abteilungsebene.

Pro Abteilung eine Anmeldung

Das neue Berechtigungskonzept enthält zwei SQL Server-Anmeldungen, eine für die Installationen der Access-Applikation WaWi im Vertrieb und eine weitere für die Installationen in der Personalabteilung. Zur Umsetzung des neuen Berechtigungskonzepts ist zuerst eine Anmeldung im SQL Server anzulegen und der Datenbank WaWi_SQL zuzuordnen.

Der dabei erstellte Benutzer erhält in der Datenbank pauschale Lese- und Schreibrechte sowie das Recht zum Ausführen aller gespeicherten Prozeduren. Auf den Rechnern der Personalabteilung wird dann in den bestehenden ODBC-Datenquellen die neue Anmeldung eingetragen. Abschließend sind in der Access-Applikation die Tabellen neu einzubinden und die Verbindungseigenschaften der Pass-Through-Abfragen sowie die der ADO-Zugriffe anzupassen.

Auf den Rechnern des Vertriebs sind keine Änderungen notwendig. Die Verbindung von der Access-Applikation zur SQL Server-Datenbank erfolgt dort weiterhin über die Anmeldung WaWiMa. Allerdings wird diese in ihren Rechten eingeschränkt. Die Zugriffe auf die für die Personalverwaltung relevanten Tabellen und gespeicherten Prozeduren werden verweigert. Das Einschränken dieser Rechte findet im SQL Server statt.

Doch der Reihe nach. Als Erstes erstellen Sie die Beispielumgebung mit der SQL Server-Datenbank WaWi_SQL, der gleichnamigen ODBC-Datenquelle und der Access-Applikation WaWi. Die hierzu notwendigen Schritte sehen Sie in der Installationsanleitung am Ende dieses Beitrags.

Danach legen Sie die neue SQL Server-Anmeldung an. Öffnen Sie dazu das SQL Server Management Studio und verbinden Sie sich mit Ihrem SQL Server. Im Objekt-Explorer erweitern Sie den Ordner Sicherheit und wählen im Kontextmenü des Unterordners Anmeldungen den Eintrag Neue Anmeldung (siehe Bild 1). Im Dialog Anmeldung – Neu geben Sie der Anmeldung den Namen WaWiPersonal und aktivieren die Option SQL Server-Authentifizierung.

Der Weg zur neuen Anmeldung

Bild 1: Der Weg zur neuen Anmeldung

Das Kennwort zur Anmeldung tragen Sie in den beiden Eingabefeldern Kennwort und Kennwort bestätigen ein. Vergeben Sie ein gutes Kennwort. Eines, das nicht leicht zu erraten ist. Immerhin soll es die Daten der Personalverwaltung vor unbefugtem Zugriff schützen. Stellen Sie sich nur einmal die Diskussionen vor, wenn unerlaubterweise die Gehälter der Mitarbeiter veröffentlicht würden!

Die Option Kennwortrichtline unterstützt Sie bei der Vergabe des Kennworts. Ist die Option aktiviert, muss das Kennwort den in Ihrem Unternehmen gültigen Richtlinien zur Vergabe von Kennwörtern entsprechen. Sollten Sie keine Kennwortrichtlinien definiert haben, können Sie das Kennwort nach einem Muster erstellen oder Sie lassen sich eines in einem Passwort-Safe generieren. Ein mögliches Muster wie die Vor- und Nachteile beider Vorgehensweisen wurden im dritten Teil dieser Beitragsreihe beschrieben.

Kennwörter sollten Sie regelmäßig ändern. Bei aktivierter Option Ablauf des Kennworts erzwingen erinnert Sie der SQL Server gemäß Ihrer Kennwortrichtlinien an diese Empfehlung.

Diese Art der Erinnerung kann sich jedoch schnell kontraproduktiv auswirken. Ist das Kennwort abgelaufen, verlangt der nächste Anmeldeversuch die Vergabe eines neuen Kennworts. Ein neues Kennwort ist schnell vergeben.

Das ist aber nur ein Teil der Aufgabe. Danach sind noch alle Client-Applikationen, die diese Anmeldung verwenden, an das neue Kennwort anzupassen. Je nach Anzahl der Client-Applikationen ist das schnell ein größerer Aufwand. Am besten deaktivieren Sie die Option Ablauf des Kennworts erzwingen. Das spart Ihnen unangenehme Überraschungen. Legen Sie sich stattdessen besser einen Termin an, der Sie an die Vergabe eines neuen Kennworts erinnert.

Das Entfernen des Häkchens in der Option Ablauf des Kennworts erzwingen deaktiviert sinnvollerweise ebenso die Option Benutzer muss das Kennwort bei der nächsten Anmeldung ändern.

Es macht keinen Unterschied, ob das Kennwort beim Ablauf oder bei der nächsten Anmeldung geändert werden muss. Mit der Kennwortänderung alleine ist es nicht getan. Es hat immer eine Anpassung der abhängigen Client-Applikationen zur Folge.

Als Nächstes legen Sie die Standarddatenbank der Anmeldung fest. Die Standarddatenbank wird verwendet, wenn beim Aufbau der Verbindung die Datenbank nicht explizit angegeben ist. Wählen Sie in der Auswahlliste Standarddatenbank den Eintrag WaWi_SQL.

Die Konfiguration der neuen Anmeldung wäre damit soweit abgeschlossen (siehe Bild 2). Dennoch sollten Sie nicht auf OK klicken. In der Seite Benutzerzuordnung können Sie jetzt nämlich direkt den zugehörigen Benutzer in der Datenbank WaWi_SQL anlegen und ihm die entsprechenden Rechte geben.

Die Anmeldung WaWiPersonal

Bild 2: Die Anmeldung WaWiPersonal

Wechseln Sie zur Seite Benutzerzuordnung und wählen Sie im oberen Bereich die Datenbank WaWi_SQL aus. Durch diese Auswahl wird der Benutzer WaWiPersonal in der Datenbank erstellt. Im unteren Bereich geben Sie dem Benutzer die Zugriffsrechte.

Aktivieren Sie hierzu die Systemdatenbankrollen db_datareader und db_datawriter plus die Benutzerdatenbankrolle edb_execute (siehe Bild 3). Diese Datenbankrolle wurde im vorheigen Beitrag dieser Reihe eingeführt (SQL Server-Security, Teil 4: Schutz mit Datenbankrollen, www.access-im-unternehmen.de/1274).

Der Benutzer WaWiPersonal

Bild 3: Der Benutzer WaWiPersonal

Sie beinhaltet die Rechte zur Ausführung aller gespeicherten Prozeduren. Um die Datenbankrolle public müssen Sie sich vorerst nicht kümmern. Hierbei handelt es sich um eine Standardzuordnung. Die Vorteile und vor allem die Nachteile dieser Datenbankrolle lernen Sie in einem der nächsten Beiträge kennen.

Ein Klick auf OK erstellt zuerst die Anmeldung WaWiPersonal und dann in der Datenbank WaWi_SQL den zugehörigen Benutzer. Die Anmeldung sehen Sie im Unterordner Anmeldungen des Ordners Sicherheit. Den Benutzer finden Sie in der Datenbank WaWi_SQL. Dort gibt es ebenfalls einen Ordner namens Sicherheit. Dieser listet die Benutzer der Datenbank im Ordner Benutzer auf.

Das Berechtigungskonzept ist nun um eine Anmeldung reicher. Mit dieser Anmeldung authentifiziert sich der Anwender am SQL Server. Die Anmeldung ist in der Datenbank WaWi_SQL fest mit dem gleichnamigen Benutzer verbunden.

Diese Zuordnung autorisiert die Anmeldung und somit den Anwender für den Zugang zur Datenbank. Die Rechte für den Datenzugriff sind am Benutzer definiert. Dieser ist aktuell den Datenbankrollen db_datareader, db_datawriter und edb_execute zugeordnet. Der Anwender darf mit diesen Rechten in der Datenbank jegliche Daten lesen und schreiben sowie alle gespeicherten Prozeduren ausführen.

Soweit in Kurzform die Beschreibung der Anmeldung WaWiPersonal innerhalb der mehrstufigen Sicherheitsarchitektur von SQL Server.

Das ist aber noch nicht alles. Schließlich erfolgt der Anmeldevorgang am SQL Server aktuell nicht durch den Anwender, sondern automatisch in der Access-Applikation WaWi. Die muss jetzt noch an die neue Anmeldung angepasst werden.

Eine Anmeldung für die Personalabteilung

In der Realität würden Sie nun in die Personalabteilung gehen und dort auf den einzelnen Rechnern die Access-Applikation mitsamt der ODBC-Datenquelle anpassen.

Um dieses Szenario nachzustellen, kopieren Sie die Access-Applikation WaWi und geben der Kopie den Namen WaWi Personal. Als nächstes ändern Sie die ODBC-Datenquelle WaWi_SQL. Den ODBC-Datenquellen-Administrator starten Sie am besten über die Windows-Suche. Dazu drücken Sie die Windows-Taste und tippen ODBC. Das Suchergebnis liefert Ihnen zwei Einträge. Wählen Sie je nach installierter Access-Version den Eintrag ODBC-Datenquellen (32-Bit) oder ODBC-Datenquellen (64-Bit).

Im ODBC-Datenquellen-Administrator wechseln Sie zur Registerkarte System-DSN, markieren dort die ODBC-Datenquelle WaWi_SQL und klicken auf Konfigurieren. Den ersten Schritt des Assistenten überspringen Sie mit der Schaltfläche Weiter.

Im zweiten Schritt passen Sie die Anmeldedaten an. Geben Sie im Eingabefeld Anmelde-ID den Namen der neuen Anmeldung und im Feld Kennwort das zugehörige Kennwort ein (siehe Bild 4). Danach bestätigen Sie diesen sowie den nächsten Schritt des Assistenten mit einem Klick auf Weiter und beenden die Konfiguration im letzten Schritt mit der Schaltfläche Fertig stellen.

Ändern der ODBC-Datenquelle

Bild 4: Ändern der ODBC-Datenquelle

Es folgt eine Zusammenfassung der Konfiguration und die Möglichkeit, die neuen Anmeldedaten zu testen. Sollte das Ergebnis nach einem Klick auf Datenquelle testen nicht erfolgreich sein, haben Sie sich vielleicht beim Kennwort vertippt. In diesem Fall wiederholen Sie die eben beschriebenen Schritte. Nach einem erfolgreichen Test ist die Änderung der ODBC-Datenquelle abgeschlossen.

Soweit so gut. Die ODBC-Datenquelle verwendet nun die Anmeldung WaWiPersonal. Jetzt passen Sie noch die Access-Applikation an die neue Anmeldung an. In der Realität wäre dies auf jedem Rechner der Personalabteilung erforderlich. In der Beispielumgebung öffnen Sie dazu die eben kopierte Access-Applikation WaWi Personal. Dort sind die Tabellen noch mit der Anmeldung WaWiMa eingebunden.

Aus diesem Grund entfernen Sie alle eingebundenen Tabellen und binden diese neu ein. Starten Sie über Externe Daten – Neue Datenquelle – Aus Datenbank – Aus SQL Server den Dialog Externe Daten – ODBC-Datenbank und aktivieren Sie dort die zweite Option.

Mit einem Klick auf OK kommen Sie zum nächsten Dialog, in dem Sie in der Registerkarte Computerdatenquelle die ODBC-Datenquelle WaWi_SQL per Doppelklick auswählen. Nun geben Sie das Kennwort zur Anmeldung WaWiPersonal ein und schließen den Vorgang mit OK ab.

Als Ergebnis sehen Sie im Dialog Tabellen verknüpfen alle Tabellen der SQL Server-Datenbank WaWi_SQL. Aktivieren Sie die Option Kennwort speichern und markieren Sie die Tabellen mit dem Präfix dbo.

Ein Klick auf OK übernimmt die Auswahl und liefert Ihnen vor dem Einbinden jeder Tabelle eine Meldung (siehe Bild 5). Bestätigen Sie diese Meldungen mit der Schaltfläche Kennwort speichern, um die Anmeldedaten für den Datenzugriff in der Access-Datenbank zu hinterlegen.

Speichern des Kennworts

Bild 5: Speichern des Kennworts

Die frisch eingebundenen Tabellen sind nun im Navigationsbereich zu sehen. Allerdings enthalten die Tabellen den Präfix dbo_, was nicht den ursprünglich eingebundenen Tabellen entspricht. Dies korrigieren Sie mit der VBA-Funktion fTabellenUmbenennen. Öffnen Sie mit der Tastenkombination Strg + G den VBA-Direktbereich und führen Sie dort die Funktion aus.

Die zwei Pass Through-Abfragen der Access-Applikation verwenden aktuell noch die Anmeldung WaWiMa. Mit der VBA-Funktion fPassThroughVerbindungen übertragen Sie die Anmeldedaten der eingebundenen Tabellen in die Verbindungszeichenfolgen der Pass Through-Abfragen. Führen Sie diese VBA-Funktion ebenfalls über den VBA-Direktbereich aus.

Es fehlt noch die Konfiguration für den Datenzugriff per ADO. Die hierzu notwendigen Daten sind in der lokalen Tabelle ADO gespeichert. Diese Tabelle ist als Systemtabelle deklariert.

Um die Daten der Tabelle ändern zu können, müssen Sie die Deklaration zunächst entfernen. Dies übernimmt die VBA-Funktion fTabelleAlsSystemObjekt, die Sie im VBA-Direktbereich wie folgt ausführen:

fTabelleAlsSystemObjekt "ADO", False 

Der Navigationsbereich enthält jetzt die Tabelle ADO. Öffnen Sie die Tabelle und passen Sie die Anmeldedaten in den Feldern Benutzer und Kennwort an die Anmeldung WaWiPersonal an. Um die Tabelle wieder zu verstecken, ändern Sie im VBA-Direktbereich den Parameterwert False in True und führen Sie die VBA-Funktion erneut aus.

Mit dem Formular Start können Sie die neue Anmeldung testen. Ein Klick auf die Schaltfläche Mitarbeiter liefert ein Formular mit den Personaldaten. So soll es sein. Jetzt öffnen Sie noch das Formular Ansprechpartner. Es zeigt Ihnen wie erwartet die Kontaktinformationen der Ansprechpartner. Der Test ist erfolgreich.

Mit den Rechten der Anmeldung WaWiPersonal dürfen Sie in der Datenbank WaWi_SQL die Daten aller Tabellen lesen und ändern sowie alle gespeicherten Prozeduren ausführen.

Somit wäre es den Mitarbeitern der Personalabteilung möglich, mit ihrer Version der Access-Applikation WaWi auf die Daten des Vertriebs zuzugreifen. Natürlich könnte man dies mit einer weiteren Rechtevergabe verhindern. Warum aber sollte man den Aufwand betreiben Es ist bestimmt kein Sicherheitsrisiko, wenn ein Mitarbeiter der Personalabteilung die Kontaktinformationen der Ansprechpartner lesen kann.

Diese Argumentation sollten Sie mal mit Ihrem Datenschutzbeauftragten diskutieren. Er wird einige Einwände haben. Als Stichpunkte seien hier Zweckbindung und Privacy By Default genannt. Doch das ist ein Thema für einen späteren Beitrag.

Bis jetzt bringt die Anmeldung WaWiPersonal noch keine Vorteile. Schließlich unterscheiden sich die Rechte dieser Anmeldung nicht von denen der Anmeldung WaWiMa. Ziel ist es, den Mitarbeitern des Vertriebs den Zugriff auf die Personaldaten zu verweigern. Dazu ändern Sie die Rechtevergabe zur Anmeldung WaWiMa.

Eine Anmeldung für den Vertrieb

Die jetzt anstehenden Änderungen der Rechtevergabe sind überschaubar. Sie müssen weder die installierte Access-Applikation noch die ODBC-Datenquelle anpassen. Alle erforderlichen Schritte finden im SQL Server statt. Öffnen Sie dazu das SQL Server Management Studio.

Die Rechte für den Datenzugriff werden nicht an der Anmeldung WaWiMa, sondern an dem zugehörigen Benutzer in der Datenbank WaWi_SQL definiert. Diesen finden Sie im Objekt-Explorer unter Datenbanken – WaWi_SQL – Sicherheit – Benutzer. Mit einem Doppelklick auf den Eintrag WaWiMa öffnen Sie den Dialog Datenbankbenutzer.

Aktuell ist der Benutzer WaWiMa den Datenbankrollen db_datareader, db_datawriter und edb_execute zugeordnet. Dies erlaubt ihm den lesenden und schreibenden Zugriff auf alle Daten der Datenbank sowie das Ausführen aller gespeicherten Prozeduren.

Sie sehen diese Rechtevergabe auf der Seite Mitgliedschaft. Um die relevanten Tabellen und gespeicherten Prozeduren für die Personaldaten von diesem pauschalen Zugriff auszuschließen, müssen Sie diesen Datenbankobjekten gesonderte Rechte vergeben.

Die Rechtevergabe an einzelnen Datenbankobjekten findet in der Seite Sicherungsfähige Elemente statt. Dort legen Sie mit der Schaltfläche Suchen zunächst eine Vorauswahl fest. Ein Klick auf diese Schaltfläche liefert Ihnen den Dialog Objekte hinzufügen. Hier aktivieren Sie die Option Alle Objekte des Typs und klicken auf OK.

Im nächsten Dialog entscheiden Sie sich für die Objekttypen Tabellen und Gespeicherte Prozeduren. Nach Bestätigen dieser Auswahl sind Sie wieder zurück im Dialog Datenbankbenutzer und sehen im oberen Bereich alle Tabellen und gespeicherten Prozeduren der Datenbank.

Markieren Sie die Tabelle Bewerber und aktivieren Sie im unteren Bereich die Option Verweigern in den Zeilen Aktualisieren, Auswählen, Einfügen und Löschen (siehe Bild 6). Durch diese Auswahl wird dem Benutzer WaWiMa der lesende und schreibende Zugriff auf die Tabelle Bewerber verweigert.

Verweigerter Zugriff auf eine Tabelle

Bild 6: Verweigerter Zugriff auf eine Tabelle

Seine Mitgliedschaft in den Datenbankrollen db_datareader und db_datawriter erlaubt es dem Benutzer weiterhin alle Daten der Datenbank zu lesen und zu ändern – mit Ausnahme der Tabellen, bei denen ihm dies explizit verweigert wird. Das Recht Verweigern steht über allen anderen Rechten.

Mit dieser Rechtevergabe ist sichergestellt, dass die Daten der Tabelle Bewerber vom Benutzer WaWiMa weder gelesen noch geschrieben werden können.

Dabei ist es egal, mit welcher Konstellation in Zukunft eine Erlaubnis für den Datenzugriff auf diese Tabelle erteilt wird. Solange der Benutzer das Recht Verweigern in der oben beschriebenen Art und Weise besitzt, ist der Zugriff auf die Daten nicht erlaubt.

Es sei denn, Sie ordnen die zugehörige Anmeldung WaWiMa der Serverrolle sysadmin zu. Mit dieser Zuordnung geben Sie der Anmeldung administrative Rechte. Für Anmeldungen mit solchen Rechten gibt es im SQL Server keine Grenzen. Das Sie mit der Serverrolle sysadmin sehr vorsichtig umgehen sollten, haben Sie bereits im dritten Beitrag erfahren.

Das Recht Verweigern lässt sich auch bei den gespeicherten Prozeduren anwenden. Dazu markieren Sie im oberen Bereich die gespeicherte Prozedur pSelectGeburtstagsliste und aktivieren im unteren Bereich die Option Verweigern in der Zeile Ausführen (siehe Bild 7).

Verweigertes Ausführen einer Gespeicherten Prozedur

Bild 7: Verweigertes Ausführen einer Gespeicherten Prozedur

Bei einer Rechtevergabe an Datenbankobjekten kommen je nach Anzahl der Tabellen und gespeicherten Prozeduren recht viele Klicks auf Sie zu.

Um diesen Aufwand zu reduzieren, bestätigen Sie den Dialog jetzt nicht mit OK, sondern klicken auf die Schaltfläche Skript in der Kopfzeile des Dialogs (siehe Bild 8).

Erstellen eines T-SQL-Skripts

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar