Access Zugriff ohne Benutzerzugriff

Hallo,

ich habe in meinem Unternehmen eine Access-Datenbank (Front- und Backend) in einem Mehrbenutzerumfeld übernommen.

Momentan werden Dokumente in der Datenbank abgelegt, was das Backend auf inzwischen etwa 90 MB aufgebläht hat. Das Problem ist, dass es in einem Netzwerkverzeichnis liegt und Datenübertragungsrate derzeit im Keller ist. Je nach Last brauchen manche Aktionen 10 oder mehr Sekunden. Wenn man alle Dokumente entfernt (BE ca. 10 MB) dauern die Aktionen nur 1-2 Sekunden.

Kurz gesagt: die Dokumente sollen ausgelagert werden. Aber wie verhindere ich den Zugriff der User auf diese Dokumente? Wenn ich es richtig verstanden habe, startet das Frontend mit Benutzerrechten. D.h. egal wo ich die Daten ablege, der User kommt da ran, oder? Es soll verhindert werden, dass der User einmal eingecheckte und registrierte Daten später manipuliert.

Geht das mit MS-Access überhaupt, ohne einen DB Server? Kann das Programm mit anderen Rechten als denen des Benutzers gestartet werden, um die Dokumente in einem für den Benutzer nicht erreichbaren Bereich zu speichern? Oder wie kann ich es erreichen, dass die Dokumente nur über das FE erreichbar sind?

Ich hoffe, ihr könnt mir weiter helfen.

Viele Grüße,
Michael

Grüß Gott,

ich habe in meinem Unternehmen eine Access-Datenbank (Front-
und Backend) in einem Mehrbenutzerumfeld übernommen.

Frage: ich habe mir ein Auto gekauft, kann ich damit im Gelände fahren?
Sorry, aber ohne zu wissen, welche Access Version du einsetzt, kann man nur raten und vermuten.

Momentan werden Dokumente in der Datenbank abgelegt, was das
Backend auf inzwischen etwa 90 MB aufgebläht hat.

Selbst bei 90 GB würde ich sagen: wenig, wenn es nicht nur 2-3 Dokumente sind.

Das Problem ist, dass es in einem Netzwerkverzeichnis liegt und
Datenübertragungsrate derzeit im Keller ist

das liegt aber nicht am Access

Je nach Last
brauchen manche Aktionen 10 oder mehr Sekunden. Wenn man alle
Dokumente entfernt (BE ca. 10 MB) dauern die Aktionen nur 1-2
Sekunden.

bei einem 10Base Netzwerk ist das vollkommen normal.

Kurz gesagt: die Dokumente sollen ausgelagert werden.

ok, aber Platz auf der Festplatte werden diese auch benötigen…

Aber wie verhindere ich den Zugriff der User auf diese Dokumente?

Mit Benutzerrechten auf den Ordner und/oder auf die Datei.
Denn ein Server kann das sehr gut verwalten, da jeder Mitarbeiter muss sich ja mit Benutzernamen und Passwort im Netzwerk anmelden.

Wenn ich es richtig verstanden habe, startet das Frontend mit
Benutzerrechten.

Frage: welche denn? die des Netzwerkes/Server, oder eine extra Benutzerverwaltung in Access?

D.h. egal wo ich die Daten ablege, der User kommt da ran, oder?

= oder, s.o.

Es soll verhindert werden, dass der User
einmal eingecheckte und registrierte Daten später manipuliert.

*LOL*, soweit die Theorie. Über welche Dokumente reden wir denn?

Geht das mit MS-Access überhaupt, ohne einen DB Server?

ja, mit einer Datenbank geht so etwas. Jedes mir bekannte DMS greift auf eine DB zurück.

Kann das Programm mit anderen Rechten als denen des Benutzers
gestartet werden, um die Dokumente in einem für den Benutzer
nicht erreichbaren Bereich zu speichern?

*Glaskugelputz* hä? was? wie? wo? Bitte beschreibe deinen Wunsch etwas genauer. Woher sollen wir wissen mit welchen Rechten das Programm gestartet werden kann? Ist es ein Standard-Produkt? Mit Handbuch? Programmname?

