none
Kann man den DAO-Zugriff über eine andere Anwendung (EXCEL) auf eine ACCESS-2010-DB verhindern?

    Frage

  • Hallo Community,

    Ich möchte eine Access2003-DB mit SQL-Server-Backend auf Access2010 migrieren.

    Die Tabellen sind in Access eingebunden. Der SQL-Server prüft nur den Anmeldenamen, die Berechtigungen auf Formulare, etc. werden nur in der Anwendung geprüft. 

    Es soll verhindert werden, dass ein berechtigter user alle Daten in den Tabellen sehen kann.

    In Access 2010 ist aber anscheinend der Zugriff von außen auf die eingebunden Tabellen, z.B. aus EXCEL über CreateObject, GetObject oder DAO möglich.

    Dazu habe ich folgendes gefunden:

    CreateObject kann man mit user.control verhindern

    Den DAO-Zugriff über ein Datenbankpasswort zu verhindern, hat von EXCEL aus nicht funktioniert, nur von Access.

    Mit GetObject kann man zumindest auf das gerade geöffnete Formular zugreifen.

    Kann man verhindern, dass ein user dadurch auf die Tabellen zugreifen, Daten ändern, den Connection-String auslesen,...kann??

    ACCDE und Runtime haben bei meinen Versuchen leider nicht weitergeholfen.

    Danke für jeden Hinweis.

    Freitag, 14. August 2015 13:02

Alle Antworten

  • Am 14.08.2015 schrieb Marion04:

    Es soll verhindert werden, dass ein berechtigter user alle Daten in den Tabellen sehen kann.

    Dann kannst Du IMHO nur die Anwendung tableless erstellen und die
    Daten über Stored Procedures in die Anwendung holen. Auf der AEK17 hat
    Bernd Jungbluth einen Vortrag dazu gehalten, hier kannst Du die
    Beispiel Daten und Scripte downloaden:
    http://www.donkarl.com/Downloads/AEK/AEK17_LogikSQLServer.zip


    Servus
    Winfried

    Gruppenrichtlinien
    HowTos zum WSUS Package Publisher
    WSUS Package Publisher
    HowTos zum Local Update Publisher
    NNTP-Bridge für MS-Foren

    Freitag, 14. August 2015 13:10
  • Vielen Dank für die schnelle Antwort!

    Tableless wäre sicherlich das Beste, befürchte aber, dass das mit zuviel Aufwand verbunden ist, da noch viele Abfragen in Access liegen. :-(

    Kann man das ganze wenigstens etwas sicherer machen? Könnte vielleicht ein LoGon-Trigger irgendwie weiterhelfen?

    Besteht das Problem, dass der externe Zugriff über DAO/GetObject möglich ist, eigentlich erst seit Office 2007?

    Sonntag, 16. August 2015 11:28
  • Am 16.08.2015 schrieb Marion04:

    Tableless wäre sicherlich das Beste, befürchte aber, dass das mit zuviel Aufwand verbunden ist, da noch viele Abfragen in Access liegen. :-(

    Natürlich ist das ein nicht unerheblicher Aufwand, aber ist Sicherheit
    nicht immer mit Aufwand verbunden?

    Kann man das ganze wenigstens etwas sicherer machen? Könnte vielleicht ein LoGon-Trigger irgendwie weiterhelfen?

    Das weiß ich nicht.

    Du könntest allerdings das Pferd von hinten aufzäumen. Alle Abfragen
    nur noch in SPs auf dem SQL ablegen, den Benutzern brauchst Du nur das
    Ausführen der SPs ermöglichen/zulassen. Dadurch brauchen sie keinen
    direkten Zugriff auf die Tabellen. Sie müssen auch nicht Datareader
    oder Datawriter sein. Damit können sie IMHO nicht auf die Tabellen
    zugreifen.

    Eine weitere Möglichkeit wäre, die Kommunikation zwischen Client und
    Server/Instanz zwangsmässig zu verschlüsseln. Das mußt Du dann im
    Connetionstring in Access angeben. Wenn es der Anwender nicht weiß,
    kann er IMHO nicht mehr über Excel zugreifen, solange er das mit der
    Verschlüsselung nicht weiß.

    Besteht das Problem, dass der externe Zugriff über DAO/GetObject möglich ist, eigentlich erst seit Office 2007?

    Weiß ich nicht, kann ich mir aber nicht vorstellen.


    Servus
    Winfried

    Gruppenrichtlinien
    HowTos zum WSUS Package Publisher
    WSUS Package Publisher
    HowTos zum Local Update Publisher
    NNTP-Bridge für MS-Foren

    Sonntag, 16. August 2015 12:26
  • Hallo!

    Man konnte schon immer auf die Access-Elemente von außen zugreifen. Es gab zwar eine Möglichkeit den Zugriff über eine mdw für "Unwissende" einzuschränken, der war aber einfach zu umgehen.

    Verwendest du einen Connectionstring mit SQL-User und Kennwort?
    => diese Daten nicht in der verknüpften Tabelle abspeichern, sondern stelle die Zugangskennung erst beim Laden der Access-Anwendung ein, indem du beim Start der Anwendung z. B. eine temporäre PT-Abfrage mit dem identischen Connectionstring aber inkl. Benutzerdaten öffnest. Dann darf der Connectionstring gerne ausgelesen werden, der hilft dann allerdings nicht, um sich damit die Daten zu holen, da das Kennwort fehlt.

    Falls du den Zugriff über Windows-Authentifizierung regelst, müsstest du im Server dafür sorgen, dass der User nur die Daten sieht, die er sehen kann. => Tabellen vor Zugriff sperren und die erlaubten Daten z. B. über Sichten bereitstellen.

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch

    Freitag, 21. August 2015 05:53