Access Bedienungsanleitung: Anwendung des Sicherheitssystems ohne Anmeldung

Aus DBWiki
Wechseln zu: Navigation, Suche

In Abwandlung und Ergänzung von www.marktscheffel.de von Erwin Kainbacher verfasst.

Ziel

Eine Access-Datenbank (A97/2K) so erstellen und sichern, dass sie mit der Standard-SYSTEM.MDW OHNE Anmeldung verwendet werden kann, aber keinerlei Recht besteht, die Applikation selbst (Tabellen- Abfrage-Design, Formulare, Reports, Makros, Module (A95,97)) zu ändern.

Neue ICHDARF.MDW erstellen

Du musst den "Access Arbeitsgruppen-Administrator" starten. Das Programm heißt "WRKGADM.EXE" und ist entweder im Office/Access-Verzeichnis oder im Windows-Systemverzeichnis zu finden.

Wähle "Erstellen..." und fülle die notwendigen Informationen aus. Achtung: Überschreibe beim Speichern nicht die vorhandene System.mdw, sondern wähle einen neuen (Pfad+) Namen - z. B. "ICHDARF.MDW" !

Zugriffsschutz in der neuen Systemdatenbank aktivieren

Access verwendet nun die eben erstellte ICHDARF.MDW. Jetzt startest du Access. Unter "Extras/Sicherheit/Benutzer- und Gruppenkonten..." gibst du für den Administrator ein Kennwort ein und beendest Access gleich wieder. Starte Access erneut und du wirst feststellen, dass du dich nun anmelden musst. Als Benutzer gibst du "Administrator" und als Kennwort das zuvor angegebene ein.

Berechtigtes Konto erstellen, Standard-Administrator "entrechten"

Erstelle nun ein neues berechtigtes Benutzerkonto (z.B. auch "IchDarf"). Bei diesem Konto musst du außer dem Namen eine ID eingeben. Diese ID wird intern verwendet, um die Kennung des jeweiligen Kontos zu berechnen. Notiere diese Kennung! Sollte deine ICHDARF.MDW beschädigt werden, dann benötigst du die IDs, um den Benutzer wieder herzustellen. Es gibt keine Möglichkeit, die IDs später noch einmal einzusehen. Ordne das neue Benutzerkonto "IchDarf" der Gruppe "Administratoren" zu.

Nun muss noch das Standardkonto eines ungeschützten Systems "Administrator" entrechtet werden. Man kann das Konto aber nicht löschen, daher wird es einfach aus der Gruppe der "Administratoren" entfernt.

Eigentümer der Datenbank ändern

Nun kannst du beginnen, deine Datenbank zu schützen. In den meisten Fällen existiert bereits eine ungeschützte Version. Dies ist ziemlich problematisch, da hier der Benutzer "Administrator" als Eigentümer eingetragen ist. Damit darf er sich jederzeit volle Rechte geben, was natürlich nicht im Sinn der Sache ist.

Es ist also wichtig, dass du eine Version deiner Datenbank erstellst, die einen anderen Eigentümer hat. Starte Access (natürlich noch immer unter Verwendung der eben erstellten ICHDARF.MDW!) und melde dich an. Verwende dabei das oben erstellte Konto "IchDarf" - ein Passwort ist noch nicht vergeben worden, also das Feld leer lassen.

Nun erstellst du eine neue leere DB, welche automatisch "IchDarf" als Eigentümer erhält. Importiere alle Datenbankobjekte aus deiner ungeschützten DB (Achtung: dazu muss die Gruppe "Benutzer" natürlich die volle Berechtigung an den Objekten der bisher "un- oder falsch- geschützten" MDB haben.)

Datenbank schützen (Rechte vergeben)

Ggf. kann man dem Konto "Ichdarf" noch ein Passwort zuweisen (muss nicht sein). Der wesentliche Aspekt bei diesem Konzept des Zugriffsschutzes besteht ja darin, dass NUR dem/den berechtigten Entwickler(n) die ICHDARF.MDW zugänglich sein darf! Alle "normalen" User arbeiten mit der Standard-SYSTEM.MDW.