Oder wie kann ich es erreichen, dass die Dokumente nur über das FE erreichbar sind?

z.B. in dem du die Dokumente in einer DB speicherst. (also so wie es jetzt der Fall ist)

Grüße aus München
Wolfgang
(Netwolf)

Hi Skylet,

das geht schon du darft nur nicht die Dokumente
in die Datenbank legen sondern nur der Pfad mit dateinamen
wo sie stehen. Habe ein Archiv Programm erstellt mit scan-Funktion
habe kein Problem mit der Antwort.

Gruß

HK

Hi,

das geht schon du darft nur nicht die Dokumente
in die Datenbank legen sondern nur der Pfad mit dateinamen
wo sie stehen. Habe ein Archiv Programm erstellt mit
scan-Funktion
habe kein Problem mit der Antwort.

Und wie hast du verhindert, dass ein Benutzer direkt auf diese Pfade der Dokumente zugreifen kann - ohne das Frontend zu benutzen?
Das wollte der OP wissen.

Gruss
Joey

Hi,
dein Frontend darf nicht mehr auf dem Rechner des Benutzers laufen sondern zb. in einer Terminalserver-Umgebung.

Dort kannst du dann die Dokumente außerhalb der DB speichern und verhindern, dass man darauf zugreifen kann.

Solange das Frontend auf dem PC des Benutzers läuft, hat dieser alle Rechte etwas zu tun was auch das Frontend können kann bzw. muss.

Gruss
Joey

Hallo Wolfgang,

danke für Deine Antwort!

ich habe in meinem Unternehmen eine Access-Datenbank (Front-
und Backend) in einem Mehrbenutzerumfeld übernommen.

Frage: ich habe mir ein Auto gekauft, kann ich damit im
Gelände fahren?

Antwort: selbstverständlich. Ob das Vehikel dafür geeignet ist, ist eine andere Frage, aber grunsätzlich können Sie mit jedem Auto im Gelände fahren.

Sorry, aber ohne zu wissen, welche Access Version du einsetzt,
kann man nur raten und vermuten.

Das heißt, es gibt im Zusammenhang mit meiner Frage (Auslagerung von Dokumenten und Zugriffsberechtigung) einen Unterschied zwischen 2000, 2003 und 2007? Konnten bei 2003 die Benutzer auf Dokumente nicht zugreifen, auf die sie bei 2007 zugreifen können?
Sorry, wenn ich gewusst hätte, dass es von Belang ist, hätte ich gleich geschrieben, dass es vermutlich 2007 ist. Es läuft bei mir übrigens unter WinXP auf einem Notebook. Wenn Prozessor, RAM und Peripherie benötigt werden, schau ich nochmal nach.

Tut mir leid, wollte nicht unhöflich sein. Aber ist das Wissen um die Version für irgend etwas in diesem Zusammenhang sachdienlich? Oder wolltest Du nur erwähnen, dass ich sie nicht nannte?

Momentan werden Dokumente in der Datenbank abgelegt, was das
Backend auf inzwischen etwa 90 MB aufgebläht hat.

Selbst bei 90 GB würde ich sagen: wenig, wenn es nicht nur 2-3
Dokumente sind.

Es sind etwa 80 angehängte Bilder und PDF Dateien. Da sie aber über das Netzwerk angebunden sind, müssen scheinbar bei jedem Start und Datenabgleich viele Daten übertragen werden. Ich weiß nicht, wie intelligent Access (abhängig von der Version?) ist, aber ich denke ein 90 GB Backend im Netzlaufwerk ist nicht effizient.

Das Problem ist, dass es in einem Netzwerkverzeichnis liegt und
Datenübertragungsrate derzeit im Keller ist

das liegt aber nicht am Access

Das habe ich nicht behauptet. Ich habe nur die aktuelle Umgebung beschrieben, in der viele Nutzer von unterschiedlichen Standorten darauf zugreifen müssen.

Je nach Last
brauchen manche Aktionen 10 oder mehr Sekunden. Wenn man alle
Dokumente entfernt (BE ca. 10 MB) dauern die Aktionen nur 1-2
Sekunden.

bei einem 10Base Netzwerk ist das vollkommen normal.

