Wie die Kontrolle von Benutzerrechten für eine Access-Datenbank?
Was ist der einfachste Weg zu sein, um einem Benutzer Schreibrechte und alle anderen nur-lese-Zugriff auf eine MS Access-Datenbank auf einem lokalen Netzwerk?
Ich hoffe, mein user, aber leider speichert Access die änderungen an Daten, sobald die Zeile einer Tabelle ist deaktiviert. Versehentliche Tastenanschläge werden gespeichert, ohne den Benutzer zu Fragen, für die änderungen gespeichert werden.
Ich glaube, Sie haben mis-betitelt Ihre Frage. Du bist nicht zu Fragen der Sicherheit, sondern Kontrolle über Benutzer-Rechte auf die Daten. Das kann erreicht werden per Jet ULS Sicherheit, es sei denn, Sie sind mit der Access 2007 ACCDB-format.
InformationsquelleAutor Liam | 2009-02-09
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einfachste Weg wäre die Nutzung von Freigabe-Berechtigungen. Schreibzugriff auf eine Gruppe und legen die Benutzer müssen in die Datenbank schreiben in dieser Gruppe. Setzen alle anderen in einer Gruppe Lesen. Dies setzt Voraus, Sie haben eine Windows-Domäne, natürlich.
Hier ist eine Website, die einige Informationen über das sichern von Access-Datenbanken. Es befasst sich mit Access 2000, möglicherweise gibt es weitere Optionen für die neueren Versionen.
Tatsächlich, Sie brauchen nicht volle Berechtigungen-nur alles, was aber Berechtigung LÖSCHEN. Bedeutet das, dass die LDB-Datei nicht gelöscht wird, aber das spielt keine Rolle. Das ist der Weg, der Jet vor der version 3.0 gearbeitet standardmäßig.
Danke, setzen die .mdb-Datei in einem freigegebenen Ordner, auf denen nur ein Benutzer verfügt über vollständige Berechtigungen und die anderen haben nur Leseberechtigung scheint schön zu arbeiten.
InformationsquelleAutor Dave Swersky
Einige Gedanken auf die Kontrolle der Benutzerrechte für ein Jet-Daten speichern:
wenn Sie wirklich wollen, zu sperren, die Dinge nach unten, du wirst es nie schaffen, es mit dem Jet, wie es ist von Natur aus anfällig, weil der Benutzer schreibenden Zugriff auf die MDB-Datei.
wenn Sie sind zufrieden mit controlling-Rechte auf die Daten in Ihrem front-end-Anwendung, die Sie bieten könnte, verschiedene front-ends (ein SCHREIBEN für Benutzer und eine für READ-only).
wenn Sie nicht mit dem ACCDB-format, können Sie mit Jet-user-level-Sicherheit. Es ist eine überraschend komplizierte Technik, wenn Sie wirklich wollen, sperren Sie den Zugang zu den Daten, die Sie haben zu Folgen Sie den Anweisungen in der Jet Security White Paper auf den Brief, oder Ihre Daten werden für jeden offen, der mit der standardmäßigen Jet-Arbeitsgruppe-Datei. Und selbst, wenn Sie fertig sind, es ist knacken (wenn auch nicht, ohne die Ausgaben $$$ zu kaufen-cracking-software). BTW, Datenbank-Passwörter, bevor Sie die Access 2007-waren völlig nutzlos und leicht zu knacken. Access 2007-erhöht die Sicherheit durch die Anhebung des Niveaus der Verschlüsselung von Daten, sondern ein Datenbank-Kennwort bewirkt, dass viele Probleme und erlaubt es Ihnen nicht, mehr als eine Ebene des Zugangs (es sei denn, Sie stellen zwei verschiedene front-ends mit unterschiedlichen Passwörtern -- vgl. #2).
wenn Sie nur wollen, um Jet verwenden, ULS, um den Zugriff in Ihren front-end, können Sie Ihre Benutzer zu Gruppen und dann überprüfen Sie die Gruppenmitgliedschaft in Ihren front-end-UI-Objekte (z.B. Formen), und geben Sie eine Schreibberechtigung für den Benutzer in der Benutzer-Gruppe, die vorsieht, dass die Ebene des Zugriffs. Der einfachste Weg, dies zu tun, vorausgesetzt, Sie haben mehr GELESEN-NUR die Nutzer, als diese mit Schreibrechte zu haben, das NUR-LESEN-Benutzer anmelden als Standard-Benutzer admin (also, tun Sie nichts für Ihre setup), und die SCHREIBEN sich Benutzer anmelden als Benutzer der Gruppe die Schreibberechtigung. In anderen Worten, wenn Sie nicht angemeldet als Benutzer "admin", Sie haben vollen SCHREIBZUGRIFF.
andere alternative ist die Verwendung von NTFS-Sicherheit-Gruppen. API-code für die auf der Zugriff Auf Web -, aber es erfordert eine Windows-administrator für Sie umsetzen. Wieder, Sie wäre eine Beschränkung des Zugangs in Ihrem front-end-Anwendung, sondern tatsächlich beschränken von Benutzerrechten im Backend-MDB.
Nur Jet ULS eigentlich können Sie verhindern, dass ein NUR-LESEN-Benutzer (wer hat noch nicht geknackt in den Arbeitsgruppen-Datei) Bearbeiten Ihre Daten. Alle Benutzer haben Zugriff auf das Netzwerk haben, um Ihre back-end-MDB, aber Sie können machen es schwer für Sie zu bekommen, um die Daten auch ohne springen durch die Reifen in der Umsetzung Jet-ULS. Hier sind einige Schritte zu tun (und ja, alle diese sind eine form von "security-by-obscurity" und wird nur verlangsamen, eine NUR-LESEN-Benutzer bestimmt, hack Ihre back-end):
Rechts klicken Sie auf jede Tabelle in der back-end und schalten Sie das Attribut "VERSTECKT". Dies kann man auch im code (siehe SetHiddenAttribute in der Hilfe). Natürlich, wenn der end-Benutzer, die Ihre Access-Optionen, um die Anzeige von versteckten Tabellen, das wird nichts. Aber die meisten Benutzer nicht wissen, über, die, und wenn Benutzer Ihre app in der Laufzeit, nicht die option.
Ändern Sie die back-end-Datenbank-Starteigenschaften zu nicht Anzeige der Datenbank-Fenster und nicht Verwendung spezieller Tasten. Finden Sie code zum festlegen der Start-Eigenschaften in der Hilfe für "AllowBypassKey".
In Ihre back-end, erstellen Sie ein makro namens "AutoExec" mit einem einzigen Befehl zu Beenden. Mit speziellen Tasten deaktiviert, es gibt keine Möglichkeit zu verhindern, dass die Ausführung dieses Makros an, und sobald der Benutzer versucht, öffnen Sie die back-end (auch wenn Sie die UMSCHALTTASTE gedrückt halten, D. H., der standard Tastendruck für die Umgehung der alle Autostart-Routinen), die Datenbank (und die Instanz von Access) zu schließen.
Nun, alle diese Dinge rückgängig gemacht werden können von jemandem, der weiß, was Sie tun. Wenn du mir ein back-end mit diese Dinge umgesetzt würde, würde ich es in etwa 5 Minuten, einfach durch ausführen von code in einer anderen Access-Datenbank zu ändern, all diese Eigenschaften von starten, um mir den Zugang.
Aber Ihre end-Benutzer wahrscheinlich nicht haben, dass know-how-level. Solche Benutzer sollten ein SCHREIBEN der Benutzer -, nicht? 🙂
Ja, natürlich-all diese Dinge sind so leicht hacken lässt, von jedem, der weiß, wie. Aber es ist auch leicht zu brechen in Ihr Haus in Sekunden für die person mit den richtigen tools. Das bedeutet nicht, dass Sie nicht sperren Sie die Türen, auch wenn es keine kugelsichere Schutz vor Einbruch.
Eine weitere überlegung ist, dass, wenn Sie dem Benutzer nur die Access-runtime anstelle von den vollen Zugriff, Sie werden nicht zunichte machen können, diese Einstellungen in Ihrem Backend-MDB.
Zuletzt:
Sicherheit ist nicht allein ein technisches Problem -- die meisten es ist in der Tat ein problem Personen. In Reihenfolge für die Menschen zu tun, Ihre Arbeit, die Sie haben, Ihnen zu Vertrauen bis zu einem gewissen Ausmaß geben Ihnen Zugriff auf Ihre Daten. Es gibt keine technische Lösung für das problem der nicht vertrauenswürdigen system-administrator, zum Beispiel, und der einzige Weg, um vollständig schützen Sie Ihre Daten, um Ihnen den Zugang zu es überhaupt.
InformationsquelleAutor David-W-Fenton
Dies ist die freche Antwort, aber wenn Sie eine bessere Sicherheit, ernsthaft in Erwägung ziehen, ein Upgrade auf eine robustere RDBMS.
Ich habe auch so gedacht, aber ich sehe oft Word-Dokumente und Tabellen in einem Netzwerk gemeinsam genutzt, und die meisten Menschen behandeln den gleichen Zugang.
leider wahr, ich musste schreiben Sie eine multi-user-access db an einem Ort, denn Sie würde nicht geben uns SQL server. es war schmerzhaft, um es gelinde zu sagen
SQL Server Express (oder MSDE aus der Vergangenheit), wäre das problem gelöst haben.
InformationsquelleAutor Christian Oudard
Ich denke, es ist möglich, die anhand einer ODBC-Verbindung zur Verwendung von Access als Schnittstelle zu fast jeder Datenbank. Zum Beispiel habe ich erfolgreich konfiguriert wurde, eine SQL Server 2008 Express Edition-Datenbank mit 2 Benutzern, einer read/write und ein read-only. Ich war in der Lage die Verbindung zu der Datenbank vor dem Zugriff durch öffnen einer ODBC-Datenquelle. So kann ein Benutzer die Office-basierten report-Generierung und E-mail-merging-Funktionalität, die Sie mit vertraut sind. Aber mit jedem Datenbank-server, den Sie möchten.
InformationsquelleAutor Liam
Diesem Gespräch kann ein wenig alt, aber für einige Gründe, ich hab das gleiche problem vor kurzem. Es wird nicht für jedermann, denn es beruht nicht auf der M$ SQL-Server auf MySQL. Verwenden Sie den MySQL-ODBC-connector (erhältlich hier: http://dev.mysql.com/downloads/connector/odbc/), und speichern Sie Ihre Tabellen auf einem MySQL-server. Der Zugriff auf die user - Rechte auf Tabellen erbt von der MySQL-user die Rechte. Ziemlich einfach anpassen...
InformationsquelleAutor Greg
Tatsache ist, es ist KEINE funktionalen Sicherheit für eine access-Datenbank.
Den link unten, vertreibt software, die den 'recover' Ihre access-Datenbank-Auch wenn es ein Passwort.
Es ist eine gute Sache, dass Sie existieren. Ihr Programm gespeichert, einer meiner Kunden Popos einmal, als Ihre vorherigen Programmierer ist gestorben und niemand anderes Passwort. Dank dieses Programms konnten wir nicht bekommen und keine Daten verloren gegangen.
http://www.stellarinfo.com/access-recovery.htm
Bevor man überhaupt daran denken, Nein, ich arbeite nicht für Sie.
Nein, es ist wirklich nicht funktionalen Sicherheit auf .mdb-Dateien. Es gibt weitere Kostenlose tools zum extrahieren des Passworts aus, als Sie einen Stock an rütteln können, weil es trivial zu schreiben. Mit der Dokumentation hier: jabakobob.net/mdb/first-page.html, ich könnte schreiben, eine nette Konsole app zu extrahieren, das Passwort in einem halben Tag in einer Vielzahl von Sprachen. Die "user security model" war robust, aber es war das äquivalent zu einem Stahl-Kern Tür rechts neben eine freischaltbare Fenster.
InformationsquelleAutor CurtTampa