Access und SQL Server-Security, Teil 1: Zugriffsschutz in Access

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

Schützen Sie Ihre Daten vor unerlaubtem Zugriff Wenn Sie es nicht tun, gibt es dafür bestimmt Gründe. Nur sind es mit hoher Wahrscheinlichkeit keine guten Gründe. Nicht selten liegt es an fehlendem Fachwissen oder einer falschen Einschätzung der Daten oder es ist schlicht und ergreifend Bequemlichkeit. Die Sache mit der Bequemlichkeit sollten Sie selbst hinterfragen, das Fachwissen vermittelt Ihnen dieser wie die noch folgenden Artikel der Serie “Access und SQL Server-Security”.

“Die Daten dieser Datenbank sind nicht wichtig.” Diese Aussage basiert meist auf einer falschen Einschätzung der Daten. Es gibt in Unternehmen keine unwichtigen Daten. Es mag zwar Daten geben, die nicht unternehmenskritisch sind, aber unwichtige Daten Hand aufs Herz, haben Sie Zeit oder gar Budget für unwichtige Daten In der Regel sind alle Daten eines Unternehmens relevant und somit auch vor fremden Zugriff zu schützen. Dies hat inzwischen auch der Gesetzgeber verstanden. In den letzten Jahren sind verschiedene Gesetze in Kraft getreten, die entsprechende Zugriffskontrollen einfordern, sei es der Datenschutz nach der DSGVO und dem neuen BDSG oder das IT-Sicherheitsgesetz.

Es ist schon erstaunlich, dass es Gesetze braucht, um Unternehmen darauf hinzuweisen, dass ihre Daten und somit ihr Wissen schützenswert sind. Ob nun Produktionspläne, Forschungsergebnisse, Rezepturen, Patente, erfolgreiche Marketingaktionen, Kundenanalysen, Forecasts etc., bei all diesen Informationen handelt es sich um Wissen – relevantes Wissen für den täglichen Betrieb und zur Sicherung des Wettbewerbsvorteils eines Unternehmens.

Gelangen diese Daten in falsche Hände, stellt dies in vielen Fällen ein indirektes oder gar direktes Risiko für das Unternehmen dar. Deshalb sollte jeder im Unternehmen, vom Geschäftsführer bis zum Angestellten, darauf achten, wer zu welchem Zweck Zugriff auf die Unternehmensdaten hat.

Zugriffsschutz in Access

Es sieht dürftig aus. Access bietet als Zugriffsschutz lediglich das Datenbank-Kennwort. Zwar gibt es immer noch die Möglichkeit einer MDW-Datei, doch funktioniert diese nur mit dem veralteten Datenbankformat MDB.

Das Datenbank-Kennwort verschlüsselt die Access-Datenbank. Dabei ist es empfehlenswert, ein Kennwort zu verwenden, das aus Buchstaben, Zahlen und Sonderzeichen besteht und mindestens zehn Zeichen lang ist.

Es sollte aber auch nicht länger als 19 Zeichen sein, wenn es sich bei der Datenbank um ein Backend handelt, deren Tabellen in ein Access-Frontend eingebunden werden. Zwar akzeptiert das Backend durchaus mehr als 19 Zeichen, jedoch wird ein solches Kennwort beim Einbinden der Tabellen in das Frontend mit der Meldung Kein zulässiges Kennwort quittiert.

Dem Datenbank-Kennwort wird nachgesagt, es sei einfach zu knacken. Das ist seit dem Wechsel von MDB nach ACCDB ab Access 2007 nicht mehr der Fall. Um das Kennwort zu ermitteln, bedarf es schon guter Crack-Tools mit der Möglichkeit von Brute-Force-Angriffen. Je länger und komplexer ein Kennwort, umso höher ist der Aufwand für einen solchen Angriff.

Das Datenbank-Kennwort bietet also durchaus einen Zugriffsschutz. Dieser ist abhängig von der Länge und der Komplexität des Kennworts.

