2009-05-30 2 views
1

Kann Sicherheit auf Benutzerebene es jemandem ermöglichen, auf ein Formular zuzugreifen, aber nicht auf eine Tabelle zuzugreifen? Ich habe ein Formular, das mit einem "SELECT" -Befehl an eine Tabelle angeschlossen ist. Es wird nicht "UPDATE" oder "DELETE". Ich möchte, dass der Benutzer auf mein Formular zugreift, aber ich möchte nicht, dass sie die Details in der zugrunde liegenden Tabelle anzeigen können. Ich habe alle möglichen Kombinationen im Sicherheitsexperten auf Benutzerebene ausprobiert, aber aus irgendeinem Grund wird mein Formular leer angezeigt, es sei denn, ich gebe dem Benutzer vollständigen Zugriff, um etwas zu tun. Irgendwelche Ideen? By the way, ich bin auf Access 2003.MS Access User Level Sicherheit für zu lesendes Formular, aber versteckte Tabelle

Antwort

2

Sie könnten ein MDE machen und es Ihren Benutzern geben. Wenn Sie dies tun, können die Benutzer nur die Benutzeroberfläche sehen, die Sie bereitgestellt haben.

Wenn sich Ihre Tabellen in derselben Access-Datenbank wie die Formulare und Abfragen befinden, müssen Sie die Datenbank zuerst in ein Frontend und Backend aufteilen. Siehe:

http://databases.about.com/od/tutorials/ss/splitaccessdb.htm

für Informationen darüber, wie dies zu tun. Das Frontend enthält alles außer den Tabellen. Das Backend enthält die Tabellen. Das Frontend ist mit den Backend-Tabellen über "Linked Table" -Objekte im Frontend verbunden.

Sobald die Datenbank aufgeteilt ist, öffnen Sie das Frontend in Access und erstellen Sie ein MDE, indem Sie in der Menüleiste Extras/Datenbankhilfsprogramme/MDE-Datei erstellen wählen. Das MDE ist, was Sie den Benutzern zur Verfügung stellen. Sie öffnen es auf die gleiche Weise wie jede andere Datenbank, außer dass sie keines der Objekte entwerfen können.

Stellen Sie sicher, dass im Frontend ein AUTOEXEC-Makro definiert ist, sodass beim Öffnen des MDE durch den Benutzer ein Einstiegspunkt vorhanden ist. Der Benutzer kann keine der Objekte im MDE sehen. Wenn Sie also kein AUTOEXEC-Makro zum Öffnen des ersten Formulars haben, passiert nichts, wenn Sie versuchen, das MDE zu öffnen.

Wenn Sie die Möglichkeit benötigen, indem der Benutzer die verknüpften Tabellen in der MDE zu verwalten, um die Back-End-Datenbank mit einer Datei/Öffnen-Dialog finden Sie im folgenden Artikel verbinden:

http://www.mvps.org/access/tables/tbl0009.htm

NATÜRLICH Dies verhindert jedoch, dass Benutzer die Back-End-Datenbank öffnen können. Wenn Sie eine stärkere Sicherheit benötigen, können Sie die Back-End-Datenbank auf SQL Server Express aufrüsten. Mehr Infos hier:

http://office.microsoft.com/en-us/access/HA102755371033.aspx

1

Was Sie suchen ist eine RWOP Abfrage. Das bedeutet "mit Erlaubnis des Besitzers laufen".

Damit das funktioniert, vorausgesetzt, Sie haben bereits den Sicherheitsassistenten für Ihre Front-End- und Back-End-Datenbanken ausgeführt und Berechtigungen für die Benutzer zum Lesen der Tabellen entfernt, erstellen Sie eine gespeicherte Abfrage als Recordsource deiner Form. In den Eigenschaften der Abfrage ist es standardmäßig auf RUN PERMISSIONS als "Benutzer" festgelegt. Ändern Sie das in "Besitzer" und speichern Sie die Abfrage. Die Abfrage wird mit allen Berechtigungen für die Basistabelle ausgeführt, die der Besitzer der Abfrage besitzt. Wenn Sie als Administrator mit vollständigen Berechtigungen arbeiten, sollten Sie die Berechtigungen der gespeicherten Abfrage schreibgeschützt festlegen (oder die Abfrage unter einer Benutzeranmeldung mit schreibgeschütztem Zugriff auf die Tabellen erstellen). Dies ist viel einfacher um das ehemalige zu tun).

Einige Einschränkungen:

  1. Sicherheit auf Benutzerebene ist schwierig. Wenn Sie auch nur einen Schritt verpassen, der in dem Whitepaper zur Sicherheit von ULS beschrieben wird, ist Ihre App nicht gesichert.Um dies zu testen, öffnen Sie Access mit einer Standardarbeitsgruppendatei und prüfen Sie, ob Sie auf die Objekte in Ihrer Datenbank zugreifen können, die als Standardadministrator angemeldet sind. Wenn du kannst, hast du irgendwo auf der Linie einen Fehler gemacht.

  2. Sicherheit auf Benutzerebene ist für jeden machbar, der es möchte. Dies bedeutet nicht, dass es nicht nützlich ist, es bedeutet nur, dass es nicht kugelsicher ist. Ich sorge mich nicht so sehr darum, da ich Sicherheit als ein menschliches Problem betrachte, als ein technisches Problem - Sie müssen Mitarbeitern genügend Privilegien geben, um ihre Arbeit zu erledigen, und Sie haben ihnen vertraut, dass sie die Privilegien nicht missbrauchen werden du hast sie gegeben.

  3. Wenn Sie Access 2007 ausführen und das ACCDB-Format verwenden, sind RWOP-Abfragen für Sie nicht verfügbar, da die Sicherheit auf Jet-Benutzerebene für das ACCDB-Format nicht unterstützt wird. Wenn Sie jedoch das MDB-Format verwenden, funktioniert es in A2007 einwandfrei.

+0

Ich kann diese RUN-Berechtigungen in Access 2007 nicht finden ... irgendwelche Zeiger? – DGM

+0

Wenn Sie eine ACCDB verwenden, werden Sie dies nicht finden, da das ACCDB-Format keine Jet-Sicherheit auf Benutzerebene unterstützt. Wenn es sich bei Ihrer Datei jedoch um eine MDB handelt, sollte sie im Eigenschaftenfenster im Abfrage-Designer vorhanden sein, z. B. RUN PERMISSIONS. –

Verwandte Themen