Das ist möglich. Und das ist auch der Grund, weshalb ich die Größe minimieren möchte.

Kurz gesagt: die Dokumente sollen ausgelagert werden.

ok, aber Platz auf der Festplatte werden diese auch
benötigen…

Ja, aber sie werden nur dann nachgezogen, wenn sie benötigt werden (in wahrscheinlich 0.1 Prozent der Fälle) und nicht beim Zugriff/Durchsuchen des Backends.

Aber wie verhindere ich den Zugriff der User auf diese Dokumente?

Mit Benutzerrechten auf den Ordner und/oder auf die Datei.
Denn ein Server kann das sehr gut verwalten, da jeder
Mitarbeiter muss sich ja mit Benutzernamen und Passwort im
Netzwerk anmelden.

Ok, ich habe das Gefühl, wir reden aneinander vorbei. Um mal meinen Wissensstand zusammenzufassen. Ich habe es so verstanden:

Zu einem Access Datenbankprojekt gehören neben den Tabellen auch Queries, Formulare und Berichte. Sobald ein Benutzer mit der Datenbank arbeitet, wird sie gelockt und andere Nutzer können nicht damit arbeiten. Deshalb wird sie in Mehrbenutzerumgebungen in Frontend (Formulare, Berichte, Queries) und Backend (nur Tabellen) unterteilt. So kann jeder mit seiner lokalen Frontendkopie arbeiten und das Backend wird nur während der Zeit des Zugriffs auf die Tabellen geblockt.
Frontend und Backend sind beides nur Dateien, es gibt keinen laufenden Datenbankserver. Meine Annahme ist, dass das lokal gestartete Frontend mit Benutzerrechten ausgeführt wird. Wenn neue Dokumente gespeichert werden, dann können sie nur in Ordnern abgelegt werden, auf die der Benutzer Schreibzugriff hat. Bis der jeweilige Datensatz eingefroren ist, dürfen die Dokumente gelöscht werden, danach nicht mehr. Und wenn das Frontend genau die Rechte hat, die der Benutzer hat, dann kommt er an die abgelegten Dokumente ran.

Wenn ich es richtig verstanden habe, startet das Frontend mit
Benutzerrechten.

Frage: welche denn? die des Netzwerkes/Server, oder eine extra
Benutzerverwaltung in Access?

Die Rechte der WinXP Dateiverwaltung. Darum die Frage, ob das Frontend mit anderen Rechten ausgeführt werden kann.

Es soll verhindert werden, dass der User
einmal eingecheckte und registrierte Daten später manipuliert.

*LOL*, soweit die Theorie. Über welche Dokumente reden wir
denn?

Über die Dateien, die in den file-Feldern abgelegt sind. S.o.

Geht das mit MS-Access überhaupt, ohne einen DB Server?

ja, mit einer Datenbank geht so etwas. Jedes mir bekannte DMS
greift auf eine DB zurück.

Was verstehst Du unter „eine DB“? Das Frontend? Das Backend? Einen DB-Server?
Wie gesagt habe ich nur zwei Dateien.

Ist es ein Standard-Produkt? Mit Handbuch? Programmname?

Es ist eine selbst geschriebene Datenbankanwendung, der Name ist belanglos.

Oder wie kann ich es erreichen, dass die Dokumente nur über das FE erreichbar sind?

z.B. in dem du die Dokumente in einer DB speicherst. (also so
wie es jetzt der Fall ist)

Ich meinte die ins Dateisystem ausgelagerten Dateien.

Kann das Programm mit anderen Rechten als denen des Benutzers
gestartet werden, um die Dokumente in einem für den Benutzer
nicht erreichbaren Bereich zu speichern?

*Glaskugelputz* hä? was? wie? wo? Bitte beschreibe deinen
Wunsch etwas genauer. Woher sollen wir wissen mit welchen
Rechten das Programm gestartet werden kann?

Die Frage ist, mit welchen (Dateizugriffs-)Rechten eine Access Frontenddatei standardmäßig geöffnet wird. Das kann man wissen, wenn man sich mit der Arbeitsweise von MS Access auskennt. Wenn Du es nicht weißt, wirst Du mir wahrscheinlich nicht weiter helfen können.

Trotzdem danke für den Versuch, Gruß