Doch genug der Theorie. Jetzt wird die Backend-Datenbank der Beispiel-Applikation WaWi verschlüsselt. Dazu öffnen Sie das Access-Backend WaWi_BE.accdb exklusiv (siehe Bild 1).

Exklusives Öffnen einer Datenbank

Bild 1: Exklusives Öffnen einer Datenbank

Hier wechseln Sie zum Menüpunkt Datei und klicken auf Informationen. Dort sehen Sie die Schaltfläche Mit Kennwort verschlüsseln (siehe Bild 2).

Verschlüsseln einer Datenbank mit einem Kennwort

Bild 2: Verschlüsseln einer Datenbank mit einem Kennwort

Ein Klick auf diese Schaltfläche liefert Ihnen einen Dialog (siehe Bild 3), in dem Sie im ersten Eingabefeld Ihr Kennwort eingeben und dies mit einer erneuten Eingabe im zweiten Eingabefeld bestätigen.

Festlegen des Kennworts

Bild 3: Festlegen des Kennworts

Ihr Kennwort sollte den oben genannten Empfehlungen entsprechen. Um bei diesem und den folgenden Beispielen nicht immer mühsam ein komplexes Kennwort einzugeben, tragen Sie als Kennwort den Begriff unsicher ein. Danach erhalten Sie die Meldung aus Bild 4, die Sie darauf hinweist, dass eine Sperrung auf Datensatzebene mit der Verschlüsselung nicht kompatibel ist. Sollte eine Sperrung auf Datensatzebene für Sie unabdingbar sein, können Sie die Verschlüsselung nicht nutzen. Bestätigen Sie die Meldung, wird die Sperrung auf Datensatzebene in Zukunft ignoriert.

Hinweise zum Verschlüsseln

Bild 4: Hinweise zum Verschlüsseln

Soweit so gut – die Access-Datenbank ist nun verschlüsselt. Ab jetzt müssen Sie dieses Kennwort immer eingeben, wenn Sie die Datenbank öffnen. Testen Sie es einmal. Schließen Sie die Datenbank und öffnen Sie sie direkt wieder. Ohne Kennworteingabe ist der Zugriff auf die Daten nicht mehr möglich.

Dies gilt auch für das Access-Frontend, mit dem die Daten der nun verschlüsselten Datenbank verarbeitet werden. Die Daten stehen im Frontend nur nach Eingabe des Kennworts zur Verfügung.

Es gibt eine gute Nachricht. Sie müssen das Kennwort nicht jedes Mal eingeben. Der Einfachheit halber lässt sich das Kennwort beim Einbinden der Tabellen angeben und wird ab dann bei jedem Datenzugriff verwendet.

Leider ist der Tabellenverknüpfungs-Manager dabei keine Hilfe. Sie müssen die eingebundenen Tabellen aus dem Frontend entfernen und neu einbinden.

Öffnen Sie also das Frontend der Beispiel-Applikation WaWi und entfernen Sie die eingebundenen Tabellen. Anschließend navigieren Sie über Externe Daten|Neue Datenquelle|Aus Datenbank|Access zum Dialog Externe Daten. Dort wählen Sie über die Schaltfläche Durchsuchen die verschlüsselte Access-Datenbank aus und markieren die Option Erstellen Sie eine Verknüpfung zur Datenquelle, indem Sie eine verknüpfte Tabelle erstellen (siehe Bild 5).

Erstellen einer Verknüpfung

Bild 5: Erstellen einer Verknüpfung

Nach einem Klick auf OK werden Sie aufgefordert, das Datenbank-Kennwort einzugeben (siehe Bild 6). Anschließend wählen Sie alle Tabellen aus und binden diese per OK ein.

Abfrage des Kennworts

Bild 6: Abfrage des Kennworts

Die Eingabe des Kennworts ist eine einmalige Angelegenheit. Sie können dies einfach testen. Schließen Sie das Access-Frontend und öffnen Sie es direkt wieder. Ein Kennwort müssen Sie dabei nicht eingeben, auch nicht beim Öffnen einer Tabelle.

