PDA

Vollständige Version anzeigen : Keine Objekte aus Datenbank importieren


FFrye
21.09.2001, 07:28
Hallo,

hier nocheinmal eine Frage. Wie kann ich es verhindern, daß jemand aus meiner Datenbank einzelne Objekte wie Tabellen oder Module in eine andere Datenbank importiert ?

Vielen Dank
Frank

erwin
21.09.2001, 08:30
da müsste dieses "Rezept" - vorallem der letzte Absatz Abhilfe schaffen...

<font Face="Verdana" Size=2>
In Abwandlung und Ergänzung von
http://www.marktscheffel.de/access/accesszugriffsschutz.htm


A97 (95/2K): MDB so erstellen + 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 - zB. "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 (zB. auch "IchDarf"). Bei diesem Konto musst du ausser dem Namen eine ID eingeben. Diese ID wird intern verwendet, um die Kennung des jeweiligen Kontos zu berechnen. Notiere die Kennung ! Sollte deine ICHDARF.MDW beschädigt werden, dann benötigst du die ID's, um den Benutzer wieder herzustellen. Es gibt keine Möglichkeit, die ID's später noch einmal einzusehen. Ordnen 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 DB 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 zB. eigenmächtig in eine selbsterstellte MDB eingebundene Tabellen, bearbeitet werden.


Queries With Owneraccess Option


Dazu musst du (wahrscheinlich) auch etwas am Konzept deiner bestehenden App. ändern - bei neuen kann man das folgende "Rezept" natürlich sofort berücksichtigen. In der App. muss dazu sichergestellt sein, dass NIRGENDS die Tabellen direkt verwendet werden: Also überall (auch in VBA-Code und Ausdrücken zB. Dlookup() !) mit Abfragen arbeiten. Diese müssen (falls nicht vorhanden, musst du neue erstellen) als Eigentümer "IchDarf" haben und in SQL muss die Option "WITH OWNERACCESS OPTION" angegeben sein. Im Access-Eigenschaftenfenster der Abfrage musst du dazu bei "Ausführungsberechtigung" "Eigentümer" (statt Benutzer) angeben. Eine einfache Abfrage sieht dann in SQL zB. so aus:
SELECT TabellenName.* FROM TabellenName WITH OWNERACCESS OPTION;
Jetzt sind nur noch die Tabellenrechte 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 (dh. auch die Datenrechte !). Die o.a. Option in den Abfragen, ermöglicht es, dass die Daten über die 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 der Abfrage (also hier "IchDarf") gelten.


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 Rechte sollten sich aber in einer zusätzlichen MDW befinden (zB. in einer kopierten + ergänzten Standard "System.MDW" mit aktiviertem Passwort). Wesentlich ist, dass die "ICHDARF.MDW" mit dem Konto "IchDarf" NIE in unberechtigte Hände gelangt. Es existieren genug Tools, mit denen aus einer MDW die Userkonten/Passwörter ausgelesen werden können, auch ein Datenbankkennwort ist in A95/97 mit einem 10-Zeiler zu knacken - A2K ist diesbezüglich besser.


Sicherungskopie von "ICHDARF.MDW" erstellen + wegschliessen !


</font></P>
Viel Spass wünscht erwin...