Michael

Hallo Hans, hallo Joey

danke auch für eure Antworten!

das geht schon du darft nur nicht die Dokumente
in die Datenbank legen sondern nur der Pfad mit dateinamen
wo sie stehen. Habe ein Archiv Programm erstellt mit
scan-Funktion
[…]

Und wie hast du verhindert, dass ein Benutzer direkt auf diese
Pfade der Dokumente zugreifen kann - ohne das Frontend zu
benutzen?

Ja, genau das war der Kern meiner Frage. Mir ist bewusst, dass man große Dokumente nicht als Blob- oder File-Spalten in Datenbanken speichern sollte, sondern wenn möglich im Dateisystem, mit einer Dateinamenreferenz in der Datenbank.
Ich möchte die Dokumente nun gern auslagern, aber der Benutzer darf sie nur aus dem Formular heraus lesend öffnen. Dazu muss das DB-System auf die Datei zugreifen. Doch wenn die Frontenddatei mit Benutzerrechten geöffnet wird, dann kann der Benutzer genau das, was auch das Frontend kann.

Gruß,
Michael

Hallo,

speicher die Datei in einem zugriffsfähigen Ordner und setze anschließend individuell die passenden Dateirechte mit cacls.exe

Gruß
Franz, DF6GL

Hi Joey,

dein Frontend darf nicht mehr auf dem Rechner des Benutzers
laufen sondern zb. in einer Terminalserver-Umgebung.

Dort kannst du dann die Dokumente außerhalb der DB speichern
und verhindern, dass man darauf zugreifen kann.

Ok, ich verstehe. Vielleicht hat Hans noch eine gute Lösung parat.

Eigentlich war das Projekt möglichst einfach (und schnell) gestrickt. Dafür kam zugute, dass das Backend keinen laufenden Server benötigt, sondern als Datei im Dateisystem liegt.

Wenn man es genau nimmt, dann kann man mit dem Zugriff auf die entfernte Backend-Tabelle auch die File-Daten direkt aus der Datenbank holen oder sie ändern.

Solange das Frontend auf dem PC des Benutzers läuft, hat
dieser alle Rechte etwas zu tun was auch das Frontend können
kann bzw. muss.

D.h. MS-Access ist mit dem dateibasierten Ansatz überhaupt nicht geeignet, den Benutzer an der Änderung von Daten zu hindern, solange die Logik selbst diese Daten ändern kann?

Mit den neuen Anforderungen der Zugriffssicherheit werden wir dann wohl um einen Server nicht herum kommen. Ein Terminal-Serversystem werden wir in der Betriebsinfrastruktur nicht einrichten können.
Also läuft es wohl auf MySQL oder Oracle hinaus.

Gruß,
Michael

Moin DF6GL,

speicher die Datei in einem zugriffsfähigen Ordner und setze
anschließend individuell die passenden Dateirechte mit
cacls.exe

die Möglichkeit habe ich mir auf Hinweis eines Kollegen angesehen, sie birgt aber weitere Probleme:

Nur die Person, die die Datei gespeichert hat (Eigentümer), darf den Zugriffsstatus ändern. Das bedeutet
1.) Nur die Person, die die Datei hochgeladen hat, darf den Datensatz einfrieren (und dabei die Schreibrechte entfernen). Und
2.) kann diese Person die Rechte auch wieder manuell zurück setzen und die Datei ändern.

Ich weiß, die wenigsten Benutzer kennen cacls.

Gruß,
Michael

Grüß Gott,

Das heißt, es gibt im Zusammenhang mit meiner Frage
(Auslagerung von Dokumenten und Zugriffsberechtigung) einen
Unterschied zwischen 2000, 2003 und 2007?

ja, lese bitte die Unterschiede zur Access eigenen Benutzerverwaltung, die ab 2007 weggefallen ist.
Lese die Unterschiede zur Speicherung von Dokumenten und Bildern etc. = ab 2007 gibt es die „Anlagen“ und das OLE-Feld wird „überflüssig“ nicht mehr benötigt. Abgesehen davon reduziert die andere Speicherart in den Anlagen auch den benötigten Platz auf der Platte drastisch.

