|
|
Datenbanken schützenDatenbanken schützen
Inhaltsübersicht:
1. EinführungMit der Sicherheit im EDV-Bereich ist das so eine Sache. Man sollte nie davon ausgehen, dass man etwas wirklich sicheres schafft. Dort wo genug Zeit und Energie aufgebracht wird, wird über kurz oder lang jedes Sicherheitssystem außer Kraft gesetzt. Mit seinen verschiedenen Maßnahmen kann man also nur versuchen, es "der anderen Seite" etwas schwerer zu machen. Sicherlich kann man mit der einen oder anderen Maßnahme einen unbedarften Nutzer davon abhalten auf einfachste Art und Weise hinter die Geheimnisse der ihm vorliegenden Datenbank zu kommen. Wenn der Anreiz jedoch groß genug ist, werden entsprechende "Profis" Zeit und Energie aufwenden um schlußendlich auch hinter das ausgefeilteste Sicherheitssystem zu gelangen. Fazit: Eine Datenbankanwendung kann nie wirklich sicher sein. Man kann es jedoch etwas schwerer machen, die vorhandenen Sicherheitsmaßnahmen zu umgehen.
2. DatenbankkennwortAls eine der ersten Maßnahmen wird jeder auf die Idee kommen, die Datenbank mit einem Kennwort zu versehen. Es geht ganz einfach: Unter EXTRAS / SICHERHEIT / DATENBANKKENNWORT ZUWEISEN ... kann man der Datenbank ein Kennwort zuweisen. Um die Sicherheit dieses Kennwortes ist es jedoch nicht sehr gut bestellt. Es gibt im Internet einige Quellen, bei denen man sich ein Tool zum Knacken dieses Kennwortes herunterladen kann. In den Newsgroups wurde jüngst auch diskutiert, dass es auf einigen CD's zu Access- und Office-Büchern solche Tools gibt. Angeblich hat Microsoft beim Wechsel von der Version Access 95 nach Access 97 nichts an dem Datenbankkennwort verbessert. Der Algorithmus wurde ab Access 2000 verändert und leicht verbessert. Aber auch dieser wird von den von den angesprochenen Tools geknackt. Mit der Version Access 2007 hat Microsoft die Sicherheit des Datenbank-Kennwortes auf den aktuellen technischen Stand gebracht. Die Frage bleibt, wann das erste Tool, auftaucht, dass auch diesen Schutz knackt. An dieser Stelle werden keine Links und weitere Hinweise auf solche Tools veröffentlicht. Ich bin nämlich der Meinung, dass das geistige Eigentum eines Datenbankentwicklers ein schützenswertes Gut ist. Immerhin hat er einiges an Zeit und Energie aufgewendet, um eine Datenbankanwendung zu erstellen. Ich weiß natürlich, dass ich damit das Knacken von Passwörtern nicht verhindern kann. Ich möchte es aber zumindest auch nicht unterstützen. Wenn eine Datenbank als Front-End / Back-End-Lösung realisiert ist, kann man das Back-End mit einem Passwort schützen und die Datentabellen in das Front-End einbinden. Dabei wird nach dem Passwort des Back-End's gefragt und dieses wird zusammen mit der Information zur Verknüpfung gespeichert. Diese Informationen jetzt in den Systemtabellen von Access wieder lesbar zu machen ist sicher ein großer Aufwand. Aber den braucht keiner betreiben. Wer das Front-End öffnen kann, weil er dafür das notwendige Passwort besitzt, hat somit ungehinderten Zugriff auf die eingebundenen Tabellen das Back-End's. Fazit: Das Datenbankpasswort stellt nur einen unzureichenden Schutz dar. Tools zum Ausspähen dieses Passwortes gibt es bereits. Eine Front-End / Back-End-Lösung kann durch ein Datenbankpasswort nicht umfassend geschützt werden.
3. VerschlüsselungEine weitere einfach Maßnahme für einen ersten Schutz einer Datenbankanwendung ist die Verschlüsselung. Mit EXTRAS / SICHERHEIT / DATENBANK VERSCHLÜSSELN ... kann man eine Datenbank verschlüsseln. Mit dieser Verschlüsselung soll verhindert werden, dass jemand, der die Datenbank mit einem ASCII-Editor öffnet, die gespeicherten Daten im Klartext lesen kann. Die Verschlüsselung basiert (auch noch bei Access 2002) auf einem 32-Bit-Schlüssel. So ein schwacher Schlüssel ist über Brute Force selbst mit einem Pentium 500 MHz innerhalb eines Tages geknackt. Aber dies ist noch nicht einmal notwendig, da der Schlüssel ja in der Datei stehen muss! Sonst wüsste ja auch Access nicht, wie die Datei zu entschlüsseln wäre. Auch hierzu gibt es inzwischen leider frei zugängliche Tools im Internet. Fazit: Mit der Verschlüsselung kann verhindert werden, dass die Daten einfach mit einem ASCII-Editor ausgelesen werden können.
4. MDE-Datei erstellenEin weiterer Weg, eine Datenbank zu schützen, ist das Erstellen einer MDE-Datei. Dies geht ganz einfach mit EXTRAS / DATENBANK-DIENSTPROGRAMME / MDE-DATEI ERSTELLEN ... Durch das Erstellen einer MDE-Datei wird der gesamte Quellcode der Datenbank entfernt und kompiliert gespeichert. Dadurch wird zum einen die Datenbank kleiner und in der Ausführung des Codes schneller. Zum anderen ist der Code in Formularen, Berichten und Modulen nicht mehr einseh- und editierbar. Außerdem können diese Elemente nicht mehr geändert werden. Mit der Erstellung einer MDE-Datei werden nur die genannten Objekte geschützt. Tabellen und Abfragen lassen sich weiterhin in der Entwurfsansicht öffnen und verändern. Diese Elemente einer Datenbank werden also nicht geschützt. Fazit: Mit der Erstellung einer MDE-Datei werden Formulare, Berichte und Module geschützt. Andere Objekte können weiterhin frei verändert werden.
5. Benutzerführung mit Popup-FormularenEin weiterer Weg, seine Datenbank vor neugierigen Usern zu schützen, ist der konsequente Einsatz von Popup-Formularen. Ziel ist es, dem User die Möglichkeit zu nehmen, auf die einzelnen Objekte der Datenbank zuzugreifen. Hierzu sind insgesamt sechs Schritte notwendig. Als erstes sollte mit dem Übersichtsmanager ein Übersichtsformular erstellt werden. Mit diesem Übersichtsformular erfolgt die komplette Benutzerführung. Der direkte Zugriff auf die Objekte der Datenbank ist damit nicht mehr notwendig. Hierzu ist es erforderlich, dass alle vom User durchzuführenden Aktionen über Formulare, Berichte und Abfragen zugänglich sind und diese dann auch im Übersichtsformular eingetragen sind. Der Aufruf des Übersichtsmanagers erfolgt über EXTRAS / ADD-INS / ÜBERSICHTS-MANAGER. Als zweites wird in jedem Formular eine Schließen-Schaltfläche eingebaut. Beim Ereignis "Beim Klicken" wird folgender Code eingegeben: Als drittes wird für das Ereignis BEIM ÖFFNEN in jedem Formular der folgende Code eingegeben: Als viertes werden bei den Formularen werden folgende Einstellungen vorgenommen:
Als fünftes wird in den Starteigenschaften von Access das soeben mit dem Übersichts-Manager erstellte Übersichtsformular als Startformular eingesetzt. Über EXTRAS / START ... "Formular/Seite anzeigen:" kann das Übersichtsformular ausgewählt werden. Als sechstes wird über die Starteigenschaften das Datenbankfenster ausgeblendet. Dazu wählt man EXTRAS / START ... und deaktiviert das Häkchen vor "Datenbankfenster anzeigen". Durch dieses Vorgehen wird erreicht, das direkt nach dem Start der Datenbankanwendung unser Übersichtsformular geladen wird. Von diesem aus kann sich der User durch die Anwendung navigieren. Dadurch, dass alle Formulare als Popup-Formulare gestaltet sind, fällt es dem User schwer, andere als die gewünschten Aktionen auszuführen. Fazit: Mit der hier vorgestellten Benutzerführung durch Popup-Formulare wird der User konsequent durch die Anwendung geführt. Andere Datenbankobjekte sind für ihn scheinbar nicht auswählbar. Es gibt jedoch noch einige Schwächen, mit denen sich der User Zugriff auf die Datenbankobjekte verschaffen kann. Hierauf wird in den folgenden Abschnitten eingegangen.
6. Menüleisten in BerichtenAuch die Berichte müssen so verändert werden, dass der User keinen Zugriff auf die Datenbankobjekte hat. Ansonsten wäre es möglich, wenn in der Anwendung ein Bericht in der Seitenvorschau geöffnet wird, von hieraus über Menü- und Symbolleisten auf Funktionen zuzugreifen, die nicht gewünscht sind. Insgesamt sind folgende drei Schritte zu bewerkstelligen: Als erstes wird bei jedem Bericht beim Ereignis "Beim Öffnen" folgender Code eingegeben: Als zweites wird bei jedem Bericht beim Ereignis "Beim Schließen" folgender Code eingegeben: Als drittes müssen jeweils eine Menüleiste, eine Symbolleiste und eine Kontextmenüleiste definiert werden. In diesen sollten nur die für den Anwender notwendigen Funktionen enthalten sein wie z.B. Drucken, Seite einrichten und Zoomen. Fazit: Durch dieses Vorgehen wird erreicht, dass der Nutzer aus der Seitenansicht eines Berichtes heraus keinen Zugriff mehr auf andere Datenbankobjekte oder Funktionen hat.
7. Starteigenschaften von AccessDurch das Setzen der Starteigenschaften kann eine Datenbankanwendung noch weiter gesichert werden. Die Starteigenschaften können unter EXTRAS / START ... aufgerufen werden. Anzumerken ist, dass alle im folgenden beschriebenen Änderungen erst nach dem nächsten Start der Datenbank wirksam werden. Es können folgende Einschränkungen eingesetzt werden: Datenbankfenster anzeigen Unbeschränkte Menüs anzeigen Eingebaute Symbolleisten zulassen Standard-Kontextmenüs zulassen Symbolleisten- und Menüänderungen zulassen Codeansicht nach Fehler zulassen Access-Spezialtasten verwenden Achtung: Durch das Festhalten der Shift-Taste beim Start einer Datenbank werden die Starteigenschaften einer Datenbank umgangen. Fazit: Durch das gezielte Setzen der Starteigenschaften kann der ungewünschte Zugriff auf eine Datenbankanwendung weiter beschränkt werden. Diese Einstellungen lassen sich jedoch umgehen.
8. "Abschalten" der Shift-TasteWie im Abschnitt 7 dargestellt, können die Starteigenschaften von Access durch das Festhalten der Shift-Taste beim Start der Datenbank umgangen werden. Dies ist auf der einen Seite für den Entwickler ganz hilfreich. Auf der anderen Seite kann aber auch der User sich dieses Verfahrens bedienen. Die Funktion der Shift-Taste kann per Programm geändert werden. Dazu wird der folgende Code in ein Modul geschrieben und zur Ausführung gebracht. Nach dem nächsten Start ist dann die Funktion der Shift-Taste ausgeschaltet. On Error GoTo Err_ShiftTasteAus
Dim db As DAO.Database Set db = CurrentDb db.Properties!AllowBypassKey = False Exit_ShiftTasteAus: On Error Resume Next db.Close Set db = Nothing Exit Function Err_ShiftTasteAus: Select Case Err Case 0 Resume Next Case 3270 db.Properties.Append db.CreateProperty("AllowBypassKey", dbBoolean, False) Resume Next Case Else MsgBox (Err.Number & vbCrLf & Err.Description) Resume Exit_ShiftTasteAus End Select Was aber, wenn man selber nochmals etwas an der Datenbank ändern möchte? Hier bietet sich folgendes Vorgehen an:
Auf diese Art und Weise wird eine Möglichkeit für den Programmierer geschaffen, sich Zugang zu den Datenbankobjekten zu verschaffen, um Änderungen an der Datenbank vorzunehmen. Der normale User hat diese Möglichkeit nicht. Erst einmal müsste er zufällig das nicht sichtbare Rechteck finden. Dann müsste er zufällig Doppelklicken und dann müsste er noch das richtige Passwort kennen. Eine Beispieldatenbank, die das genannte Vorgehen beinhaltet, gibt's hier zum Download. Fazit: Die Starteigenschaften einer Datenbank können mit der Shift-Taste umgangen werden. Dieses Verhalten kann per Code abgeschaltet werden. Das Vorgehen ist zwar etwas aufwendig - aber es lohnt sich.
9. Das Sicherheitssystem von AccessEinen wirklich professionellen Schutz einer Datenbank kann man mit dem Sicherheitssystem von Access realisieren. Dabei werden den jeweiligen Benutzern Berechtigungen zugewiesen. Wem diese Berechtigungen fehlen, der kann die gewünschte Aktion nicht ausführen. Um eine Datenbank in ein gesichertes System zu verwandeln sind folgende Schritte durchzuführen:
Weiterführende Informationen zum Sicherheitssystem finden Sie in der Access-Hilfe, in diversen Büchern und beim AccessProfiPool im Whitepaper von Bernd Gilles. Fazit: Die Umwandlung von Access in ein gesichertes System ist keine triviale Aufgabe. Der Aufwand lohnt sich jedoch, da damit Berechtigungen auf Benutzerebene vergeben werden können.
10. ZusammenfassungEs gibt verschiedene Arten, eine Datenbank zu schützen. Der jeweilige Schutz wirkt dabei unterschiedlich. Es gibt einfache Maßnahmen, die nur dazu dienen können, einen unbedarften Anwender davon abzuhalten, seine Neugier zu befriedigen. Es gibt aber auch komplexe Maßnahmen, die auch erfahrene Anwender einen Einblick in die Datenbank verwehren. Eine Kombination aller vorgestellten Maßnahmen ist derzeit beim Autor im Einsatz und hat sich bewährt. Fazit: Die vorgestellten Punkte können beliebig miteinander kombiniert werden. Bei der Konzeption eines Sicherheitskonzeptes kommt es darauf an, welcher Aufwand betrieben werden soll und wie wichtig der Schutz aus Sicht des Programmierers ist.
11. Ergänzende LinksBei Christoph Jüngling finden sich Ausführungen zum Thema Access-Sicherheit. Von Bernd Gilles gibt es ein Whitepaper. Hier finden sich weiterführende Informationen zum Sicherheitssystem von Access. Von Microsoft gibt es einen Workshop zum Thema Erhöhen der Sicherheit für eine Access-Datei. In diesem Artikel werden unterschiedliche Verfahren zur Implementierung von Sicherheitsebenen erläutert, um Access-Datenbanken zu schützen. Die Security FAQ in englischer Sprache gibt es bei Microsoft. Hier wird ausführlich und umfangreich auf das Sicherheitssystem von Access eingegangen. In redmond's inside Access findet sich in Ausgabe 5/2000 ein Artikel zum Thema Datenbanken schützen.
|
02.10.2020: 06.11.2019: 06.05.2017: 27.03.2016: 23.05.2014: |
|
|