Erteilen Sie die Erstellungsberechtigung für ein bestimmtes Schema in Oracle 11g

7

Ich habe zwei Benutzer A und B. Ich möchte B die Berechtigung zum Erstellen, Löschen usw. aller Tabellen im Schema von A erteilen. Soweit ich sehen kann, kann ich B vollen Zugriff auf alle Schemata gewähren, die nicht spezifisch sind. Ist das richtig?

Michael-O
quelle

Antworten:

11

Sie haben Recht, dass es keine Möglichkeit gibt, einem Benutzer Berechtigungen zum Erstellen / Löschen / usw. für ein gesamtes Schema zu erteilen. Ich schlage vor, Sie prüfen die Proxy-Authentifizierung . Dies beinhaltet im Wesentlichen das Ändern von Benutzer A, um Benutzer B als A zuzulassen:

ALTER USER A GRANT CONNECT THROUGH B;

Dann verwendet die Verbindung die Authentifizierung von Benutzer B, erhält jedoch die Berechtigungen von Benutzer A.

connect B[A]/Password@Database

Diese Frage wurde durch meine spezifischere Frage hier etwas abgedeckt .


Hinweis zu Rollen: Rollen eignen sich gut, um einem anderen Benutzer Objektberechtigungen zu erteilen , da die Berechtigungen an ein bestimmtes Objekt gebunden sind. Während Rollen können gewähren Systemberechtigungen gelten sie entweder an den Benutzer eigenen Schema oder auf die gesamte Datenbank und deshalb in ein anderes Schema nicht anwenden können. Beispielsweise könnte dem Benutzer B gewährt werden, CREATE TABLEder es ihm ermöglichen würde, Tabellen in seinem eigenen Schema CREATE ANY TABLEzu erstellen, oder der es ihm ermöglichen würde, Tabellen in einem beliebigen Schema zu erstellen. Diese Berechtigungen können direkt oder über eine Rolle erteilt werden, erstere erlauben jedoch keine Erstellungsberechtigungen im A-Schema. Letzteres würde, würde aber auch das Erstellen von Berechtigungen in jedem Schema einschließlich sys ermöglichen, was ein Sicherheitsrisiko darstellen würde.

Leigh Riffel
quelle
Danke für die Antwort. Das ist natürlich schade. Grundsätzlich verstehe ich nicht, warum eine so einfache Funktion in Oracle nicht verfügbar ist.
Michael-O
2
Ich habe
Leigh Riffel
1
Ich würde es sehr bevorzugen, Benutzer von Schemas zu entkoppeln. Genau wie in MySQL.
Michael-O
Die Erlaubnis müsste vorhanden sein, damit die Entkopplung funktioniert, also wäre es vielleicht ein erster Schritt in diese Richtung.
Leigh Riffel
0

Erstellen Sie einfach eine Prozedur im Zielschema, die EXECUTE_IMMEDIATE zum Erstellen von Tabellen umfasst (suchen Sie nach anderen DDLs !!). Gewähren Sie dann das Quellschema-Privileg, um es für die Prozedur auszuführen. Dies sollte den Trick ohne Sicherheitsbedenken tun.

Blantomat
quelle
-1

Sie können einfach eine Rolle mit diesen Berechtigungen erstellen und die Rolle jedem zuweisen, der diese Fähigkeit benötigt.

Steve Swartzlander
quelle
Wie soll das funktionieren? Leigh sagte, dass ich nicht auf ein bestimmtes gesamtes Schema gewähren kann.
Michael-O
1
Eine Rolle kann nur Berechtigungen enthalten, die direkt erteilt werden können. Dem Benutzer B könnte gewährt werden CREATE TABLE, dass er Tabellen in einem eigenen Schema CREATE ANY TABLEerstellen oder Tabellen in einem beliebigen Schema erstellen kann. Diese Berechtigungen können direkt oder über eine Rolle erteilt werden, die erste ist jedoch zu eng und die zweite zu weit gefasst.
Leigh Riffel
Leigh, genau, keiner passt.
Michael-O