Datenbank mit Sicherheitssystem nach Access 2007 konvertierenBislang hieß es, das Microsoft das Sicherheitssystem mit Benutzerverwaltung auf Basis einer .mdw-Datei ersatzlos gestrichen hätte. Das ist mitnichten der Fall: Es gibt das Sicherheitssystem immer noch, und es verrichtet anstandslos seinen Dienst. Es ist nur ein wenig aufwendiger, die notwendigen Einstellungen vorzunehmen - aber das dürfte die vielen Programmierer, die das Sicherheitssystem allein für die Verwaltung von Benutzern und Gruppen eingesetzt haben, egal sein.
Sicherheitssystem oder nicht?Eigentlich haben sich ja schon alle damit abgefunden, dass es das Sicherheitssystem in Access 2007 nicht mehr gibt. Einige trauerten ihm nach: Erstens diejenigen, die das System zum Schutz von Daten und Objekten, also im Sinne der eigentlichen Bestimmung eingesetzt haben, und zweitens diejenigen, die dankend die Möglichkeit der Benutzerverwaltung angenommen haben.
Das das Sicherheitssystem nicht wirklich sicher ist und mit entsprechendem Know-how geknackt werden kann, machte den Abschiedsschmerz erträglich: So wird man wenigsten gezwungen, zum SQL Server oder einem alternativen System zu wechseln und so eine wirklich sichere Datenhaltung zu betreiben.
Die Benutzer- und Gruppenverwaltung fehlt einigen aber schon: Immerhin erspart es einem die Verwaltung von Benutzern und Gruppen in selbst definierten Tabellen und die Programmierung des Anmeldedialogs, und den Namen des aktuellen Benutzers konnte man kurz mit der Funktion CurrentUser auslesen. Zufälle ...... gibt es immer wieder, und manche führen dann zu überraschenden Erkenntnissen: Da teilt mir doch ein Kunde mit, er habe eine Access 2003-Datenbank nach Access 2007 hochkonvertiert und das Sicherheitssystem würde ohne Probleme greifen.
Also schnell eine geschützte MDB gegriffen, mit Access 2007 in eine ACCDB konvertiert und - nichts ist mit Schutz! Schade, das wäre eine interessante Neuigkeit gewesen. Wenn man eine geschützte MDB in eine ACCDB umwandelt und dann wieder zurückkonvertiert, gibt es allerdings Interessantes zu beobachten: Die Datenbank ist immer noch geschützt! Die ACCDB scheint also die dafür verantwortlichen Informationen (die sich ja auf die MDW-Datei und die MDB-Datenbank aufteilen) von der MDB zu übernehmen.
Ein Schelm, wer Böses dabei denkt ... aber müsste Access 2007 nicht eigentlich auch das Sicherheitssystem einsetzen? Immerhin kann man ja auch auf Systemtabellen nur lesend zugreifen. Dafür gibt es doch wohl keinen anderen Mechanismus? Nun denn, einen Versuch ist es Wert: Hochkonvertierte und geschützte ACCDB geschnappt, eine (in der MDB) geschützte Tabelle geschnappt und diese in eine Systemtabelle umgewandelt (entsprechende Berechtigung vorausgesetzt):
CurrentDB.TableDefs("<Tabellenname>").Attributes = CurrentDB.TableDefs("<Tabellenname>").Attributes or dbSystemobject
Danach schließt man Access, öffnet die Datenbank erneut - diesmal unter einem Account mit eingeschränkten Berechtigungen für die präparierte Tabelle - und siehe da: Die Tabelle ist geschützt! Und sonst?Leider lassen sich die anderen Objekte nicht auf die gleiche Art schützen: Es gibt schlicht keine beschreibbare Eigenschaft, mit der man etwa ein Formular in ein Systemobjekt umwandeln kann.
Die Frage ist aber ohnehin, ob man andere Objekte als die in den Tabellen gespeicherten Daten schützen muss.
Wie sieht es mit bestehenden ACCDB-Datenbanken aus - lassen sich die ebenfalls unter Access 2007 schützen? Ja, das funktioniert: Allerdings lassen sich die Dialoge zum Anlegen von Benutzern und Gruppen sowie zum Einstellen der Zugriffsrechte auf die verschiedenen Datenbankobjekte nicht öffnen (auch die entsprechenden DoCmd.RunCommand-Anweisungen mit den Parametern acCmdUserAndGroupAccounts und acCmdUserAndGroupPermissions funktionieren nicht).
Wie Sie eine ungeschützte Datenbank im ACCDB-Format in Access 2007 schützen, erfahren Sie hier.
|