Tut mir leid, wollte nicht unhöflich sein. Aber ist das Wissen
um die Version für irgend etwas in diesem Zusammenhang
sachdienlich?

siehe oben

Ja, aber sie werden nur dann nachgezogen, wenn sie benötigt
werden (in wahrscheinlich 0.1 Prozent der Fälle) und nicht
beim Zugriff/Durchsuchen des Backends.

dann erstelle doch zwei Backend’s. Eins für die Dokumente, und eins für den Rest.

Zu einem Access Datenbankprojekt gehören neben den Tabellen
auch Queries, Formulare und Berichte. Sobald ein Benutzer mit
der Datenbank arbeitet, wird sie gelockt und andere Nutzer
können nicht damit arbeiten.

falsch, ich kann eine Access-Datenbank exklusiv oder shared (Mehrbenutzerumgebung) öffnen. Das ist eine Sache der Grundeinstellung von Access.

Deshalb wird sie in Mehrbenutzerumgebungen in Frontend (Formulare, Berichte, Queries) und Backend (nur Tabellen) unterteilt.

nein, die Unterteilung dient lediglich der besseren Wartung bei Updates bzw. Änderungen an Formularen, Berichten etc.

So kann jeder mit seiner lokalen Frontendkopie arbeiten und das Backend wird nur während der Zeit des Zugriffs auf die Tabellen geblockt.

nein, jeder arbeitet mit dem Frontend nach programmierten Rechten, unabhängig vom Betriebssystem. Bis AC2003 gab es noch eine eigene Benutzerverwaltung, wo man diese Rechte weiter einschränken konnte.
Ab AC2007 muss man eine eigene Rechteverwaltung in Access programmieren, oder mit Hintertürchen die alte aus AC2003 implementieren (nicht zu empfehlen).

Frontend und Backend sind beides nur Dateien, es gibt keinen
laufenden Datenbankserver.

ok, ein Server ist für die Nutzung von Access nicht vorgeschrieben.
Man bezeichnet allgemein in der EDV das Gerät, dass das Backend hostet als „Server“ um Missverständnisse damit auszuräumen.

Meine Annahme ist, dass das lokal
gestartete Frontend mit Benutzerrechten ausgeführt wird.

mit den Benutzerrechen des Betriebssystems = ja

Wenn neue Dokumente gespeichert werden, dann können sie nur in
Ordnern abgelegt werden, auf die der Benutzer Schreibzugriff hat.

nein, denn das Programm selber kann diese Rechte haben, unabhängig vom Benutzer, der gerade damit arbeitet.

Bis der jeweilige Datensatz eingefroren ist, dürfen die
Dokumente gelöscht werden, danach nicht mehr.

ok, das ist eine Festlegung die Ihr getroffen habt. Frage: wenn die Datei im Ordnersystem abgelegt wird, wie soll sie dann „eingefroren“ werden?
In einer DB kann ich sagen: der Datensatz kann nur angesehen, aber nicht mehr bearbeitet werden.

Und wenn das Frontend genau die Rechte hat, die der Benutzer hat, dann
kommt er an die abgelegten Dokumente ran.

nein, s.o.

Die Rechte der WinXP Dateiverwaltung. Darum die Frage, ob das
Frontend mit anderen Rechten ausgeführt werden kann.

du kennst Programme wie z.B. RunAS http://de.wikipedia.org/wiki/Runas

Was verstehst Du unter „eine DB“? Das Frontend? Das Backend?
Einen DB-Server?
Wie gesagt habe ich nur zwei Dateien.

Ein Frontend ist zwar in einer Access-(MDB oder ACCDB ect.) gespeichert, beinhaltet i.d.R. aber keine Tabellen, daher wird bei einem Frontend i.d.R. auch nicht von einer Datenbank gesprochen.

Das „Modul“, also das Backend, dass die Tabellen enthält ist dabei die „Datenbank“. Das kann eine Access- MDB, ACCDB etc. sein, oder eine MS SQL-Db, MySQL-DB oder auch Oracle oder eine andere Datenbank.

das kann man wissen, wenn man sich mit der Arbeitsweise von MS Access
auskennt.

s.o.

Grüße aus München
Wolfgang
(Netwolf)