Bundesamt für Sicherheit in der Informationstechnik

M 4.73 Festlegung von Obergrenzen für selektierbare Datensätze

Verantwortlich für Initiierung: IT-Sicherheitsbeauftragter, Leiter IT

Verantwortlich für Umsetzung: Administrator, Anwendungsentwickler

Um den Zugriff auf ein Datenbanksystem besser kontrollieren zu können und um die Performance zu verbessern, sollten Obergrenzen für bestimmte Parameter von Datenbank-Systemen festgelegt werden.

Zudem kann durch diese Maßnahme die Wahrscheinlichkeit bestimmter Arten von Denial-of-Service-Attacken (siehe G 5.65 Verhinderung der Dienste eines Datenbanksystems ) verringert werden.

Beispiele sind:

  • die Festlegung von Obergrenzen für Datensätze, die im Rahmen eines Datenzugriffs selektiert werden können
  • die maximale Anzahl von Anmeldungen pro Benutzer-Kennung
  • der maximale Anspruch auf CPU-Zeit pro Anmeldung
  • die Gesamtdauer einer Datenbankverbindung
  • die maximal zulässige inaktive Zeit während einer Anmeldung

Dabei sind vor allem folgende Hinweise zu beachten:

Festlegung von Obergrenzen für selektierbare Datensätze

Insbesondere wenn große Datenmengen in einer Datenbank abgelegt wurden, sollte eine maximale Anzahl von Datensätzen definiert werden, die im Rahmen eines Datenzugriffs selektiert werden können.

Existieren solche Obergrenzen nicht, kann ein Benutzer gezielt oder unbeabsichtigt beliebig umfangreiche Selektierungen durchführen. Dies behindert nicht nur den einzelnen Benutzer in seiner Arbeit, sondern führt unter Umständen auch bei allen anderen Benutzern der Datenbank zu langen Wartezeiten. Werden die Datensätze dabei selektiert um sie zu modifizieren, sind sie solange für alle anderen Benutzer gesperrt, bis die Transaktion beendet ist.

Die Obergrenzen müssen im Rahmen der Anwendungen definiert werden, die auf die Datenbank zugreifen. Dabei müssen geeignete Kontrollen bzw. Sperren realisiert werden, die die Einhaltung der Obergrenzen überwachen. Stellt eine Anwendung Suchfunktionalitäten bereit, so sollte die uneingeschränkte Suche generell abgelehnt und die Eingabe von Suchkriterien gefordert werden.

Sollte zwischen Anwendungsprogramm und Datenbank eine große Distanz liegen (z. B. Anbindung über Internet) sollten Ergebnisse in Blöcken ausgetauscht werden, für die ebenfalls Obergrenzen festzulegen sind.

Beispiel:

Ein Anwendungsprogramm greift über eine Internetverbindung auf eine Datenbank zu. Die vom Anwendungsprogramm an die Datenbank übergebenen Abfragen liefern potentiell sehr große Datenmengen zurück. Um nicht Gefahr zu laufen, durch zu große Ergebnisblöcke die Übertragung an die Anwendung zu verlangsamen, wird auf der Datenbank die Abfrage in einer Prozedur gekapselt. Diese Prozedur überträgt bei jedem Aufruf eine festgelegte Menge von Daten (beispielsweise 5 Datensätze), bis alle Ergebnisse vollständig übertragen sind. Die Anwendung schickt in einer Schleife Anfragen an das DBMS und setzt die erhaltenen Teilergebnisse wieder zusammen oder kann eventuell auch schon Teilergebnisse anzeigen.

Festlegung von Ressourcenbeschränkungen

Eine weitere Möglichkeit, die von einigen Herstellern angeboten wird, ist die Festlegung von Ressourcenbeschränkungen in Bezug auf die Benutzung einer Datenbank.

Beispiele:

Mit folgendem Kommando wird in einer Oracle-Datenbank für die Datenbankkennung "Meier" der temporäre Tablespace "Temp" auf 100 MB begrenzt:

ALTER USER Meier TEMPORARY TABLESPACE Temp QUOTA 100M ON Temp;

Mit dem nachfolgenden Befehl wird ein Profil "Tester" erstellt, das die Anzahl der Sessions, die maximale CPU-Zeit pro Session, die maximale Zeit einer Datenbankverbindung und die maximale Leerlaufzeit (IDLE) begrenzt. Dieses Profil kann dann einzelnen Benutzern zugeordnet werden.

CREATE PROFILE Tester LIMIT

  • SESSIONS PER USER 2,
  • CPU _PER_SESSION 6000,
  • IDLE_TIME 30,
  • CONNECT_TIME 500;

Eine Ingres-Datenbank erlaubt beispielsweise für Benutzer und Gruppen das Setzen von Grenzen für die maximale Ein- und Ausgabe je Abfrage oder für die Anzahl von Sätzen pro Abfrage.

Weiterhin kann die Anzahl der Benutzer beschränkt werden, die gleichzeitig auf die Datenbank zugreifen dürfen. Je nach Lizenzmodell kann durch deren Begrenzung mittels Parametereinstellungen im DBMS unter Umständen auch gewährleistet werden, dass die maximal zur Verfügung stehende Zahl an Lizenzen für die Datenbank-Software nicht überschritten wird.

Außerdem verursachen viele parallel zugreifende Benutzer eine hohe Arbeitslast, der der Datenbank-Server eventuell nicht gewachsen ist. Hierdurch verlängert sich die durchschnittliche Dauer einer Transaktion. Ist in diesem Fall eine Erweiterung der Ressourcen des Datenbanksystems nicht möglich oder nicht gewünscht, schafft hier eine Begrenzung der maximal möglichen parallelen Benutzerzugriffe ebenfalls Abhilfe.

Auf der anderen Seite kann eine Begrenzung der maximal möglichen parallelen Benutzerzugriffe auch zu starken Einbußen bei der Performance für die Benutzer führen. Diese Funktionalität sollte deshalb nur nach genauer Prüfung oder temporär, beispielsweise in einmalig auftretenden Spitzenzeiten, eingesetzt werden.

Wenn die Zahl der Datenbankbenutzer zunimmt und absehbar ist, dass die aktuellen Ressourcen zukünftig die Anforderungen an die Performance nicht mehr erfüllen können oder dass mehr Lizenzen benötigt werden, ist eine entsprechende Erweiterung vorzusehen und zu planen.

Die absehbaren Anforderungen sollten bereits während der Auswahl einer Datenbank-Standardsoftware geklärt werden, um gegebenenfalls ein Konzept zur Umsetzung der Ressourcenbeschränkungen zu erstellen (siehe M 2.124 Geeignete Auswahl einer Datenbank-Software ).

Prüffragen:

  • Wurden Obergrenzen für bestimmte Parameter (z. B. selektierbare Datensätze, Ressourcenbeschränkungen für Benutzer) von Datenbank-Systemen festgelegt und dokumentiert?

Stand: 13. EL Stand 2013