Allerdings ist das Kennwort für den Datenzugriff erforderlich. Es muss also in irgendeiner Art und Weise hinterlegt sein. Doch wo ist das Kennwort gespeichert

Um das herauszufinden, öffnen Sie mit der Tastenkombination Strg + G den Direktbereich im VBA-Editor. Hier führen Sie folgende Anweisung aus:

  CurrentDb.TableDefs("Ansprechpartner").Connect

Der Direktbereich zeigt Ihnen die Connect-Eigenschaft der eingebundenen Tabelle. Schon an zweiter Position ist das Kennwort zu sehen (siehe Bild 7). Es ist also kein Hexenwerk, das Datenbank-Kennwort einer verschlüsselten Datenbank zu ermitteln.

Kennwort ermitteln per Direktbereich

Bild 7: Kennwort ermitteln per Direktbereich

Das Auslesen des Kennworts lässt sich vermeiden, indem Sie auch das Access-Frontend verschlüsseln. Also öffnen Sie das Access-Frontend exklusiv, wechseln über das Menü Datei zu Informationen und klicken dort auf die Schaltfläche Mit Kennwort verschlüsseln.

Als Kennwort geben Sie natürlich nicht das gleiche wie beim Backend an. Verwenden Sie ein anderes sicheres Kennwort, das beim Frontend auch mehr als 19 Zeichen haben darf. Für dieses Beispiel kann es gerne wieder etwas Einfaches sein. Wie wäre es mit dem Kennwort sicher

Es folgt der bereits bekannte Hinweis, dass die Datensatzsperre in Zukunft ignoriert wird. Mit Bestätigen dieser Meldung ist nun auch das Frontend verschlüsselt. Dies können Sie testen, indem Sie das Frontend schließen und es direkt wieder öffnen. Als erstes wird von Ihnen die Eingabe des Kennworts verlangt.

Erst nach der Kennworteingabe lässt das Frontend den Zugriff auf das Startformular, die Access-Objekte und die eingebundenen Tabellen zu. Dieses Kennwort müssen Sie ab jetzt bei jedem Start des Frontends angeben. Aber nicht nur Sie, sondern jeder Anwender, der mit dieser Access-Applikation arbeitet.

Aus diesem Grund ist es wichtig, Frontend und Backend der Access-Applikation mit unterschiedlichen Kennwörtern zu verschlüsseln. Andernfalls wäre es für den Anwender recht einfach, das Access-Backend zu öffnen. Er muss dort nur das ihm bekannte Kennwort vom Frontend eingeben.

Ein sicheres Kennwort

Das von Ihnen gewählte Datenbank-Kennwort sollte den oben angeführten Regeln entsprechen. Allerdings muss es sich der Anwender auch merken können. Genau hier beginnt das Dilemma. Wer kann sich schon an ein komplexes Kennwort erinnern Die Lösung ist nicht selten eine Notiz am Bildschirm oder unter der Tastatur.

Dabei ist die Vergabe eines komplexen Kennworts recht einfach. Denken Sie sich einen Satz mit einer Zahl aus und nehmen Sie davon die Anfangsbuchstaben und die Satzzeichen. Fertig ist das sichere Kennwort.

Der Anwender merkt sich einen Satz wie Seit 2020 ist die Auftragsverarbeitung mit einem Kennwort geschützt! und gibt als Kennwort S2020idAmeKg! ein. Natürlich verwenden Sie bitte nicht dieses Beispiel als Ihr Kennwort. Denken Sie sich einen Satz aus, mit dem die Anwender etwas anfangen können.

Nimmt man es ganz genau, besitzt ein solch erstelltes Kennwort zwar einen hohen Sicherheitsgrad, es gilt dennoch als unsicher. Ein sicheres Kennwort ergibt sich aus der Zufälligkeit. Es sollte weder etwas mit der Applikation noch mit den Benutzern noch mit irgendetwas zu tun haben. Sichere Kennwörter erstellen Sie am besten mit einem Password-Generator.

