M 2.129 Zugriffskontrolle einer Datenbank

Verantwortlich für Initiierung: Informationssicherheitsmanagement, Leiter IT

Verantwortlich für Umsetzung: Administrator

Um einen wirkungsvollen Schutz der Vertraulichkeit und Integrität der Daten einer Datenbank zu erreichen, müssen eine Reihe von Maßnahmen umgesetzt werden. Neben einer Zugangskontrolle der Datenbank, die in M 2.128 Zugangskontrolle einer Datenbank beschrieben wird, sind dies im wesentlichen die folgenden Möglichkeiten der Zugriffskontrolle:

Schutz der Datenbankobjekte

Es sollte eine logische Zuordnung der Datenbankobjekte, also der Tabellen, Indizes, Datenbankprozeduren, etc., zu den Anwendungen erfolgen, die diese Objekte benutzen. Die daraus entstehenden Gruppen von Datenbankobjekten je Anwendung werden eigens hierfür einzurichtenden Kennungen zugeordnet. Damit können die Zugriffsberechtigungen der Datenbankobjekte so eingestellt werden, dass nur über diese speziellen Kennungen eine Modifikation der Objekte stattfinden kann. Greifen mehrere Anwendungen auf dieselben Datenbankobjekte zu, sollten diese als eigene Gruppe isoliert werden.

Werden beispielsweise die Daten zweier Anwendungen A und B in der Datenbank verwaltet, so sind zwei Datenbankkennungen AnwA und AnwB anzulegen. Alle Datenbankobjekte, die eindeutig der Anwendung A zugeordnet werden können, werden mit der Datenbankkennung AnwA angelegt und verwaltet. Analog wird mit den Datenbankobjekten von Anwendung B verfahren.

Ein Beispiel für ein zentrales Datenbankobjekt, das von beiden Anwendungen benutzt wird, sei eine Tabelle, die alle ansteuerbaren Drucker beinhaltet. Datenbankobjekte dieser Kategorie sollten nicht einer Kennung der Anwendungen (AnwA oder AnwB) zugeordnet werden, statt dessen sollten solche Datenbankobjekte unter einer eigenen Kennung (z. B. Druck) zusammengefasst und mit dieser zentralen Kennung verwaltet werden.

Diese speziellen Kennungen sind nicht personenbezogen. Statt dessen erhalten eigens hierfür autorisierte Personen (z. B. der Datenbankadministrator oder der Administrator der zugehörigen Anwendung) das Passwort der benötigten Kennung, falls Modifikationen an den Datenbankobjekten vorgenommen werden müssen (siehe zu diesem Themenbereich auch M 4.68 Sicherstellung einer konsistenten Datenbankverwaltung).

Schutz der Daten

Durch eine Definition von Views und Prozeduren können spezielle Benutzer-Sichten auf die Daten erzeugt werden, so dass die Daten der Datenbank nach bestimmten Kriterien sichtbar gemacht bzw. unsichtbar gehalten werden. Über einen View oder eine Prozedur wird explizit festgelegt, welche Felder aus einer oder mehreren Tabellen einem Benutzer in welcher Reihenfolge angezeigt werden. Durch spezielle Bedingungen können hierbei die Daten gefiltert und durch spezifische Beschränkungen in ihrem Umfang begrenzt werden. Durch die restriktive Vergabe von Zugriffsrechten (den im folgenden beschriebenen Grants) auf solche Views und Prozeduren können vertrauliche Daten vor unberechtigtem Zugriff geschützt werden.

Durch Trennung von Daten und Funktionalitäten, hier die Trennung der Views und Prozeduren von den echten Daten durch Speicherung in einer eigenständigen Datenbank kann die Sicherheit zusätzlich erhöht werden. Der Benutzer oder die Anwendung greift ausschließlich auf die Views und Prozeduren in der ausgelagerten Datenbank zu. Erst diese Views und Prozeduren greifen auf die in der Datenbank abgelegten Daten zu. In der ausgelagerten Datenbank werden die Zugriffsrechte der Benutzer und Anwendungen zusammengefasst.

