Hallo,
ich soll einen User anlegen der Insert, update, Delete-Rechte auf alle Tabellen eines anderen Schemas hat - im Grunde eine Kopie des Schemas, nur ohne das Recht Objekte zu Löschen oder strukturell zu ändern.
Das einzige was mir dazu einfallen würde, wäre ein "select ’ grant select, insert, update, delete on ‚|| table_name(view_name) || ’ to trav_ro;‘… " zu spoolen und dann laufen zu lassen bzw. halt ein „grant execute“ und danach dann einen Sack voll Synonyme anzulegen
Gibt es eine andere Lösung ?
Grüße
Chris
Hallo Chris
Wir haben uns für folgendes Modell entschieden :
-
User A ist der Owner der Objekte im Schema A (Entwickler)
-
User B (Der Proxy-User, welcher Produktiv läuft) besitzt eine Rolle der alle notwendigen Rollen/ Priv’s zugewiesen sind ( Create Session, Connect etc)
-
User B bekommt EXECUTE auf notwendige Packages in A
-
Beim Einloggen B wird ein SQL ALTER SESSION SET CURRENT_SCHEMA=A abgesetzt (macht bei uns der BEA Weblogic)
-
So brauchst du keine Synonyme zu verwalten
-
ALLE Zugriffe auf Tabellen/Views sind IMMER in Packages gekapselt, so dass wir keine Grants auf Tabellen/ Views etc verwenden
Gruss
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Chris
Wir haben uns für folgendes Modell entschieden :
-
User A ist der Owner der Objekte im Schema A (Entwickler)
-
User B (Der Proxy-User, welcher Produktiv läuft) besitzt
eine Rolle der alle notwendigen Rollen/ Priv’s zugewiesen
sind ( Create Session, Connect etc)
-
User B bekommt EXECUTE auf notwendige Packages in A
-
Beim Einloggen B wird ein SQL ALTER SESSION SET
CURRENT_SCHEMA=A abgesetzt (macht bei uns der BEA Weblogic)
-
So brauchst du keine Synonyme zu verwalten
-
ALLE Zugriffe auf Tabellen/Views sind IMMER in Packages
gekapselt, so dass wir keine Grants auf Tabellen/ Views etc
verwenden
Gruss
Hallo Ulrich,
bei uns wird per OLE-DB Provider direkt mit der Applikation auf die Tabellen zugegriffen, da scheidet das Verfahren leider aus.
Ansonsten eine nette Geschichte, danke für die Erleuchtung !
Grüße
Chris
- Sollte aber trotzden Funktionieren. Du musst einfach einen
SESSION Trigger beim LOGON setzten, wecher diese ALTER SESSION
Geschichte absetzt. Anschliessend einfach per Proxy-User
einloggen. Wenn du direkte Tabellenzugriffe hast, sowirst du
dies dem Proxy User Granten müssen, aber ansonsten ist es
dasselbe.
Stimmt, ein Trigger ist eine Idee, vielen Dank !
Grüße
Chris