Vergib nun die Rechte an allen Datenbankobjekten wie folgt:

  • Tabellen-Userrechte: "IchDarf" - verwalten / "Admin." - ALLE Rechte entfernen
  • Tabellen-Gruppenrechte: "Benutzer" - NUR Obj. lesen + ALLE Datenrechte / "Admin." - ALLE Rechte entfernen
  • Abfragen analog wie Tabellen
  • Formulare-Userrechte: "IchDarf" - verwalten / "Admin." - ALLE Rechte entfernen
  • Formulare-Gruppenrechte: "Benutzer" - NUR Öffnen/Ausführen / "Admin." - ALLE Rechte entfernen
  • Berichte analog wie Formulare
  • Makros analog wie Formulare
  • Module-Userrechte: "IchDarf" - verwalten / "Admin." - ALLE Rechte entfernen
  • Module-Gruppenrechte: "Benutzer" + "Admin." - ALLE Rechte entfernen

Fertig - oder doch noch nicht ganz?

Jetzt können "normale" User zwar an der Applikation nichts mehr ändern, aber es wäre ja noch wünschenswert, dass auch sichergestellt ist, dass die Daten NUR mittels der Applikation, und nicht über z.B. eigenmächtig in eine selbsterstellte MDB eingebundene Tabellen, bearbeitet werden.

SQL: SELECT ... WITH OWNERACCESS OPTION

Dazu musst du (wahrscheinlich) auch etwas am Konzept deiner bestehenden Applikation ändern - bei neuen kann man folgende Tipps natürlich sofort berücksichtigen. Dafür sind als erstes die Tabellenrechte noch weiter zu beschränken: Wenn die Rechte bisher, so wie oben angegeben, gesetzt sind, so entfernst du nun für die Gruppe "Benutzer" ALLE Rechte (d.h. auch die Datenrechte!). Die o.a. Option in SQL ermöglicht es, dass die Daten über solche Abfragen (und NUR über diese) bearbeitet werden können, da beim Zugriff auf die Tabelle über die Abfrage, jene Berechtigungen herangezogen werden, welche für den Eigentümer (also hier "IchDarf") der Abfrage gelten.

Leider funktioniert WITH OWNERACCESS OPTION nur in gespeicherten Abfrage korrekt (d.h. die Option klappt im Code NICHT und als Record-/Rowsource nur eingeschränkt). Eine einfache Abfrage sieht dann in SQL z.B. so aus:

SELECT TabellenName.* FROM TabellenName WITH OWNERACCESS OPTION

Problematisch sind gespeicherte Abfragen WITH OWNERACCESS OPTION insofern, da Access die Möglichkeit bietet, aus einer "fremden" MDB mittels:

SELECT * FROM DieQueryWithOwnerAccess IN 'C:\temp\Geschützte.mdb'

erst wieder in einer Weise an die Daten zu gelangen, welche es zu verhindern gilt.

Eine (nicht sehr gelungene) Lösung des Problems wird in der MS Access Security FAQ Nr. 25 vorgeschlagen, ein ausführlicher Thread zu dem Thema (incl. Demo-MDB's) findet sich im MS-Office-Forum.

Das war's - Abwandlungen des Konzepts?!

Natürlich kannst du das Konzept auch so abwandeln, dass weitere Gruppen/Benutzer mit unterschiedlichen Objektrechten eingerichtet werden. Diese User/Gruppen sollten sich aber in einer zusätzlichen neuen MDW befinden - mit aktiviertem Passwort. Die "ICHDARF.MDW" mit dem Konto "IchDarf" sollte NIE in unberechtigte Hände gelangt. Es existieren genug Tools, mit denen aus einer MDW die Userkonten/PID/Passwörter ausgelesen werden können - die neuesten Tools können jetzt leider auch User/PID direkt aus einer MDW(E) auslesen.

Ein Datenbankkennwort ist in A95/97 mit einem 10-Zeiler zu knacken - A2K ist diesbezüglich etwas besser, wobei aber wiederum die neuesten Hacktools auch damit kein Problem haben.

Wiki hinweis.png Nicht vergessen: Sicherungskopie von "ICHDARF.MDW" erstellen + wegschliessen!