Ein generiertes Kennwort kann sich aber kein Mensch merken. Schon sind Sie wieder beim oben beschriebenen Dilemma und das Kennwort landet früher oder später als Notiz auf einem Zettel. So wird auch das sicherste Kennwort untauglich, ist es doch leicht zugänglich für jedermann.

Dann doch lieber ein Kennwort, das bereits einen hohen Sicherheitsgrad aufweist und das sich die Anwender merken können.

Auch sichere Kennwörter sollten Sie in regelmäßigen Abständen ändern. Kennt ein Unbefugter das Kennwort, darf er sich nach der Änderung erneut die Mühe machen, an das Kennwort heranzukommen.

Access-Funktionen unterbinden

Nach Eingabe des Datenbank-Kennworts stehen dem Anwender alle ihm erlaubten Access-Funktionen zur Verfügung. Er kann zum Beispiel den VBA-Editor öffnen und dort mittels der Connect-Eigenschaft einer Tabelle das Kennwort des Access-Backends auslesen.

Aus diesem Grund darf der Zugriff auf den VBA-Editor nicht ohne weiteres möglich sein. Um dies zu erreichen, ersetzen Sie die Standard-Ribbons mit eigenen Ribbons und blenden über die Access-Optionen den Navigationsbereich aus (siehe Bild 8). Diese beiden Aktionen verbergen allerdings nur die Möglichkeiten zum Öffnen des VBA-Editors. Mit der Tastenkombination Alt + F11 lässt er sich weiterhin öffnen.

Navigationsbereich ausblenden

Bild 8: Navigationsbereich ausblenden

Kennwort für VBA

Als weitere Maßnahme schützen Sie das VBA-Projekt mit einem Kennwort. Dieses Kennwort müssen Sie dann jedes Mal eingeben, wenn Sie Ihren VBA-Quellcode lesen oder ändern möchten.

Dazu wechseln Sie zum VBA-Editor und wählen im Menü Extras den Eintrag Eigenschaften von. In dem folgenden Dialog gehen Sie zur Registerkarte Schutz, aktivieren die Option Projekt für die Anzeige sperren und geben ein neues sicheres Kennwort in die beiden Eingabefelder ein (siehe Bild 9).

Schützen des VBA-Projekts

Bild 9: Schützen des VBA-Projekts

Bestätigen Sie die Eingabe mit OK und schließen Sie Access. Öffnen Sie die Access-Datenbank wieder und wechseln Sie nach Eingabe des Datenbank-Kennworts zum VBA-Editor. Jetzt wird das Kennwort zum Schutz des VBA-Projekts abgefragt. Erst nach der Eingabe sehen Sie den VBA-Quellcode.

Sicher ist der Kennwortschutz des VBA-Projekts jedoch nur in Verbindung mit einem Datenbank-Kennwort. Durch das Datenbank-Kennwort ist der komplette Inhalt der Access-Datenbank verschlüsselt.

Bei einer unverschlüsselten Datenbank lässt sich das VBA-Kennwort recht einfach aushebeln. Dazu öffnen Sie die Access-Datenbank in einem Hex-Editor, suchen dort nach DPB und ersetzen B mit einem x-beliebigen Buchstaben. Speichern Sie die Änderung und schließen Sie den Hex-Editor. Danach öffnen Sie die Access-Datenbank regulär mit Access.

Beim Öffnen erhalten Sie eine Fehlermeldung, die Sie mit Ja bestätigen. Jetzt wechseln Sie zum VBA-Editor. Sie erhalten einige Fehlermeldungen, die Sie alle mit OK wegklicken. Anschließend vergeben Sie über den herkömmlichen Weg ein neues VBA-Kennwort. Danach steht Ihnen der Quellcode zur Verfügung.

Diese Vorgehensweise ist bei einer verschlüsselten Datenbank nicht möglich. Der Eintrag DBP existiert dort nicht als Klartext. Folglich können Sie ihn weder finden noch ändern.

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