Oracle10g. Rechte auch andere Schemaobjekte

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.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

1 Like
  • 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