Hierbei können Zugriffsrechte (Grants) auf Tabellen, Views, etc. oder sogar auf einzelne Felder einer Tabelle vergeben werden. Diese Rechte sind immer an bestimmte Benutzer, Rollen oder Benutzergruppen gebunden. Vorzuziehen ist hierbei die klare Trennung zwischen Zugangsrechten von Benutzern (meist über Kennung und Passwort) einerseits und Zugriffsrechten von Benutzergruppen und Rollen auf DB-Objekte andererseits. Die Koppelung von Benutzern zu DB-Objekten geschieht dann über die Zuordnung einzelner Benutzer zu den mit den notwendigen Zugriffsrechten ausgestatteten Benutzergruppen oder Rollen. Es können Zugriffsberechtigungen lesender (read), ändernder (update), löschender (delete), neu einfügender (insert) oder neu erstellender (create) Art unterschieden werden, bei Prozeduren kommt die Ausführungsberechtigung (execute) hinzu. Die Schritte zur Vergabe von Zugriffsberechtigungen sollten im Datenbankkonzept präzise beschrieben sein. Grundsätzlich sollten nur die wirklich erforderlichen Zugriffsberechtigungen vergeben werden. Anderenfalls besteht die Gefahr, dass der Überblick über die aktuellen Zugriffsrechte verloren geht und zusätzliche Sicherheitslücken entstehen können. Insbesondere sollte die vom DBMS zur Verfügung gestellte Möglichkeit, Rechte an alle zu vergeben (GRANT ... TO PUBLIC), nicht genutzt werden.

Im allgemeinen ist es nur dem Besitzer eines Datenbankobjektes erlaubt, Zugriffsberechtigungen an andere Benutzer weiterzugeben. Einige Datenbanksysteme stellen jedoch die Möglichkeit zur Verfügung, dass der Besitzer eines Datenbankobjektes auch das Recht, Zugriffsrechte weiterzugeben, an andere Benutzer vergeben kann. Von dieser Möglichkeit sollte nur in begründeten Ausnahmefällen Gebrauch gemacht werden, da der Besitzer des Datenbankobjektes auf diese Weise die Kontrolle über den Zugriff auf die Daten bzw. die Datenbankobjekte verliert.

Restriktiver Datenzugriff über Anwendungen

Anwendungen sollten einen restriktiven Zugriff auf die Daten unterstützen, d. h. in Abhängigkeit der Benutzer-Kennung und der Gruppenzugehörigkeit sollten nur diejenigen Funktionalitäten und Daten zur Verfügung gestellt werden, die ein Benutzer für die Ausführung seiner Aufgaben benötigt. Eine Form der DB-seitigen Realisierung einer solchen Anwendung ist hier die Verwendung von sogenannten Stored Procedures.

Stored Procedures sind Abfolgen von SQL-Anweisungen, die in der Datenbank voroptimiert gespeichert werden. Beim Aufruf einer Stored Procedure müssen nur ihr Name und eventuelle Parameter angegeben werden, um die dahinterstehenden Anweisungen auszuführen. Dies hat zum einen den Vorteil, dass nicht die gesamten Anweisungen zum Datenbank-Server übertragen werden müssen, was bei komplexeren Operationen die Netzbelastung vermindert.

Zum anderen kann das Datenbanksystem die Anweisungen in einer optimierten, vor-compilierten Form ablegen, so dass sie bei Aufruf schneller ausgeführt werden. Die restriktivste Form der Rechtevergabe ist die Vergabe von Zugriffsrechten auf Stored Procedures statt auf Tabellen oder Views. Wenn Zugriffsrechte nur auf Stored Procedures vergeben werden, können die Benutzer nur die von den Datenbankverantwortlichen ausgewählten Operationen ausführen.

Beispiele:

Ergänzende Kontrollfragen: