# Datenbanksicherheit

Datenbanksicherheit bezeichnet die Verwendung einer breiten Palette von Informationssicherheitskontrollen, um Datenbanken zu schützen (unter Umständen einschließlich der Daten, der Datenbankanwendungen oder der gespeicherten Datenbankfunktionen, der Datenbankmanagementsysteme, der Datenbankserver und der dazugehörigen Netzwerkverbindungen) gegen Gefährdungen der Vertraulichkeit, Integrität und Verfügbarkeit. Es beinhaltet verschiedene Typen oder Kategorien der Kontrolle, etwa technische, verfahrensorientierte / administrative und physische. Datenbanksicherheit ist ein spezielles Gebiet, welches sich den allgemeineren Bereichen der Informationssicherheit und des Risikomanagements zuordnen lässt.

## Risiken

Sicherheitsrisiken für Datenbanksysteme umfassen zum Beispiel:
* Unbefugte oder unbeabsichtigte Aktivität oder Missbrauch durch autorisierte Nutzer oder Hacker (etwa unangemessener Zugang zu sensiblen Daten, Metadaten oder Funktionen innerhalb Datenbanken, oder unangemessene Änderungen an den Datenbankprogrammen, -strukturen oder -sicherheitseinstellungen);
* Befall von Schadprogrammen, welche Vorfälle verursachen wie etwa nicht autorisierte Zugriffe, Durchsickern oder Offenlegung von persönlichen oder proprietären Daten, Löschen von oder Schaden an Daten oder Programmen, Unterbrechung oder Verweigerung von autorisierten Datenbankzugriffen, Angriffe auf andere Systeme und das unerwartete Versagen von Datenbankdiensten;
* Überlastungen, Leistungseinschränkungen und Kapazitätsprobleme, welche eine Unfähigkeit für autorisierte Nutzer, die Datenbank wie beabsichtigt zu nutzen, zur Folge haben;
* Physischer Schaden an Datenbankservern verursacht durch Brände oder Überschwemmungen in Rechenzentren, Überhitzung, Blitzeinschläge, versehentliche Verschüttung von Flüssigkeiten, elektrostatische Entladung, elektronische Störungen beziehungsweise Ausrüstungsausfälle oder -überalterung;
* Konstruktionsschwachstellen oder Programmfehler in Datenbanken und daran angeschlossenen Programmen und Systemen, die verschiedenste Sicherheitsanfälligkeiten verursachen (etwa nicht autorisierte Rechteausweitung), Datenverlust oder -verfälschung, Leistungsabbau etc.;
* Datenverfälschung und/oder -verlust verursacht durch den Eintritt von ungültigen Daten oder Befehlen, Fehlern in Datenbank- oder Systemadministrationsprozessen, Sabotage beziehungsweise kriminelle Schäden etc.
Viele Schichten und Arten von Informationssicherheits-Kontrolle sind zweckmäßig für Datenbanken, einschließlich:
* Zugriffskontrolle
* Authentifizierung
* Verschlüsselung
* Konsistenzkontrollen
* Datensicherung
Ursprünglich wurden Datenbanken größtenteils mittels Netzwerksicherheitsmaßnahmen, etwa durch Firewalls, und Netzwerk-basierte Intrusion Detection Systems gegen Hacker geschützt. Während Netzwerksicherheits-kontrollen weiterhin wertvoll bleiben in dieser Hinsicht, ist es wohl entscheidender geworden, die Datenbanksysteme selbst und die Programme beziehungsweise Funktionen und Daten innerhalb derer zu schützen, da Netzwerke zunehmend geöffnet werden für einen weiteren Zugriff, insbesondere aus dem Internet. Des Weiteren waren System-, Programm-, Funktions- und Datenzugriffskontrollen, zusammen mit dazugehörigen Funktionen für Benutzeridentifikation, -authentifizierung und Rechtemanagement, schon immer wichtig, um die Aktivitäten von autorisierten Benutzern und Administratoren einzuschränken, und in manchen Fällen auch aufzuzeichnen. Mit anderen Worten sind dies sich ergänzende Ansätze für Datenbanksicherheit.
Viele Organisationen entwickeln ihre eigenen grundlegenden Schutzstandards und -designs, welche die Sicherheitskontrollmaßnahmen für deren Datenbanksysteme genau definieren. Diese können die generellen Informationssicherheitsanforderungen beziehungsweise -pflichten, welche von Firmenrichtlinien oder geltendem Recht angeordnet werden (etwa betreffend dem Datenschutz oder der betrieblichen Finanzwirtschaft und -berichterstattung), neben allgemein akzeptierter best practice (wie etwa angemessene Härtung der zugrundeliegenden Systeme) und eventuell Sicherheitsempfehlungen von relevanten Anbietern von Datenbanksystemen und -software.
Die Sicherheitsdesigns für spezielle Datenbanksysteme spezifizieren typischerweise weitere Sicherheitsadministration- und -managementfunktionen (wie etwa Verwaltung und Berichterstattung von Benutzerzugriffsrechten, Betrieb und Analyse des Logging, Replikation beziehungsweise Synchronisation und Backup von Datenbanken) zusammen mit verschiedenen geschäftsgetriebenen Informationssicherheitskontrollen innerhalb der Datenbankprogramme und -funktionen (zum Beispiel Überprüfung von Dateneinträgen und Kontrolle der Verbuchung neuer Einträge). Des Weiteren werden normalerweise verschiedene sicherheitsverwandte Aktivitäten (manuelle Kontrollen) eingebunden in die Verfahrensweisen, Richtlinien und ähnliche, die sich auf Design, Entwicklung, Einstellung, Benutzung, Steuerung und Verwaltung von Datenbanken beziehen.

## Bewertung von Schwachstellen und Einhaltung

Eine Methode zur Evaluierung der Datenbanksicherheit umfasst das Ausführen von Schwachstellenanalysen oder Penetrationstests auf der Datenbank. Die Prüfer versuchen, Sicherheitsschwachstellen zu finden, welche genutzt werden könnten, um Sicherheitskontrollen zu überwältigen oder zu umgehen, in die Datenbank einzubrechen, das System zu kompromittieren und so weiter. Administratoren von Datenbanken oder für Informationssicherheit nutzen eventuell zum Beispiel automatisierte Schwachstellenscans, um Fehlkonfigurationen von Kontrollen zwischen oben genannten Schichten neben bekannten Schwachstellen innerhalb der Datenbanksoftware ausfindig zu machen. Die Ergebnisse solcher Scans werden verwendet, um die Datenbank abzuhärten (die Sicherheitskontrollen zu verbessern) und die identifizierten spezifischen Schwachstellen abzuriegeln, aber leider bleiben anderen Schwachstellen typischerweise unerkannt und nicht adressiert.
Ein Programm beständiger Überwachung der Einhaltung von Datenbanksicherheitsstandards ist eine weitere wichtige Aufgabe für einsatzkritische Datenbankumgebungen. Zwei entscheidende Aspekte der Einhaltung von Datenbanksicherheit beinhalten die Patch-Steuerung und das Überprüfen und Verwalten von Berechtigungen (insbesondere öffentliche), die Objekten innerhalb der Datenbank gewährt werden. Datenbankobjekte sind etwa unter anderem Tabellen oder andere Objekte, die in der Tabelle verlinkt sind. Die Berechtigungen, die für Befehle der SQL-Sprache auf Objekten gewährt werden, werden in diesem Prozess betrachtet. Man sollte anmerken, dass das Überwachen der Einhaltung von Richtlinien ähnlich ist wie Schwachstellenanalyse mit dem Kernunterschied, dass die Ergebnisse der Schwachstellenanalyse generell die Sicherheitsstandards beeinflussen, welche dann erst zum kontinuierlichen Überwachungsprogramm führen. Im Wesentlichen ist die Beurteilung von Schwachstellen ein vorbereitendes Verfahren, um Risiken zu bestimmen, wohingegen ein Überwachungsprogramm einen Prozess der anhaltenden Risiko-Abschätzung darstellt.
Das Überwachungsprogramm sollte alle Abhängigkeiten auf der Stufe der Anwendungssoftware berücksichtigen, da Änderungen auf der Stufe der Datenbanken möglicherweise Auswirkungen auf die Anwendungssoftware oder die Anwendungsserver haben.

## Abstraktion

Authentifikation auf der Anwendungsebene und Autorisierungsmechanismen sollten betrachtet werden als eine effektive Maßnahme, um eine Abstraktion der Datenbankschicht zu erreichen. Der größte Nutzen einer Abstraktion ist die Möglichkeit des Single Sign-on über verschiedene Datenbanken und Datenbankplattformen hinweg. Ein Single Sign-on System sollte die Berechtigungsnachweise (Anmeldenname und -passwort) der Datenbanknutzer speichern und den Nutzer bei der Datenbank stellvertretend authentifizieren.

## Überwachung der Datenbankaktivitäten

Eine Überwachung der Datenbankaktivitäten (englisch Database activity monitoring (DAM)) ist Teil einer weiteren Schicht der Sicherheit von einer anspruchsvolleren Natur. Hierbei bedient man sich entweder der Analyse von Protokoll-Traffic (SQL) über das Netzwerk, oder der Beobachtung lokaler Datenbankaktivitäten auf jedem Server mittels Software-Agenten, oder beidem. Die Benutzung von Agenten oder das native Logging werden benötigt, um die Aktivitäten zu erfassen, die auf dem Datenbankserver ausgeführt werden, welche typischerweise die Aktivitäten der Datenbankadministratoren umfassen. Agenten erlauben es, diese Informationen auf eine Weise zu erfassen, die eine Deaktivierung durch den Datenbankadministrator nicht erlauben, während dieser jedoch in der Lage ist, native Revisionsaufzeichnungen (audit logs) zu deaktivieren oder zu verändern.
Es können Analysen durchgeführt werden, um bekannte Exploits oder Brüche mit der Strategie zu identifizieren, oder mit der Zeit Grundlinien erfasst werden, um ein normales Muster zu erstellen zur Erkennung von ungewöhnlichen Aktivitäten, welche Anzeichen für Eindringen sein können. Diese Systeme können, zusätzlich zur Erkennung von Eindringlingen, eine umfassende Buchungskontrolle für Datenbanken liefern, und manche Systeme ermöglichen darüber hinaus auch einen Schutz durch das Beenden von Benutzersitzungen und/oder durch das unter Quarantäne stellen von Benutzern, die durch ein verdächtiges Verhalten auffallen. Es existieren auch Systeme, die eine Funktionstrennung unterstützen, welches eine typische Anforderung an Auditoren ist. Funktionstrennung erfordert, dass die Datenbankadministratoren, die typischerweise als Teil der Datenbankaktivitäten überwacht werden, nicht in der Lage sind, Überwachung zu deaktivieren oder abzuändern. Dazu ist es nötig, dass die Revisionsaufzeichnungen der Überwachung sicher gespeichert werden in einem abgetrennten System, welches nicht von der Datenbankadministratorengruppe administriert wird.

## Natives Audit

Neben dem Einsatz von externen Hilfsprogrammen zum Überwachen oder Auditing sind für viele Datenbankplattformen auch native Programme für Datenbank-Audits verfügbar. Die nativen Audit-Protokollierungen werden regelmäßig entnommen und an das vorgesehene Sicherheitssystem übertragen, auf welches die Datenbankadministratoren keinen Zugriff haben. Das gewährleistet ein gewisses Level von Funktionstrennung, wodurch nachgewiesen werden kann, dass die nativen Audit-Protokollierungen nicht von authentifizierten Administratoren modifiziert wurden. Sich dem nativen hinzuwenden beeinflusst die Leistungsfähigkeit des Servers. Im Allgemeinen bieten native Audit-Protokollierungen von Datenbanken nicht ausreichend Kontrolle, um eine Funktionstrennung durchzusetzen; daher bieten die Maßnahmen, welche auf Ebene des Netzwerks und/oder der Kernel-Module agieren, ein höheres Maß an Vertrauen für Spurensuche und Bewahrung von Belegen.

## Verfahren und Vorgehensweise

Ein Programm für Datenbanksicherheit sollte die regulären Überprüfungen der Berechtigungen beinhalten, die erteilt wurden an individuell erstellte Benutzerkonten und Benutzerkonten, die von automatisierten Prozessen benutzt wurden. Die Benutzerkonten, welche von den automatisierten Prozessen verwendet werden, sollten angemessene Kontrollen rund um Kennwort-Speicherung vorweisen, wie etwa ausreichende Verschlüsselung und Zugriffskontrollen, um das Risiko für Gefährdungen zu reduzieren. Für einzelne Benutzerkonten sollte eine Zwei-Faktor-Authentifizierung erwogen werden, bei welcher das Risiko proportional ist zum Aufwand für ein solches Authentifizierungssystem.
In Verbindung mit einem vernünftigen Datenbanksicherheits-Programm sollte ein entsprechendes Disaster-Recovery-Programm existieren, um zu gewährleisten, dass der Betrieb nicht unterbrochen wird während eines Sicherheitszwischenfalls oder irgendeines anderen Vorfalls, welches einen Ausfall der primären Datenbank-Umgebung verursachen. Ein Beispiel dafür ist eine Replikation der primären Datenbanken an Standorten, welche in unterschiedlichen geographischen Regionen liegen.
Nachdem ein Vorfall stattgefunden hatte, sollte eine forensische Analyse durchgeführt werden, um den Umfang der Verletzung festzustellen, und um angemessene Anpassungen der Systeme und/oder der Prozesse zu identifizieren, damit ähnliche Vorfälle in der Zukunft vermieden werden.

## Datenbanksicherheit unter Verwendung von statistischen Verfahren

Unbefugte Änderungen, welche sowohl durch interne als auch externe Benutzer direkt in der Datenbank vorgenommen werden, ohne dass eine Nachverfolgung stattfindet, werden als größte Bedrohungen angesehen. Algorithmen basierend auf Kryptographie und anderen statistischen Methoden werden angewendet, um solche Sachverhalte zu identifizieren und die Eigentümer zu benachrichtigen. Solche Ansätze zur Datenbank-Abschirmung bilden große Datensätze auf seine kleinen digitalen Fingerabdrücke ab, welche durchgängig aktualisiert werden mit jeder Änderung, die durch registrierte Anwendungen vorgenommen werden. Gewünschte Fingerabdrücke werden anschließend in vorgegebenen Intervallen mit den tatsächlichen Fingerabdrücken abgeglichen, um veränderte Positionen (Zeilen und Spalten) in der Datenbank und Tag und Zeit der unbefugten Änderungen, auch durch privilegierte Instanzen, zu identifizieren.