Spalten vor User verbergen

Hallo!

Ich habe ein ähnliches Problem, wie schon in einem vorigen Beitrag diskutiert wurde.
Und zwar möchte ich Usern eine Sicht auf entsprechende Spalten verbergen, d.h. es gibt die
Spalten:
Test 1, Test 2, Test3

User 1 darf alle 3 Spalten lesen,

User 2 darf nur die Spalten Test1, Test2 lesen.

Ich habe nun die neue Funtktion für die spaltenorientierte Berechtigung ausprobiert. Was ansich auch klappt wenn ich mit dem User2 select from Test1, Test2 mache.
Mein Problem ist jetzt aber, dass unsere GIS Anwendung mit dem User2 auf die Daten zu greift und ein select * from macht (was leider auch nicht anpassbar ist), und somit keine Daten mehr zurück bekommt.

Die Möglichkeit von Views habe ich auch schon in betracht gezogen, aber hier müsste ich wahrscheinlich 2 Views machen? Oder?

Hat noch jemand eine Idee, wie man sonst noch Spalten vor Usern verbergen kann?

Über Antworten wäre ich sehr dankbar.

MisterX

Wenn Du das select * from table nicht anpassen kannst, dann kannst Du da auch nicht einen VIEW abfragen, oder? Weil, Du kannst ja das SELECT nicht ändern, oder?

Falls Du das Select ändern kannst: es gibt Funktionen, die testen, ob der User bestimmte Rechte hat.

Hat noch jemand eine Idee, wie man sonst noch Spalten vor Usern verbergen kann?

Über Antworten wäre ich sehr dankbar.

MisterX

Du könntest das auch über Funktionen regeln (security definer), die das passend regeln. Aber auch hier mußt Du das select ändern.


Andreas

Hallo!
Ob das in Postgres direkt geht weiß ich nicht. Aber die Firma 52°North bietet einen WSS als Opensource an, der auch Spaltenberechtigungen verwalten kann. Damit lassen sich auch WMS/WFS-Abfragen nutzerspezifisch darstellen. Der Dienst schaltet sich als Proxy in die Verbindung und erzeugt die entsprechenden Filter WIMRE. Soviel ich weiß geht das aber nicht nur mit Geometriedaten sondern mit allen möglichen Diensten. Ich bin aber leider noch nicht zum Testen gekommen, aber es steht ganz oben auf der Liste sobald unser neuer Server hier aufschlägt :slight_smile: .
Könnte aber auch absoluter Overkill sein :wink:

Grüssle Uwe

Also sprich: es gibt Programme, die aus SELECT * dann die benötigten Spalten filtern - und das wahrscheinlich nur, um den Entwicklern die Arbeit zu äh vereinfachen? :wink:

Doch eine View kann ich von unserem GIS raus ansprechen. Hier wird ja das Select auf DB Ebene definiert, und es kommen alle Spalten mit die in der View enthalten sind. Nur so müsste ich dann quasi 2 Views vorhalten, die einmal alle Daten enthält und einmal nur die Daten, die der entsprechende User sehen darf. Das Problem hieraus ist aber, dass ich mich irgendwo für eine von denen 2 Views entscheiden muss, und dass bevor der User die Daten in das GIS reinladen kann.

Da ich eigentlich direkt auf die Datenbank zugreifen muss, kommt ein Programm zwischen DB und GIS auch nicht wirklich in Frage.

Gibt es wirklich keine Möglichkeit, dies auf auf der DB zu händeln?

Also generell wäre ich ja dafür, die Ursache des Problems zu beseitigen und nicht schlechte Workarounds noch oben drauf zu werfen.
Allein für ein SELECT * gehört da jemand bestraft.

Aber wenn du die Applikation nicht anpassen kannst, wirst du wohl um Views nicht drumherum kommen.

Hier ein Link:
52N Security Community Site - 52n WSS Web Application

Scheint sich aber nur auf Webservices zu beziehen, aber eventuell kann der OP die Daten ja als Featureservice bereitstellen, dann wäre das eine Möglichkeit das zu realisieren (Da gibt es übrigens auch kein ‘Select * …’ :wink: )
Ob allerdings die Wartung und Installation einer zusätzlichen Ebene sinnvoll ist, muß schon geprüft werden.

Gruß Uwe