Rechte unter ACCESS

Hallo Leute,
folgendes Problem stellt sich mir: ich habe unter anderen eine Rolle erstellt , die auf Tabellen einer DB nur “Select” -Rechte haben soll. Diese Rolle hat derzeit ein eingetragenes Mitglied. Unter PG ist alles bestens; wenn ich einen Connection mit diesem (nur lesenden) Benutzer herstelle, darf eben dieser auch nur lesen und nicht ändern.
Stelle ich nun einen ODBC-Connect mit diesem Benutzer her und verknüpfe eine Tabelle der DB nach MS ACCESS, darf der Benutzer (mit dem ich ja den ODBC-Connect hergestellt habe) plötzlich Daten in der Tabelle ändern sprich ein UPDATE ausführen…???

Stehen die Fragezeichen dafür, daß Du Dir nicht sicher bist, ob das so ist? Und bist Du Dir sicher, Dich als derselbe User auf dieselbe Art mit der DB zu verbinden? Du hast die pg_hba.conf verstanden?

Andreas, fragend…

OK. Ich bin mir sicher, dass es so ist. Widersinnigerweise darf der Benutzer unter ACCESS Daten manipulieren, obwohl er aufgrund seiner Gruppenzugehörigkeit eigentlich nur SELECT ausführen dürfte! ALSO:
die Rolle hat nur SELECT Rechte, trotzdem kann DER user unter ACCESS editieren. Stelle ich unter PGAdmin einen Connect auf die DB her, so ist alles bestens, der user darf/kann nur lesen.
Das ist mein Problem.
Ist es dafür erforderlich neben den Rollen-Rechten auch die pg_hba.conf zu ändern? Ich möchte eine Rolle erzeugen, die eben nur LESEN (SELECT) darf.

Sowohl in PGAdmin als auch in ACCESS liefern ein ‘select current_user’ dasselbe?

Ist es dafür erforderlich neben den Rollen-Rechten auch die pg_hba.conf zu ändern? Ich möchte eine Rolle erzeugen, die eben nur LESEN (SELECT) darf.

Nein. Aber möglicherweise bist Du nicht jedesmal als ein und derselbe User angemeldet, möglicherweise ist die Art der Authentifizierung bei lokal und via Netz unterschiedlich.

Andreas

Als aktueller Benutzer wird mir unter ACCESS nicht derselbe ausgegeben, wie unter PG. Das liegt wohl daran, das ich mich unter ACCESS immer mit einem anderen Nutzer (Superuser) anmelde. Diese komische Rechteverwaltung unter ACCESS eben.
ABER: ACCESS bezieht die Daten doch über ODBC. Die ODBC Verknüpfung zu PG (Sytemsteuerung/Verwaltung etc.) meldet sich mit eben dem eingeschränkten PG-User an, der nur SELECT-Rechte hat. Überschreibt die ACCESS Anmeldung mit dem Superuser den einfachen User in der ODBC Verknüpfung?

Also, PG zeigt als current_user was anderes an? DU BIST IN PG ALS CURRENT_USER.

ABER: ACCESS bezieht die Daten doch über ODBC. Die ODBC Verknüpfung zu PG (Sytemsteuerung/Verwaltung etc.) meldet sich mit eben dem eingeschränkten PG-User an, der nur SELECT-Rechte hat. Überschreibt die ACCESS Anmeldung mit dem Superuser den einfachen User in der ODBC Verknüpfung?

Falls PG als CURRENT_USER nicht den anzeigt, den Du vermutest, dann steckt der Fehler in Access oder dem ODBC-Dingens. Irgendwo dort, zumindest nicht auf PG-Seite.

Andreas

Ich vermute dasselbe!
Aber nochmal in aller Ausführlichkeit…
Die Datenbank liegt unter PG, als Frontend nutze ICH Pgadmin III.
Andere Nutzer (Kollegen) sollen die Datenbanktabellen nur lesen können. Die Kollegen sollen ferner in der Lage sein, die Tabellen mit Access zu lesen. Also erstelle ich eine Gruppenrolle die nur SELECT Zugriff hat. Der Gruppe ordne ich die Login Rollen der Kollegen zu.
Jetzt sollte jeder in der Lage sein eine ODBC Verknüpfung mit seiner Login Rolle zu erstellen und mit Access auf die PG-Datenbank zuzugreifen. Die Zugriffsrestriktion sollte die Gruppenrolle in PG übernehmen.
Zum Test habe ich die Login Rolle TestUser erstellt, dieser ist Mitglied der Gruppenrolle BZE (die auf Tabellen nur SELECT darf). Unter Pgadmin klappt alles bestens! TestUser darf nur lesen, nicht ändern.
Ich erstelle eine ODBC Verknüpfung zur PG Datenbank BZE_Dat unter Win XP mit dem TestUser. Die Connection klappt.
Jetzt öffne ich eine leere Access Datenbank und muss mich dazu bei Access mit meinem persönlichen User anmelden. Dieser pers. User ist auch in PG ein Superuser. Aber bis hierhin kennen sich Access und PG bzw. ODBC ja noch gar nicht.
Nun stelle ich die Verbindung von Access zu PG über die ODBC Schnittstelle her. In Access “Datei/externeDaten/Tabellen verknüpfen/odbc datenquellen”. Access greift also auf die zuvor -mit dem TestUser- eingerichtete ODBC Verknüpfung zu. An dieser Stelle kollidieren unter Umständen zwei User: der TestUser mit beschränktem SELECT-Zugriff, den die ODBC Schnittstelle sowie auch PG kennen und mein pers. Superuser, den PG und Access kennen, NICHT ABER DIE ODBC VERKNÜPFUNG. Könnte es also sein, dass mein Superuser (der ja in Access bekannt ist) den beschränkten TestUser in der ODBC Verknüpfung aushebelt/überschreibt etc.??

Eine Diskusion über das Verhalten des ACCESS-Frontends hilft Dir nicht weiter, wenn Du nicht weißt was ACCESS über den ODBC an PostgreSQL gesendet hat. Hier ist eine Möglichkeit beschrieben, wie Du das herausfinden kannst.



mfg

fristo