Antworten:
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 TABLE
der es ihm ermöglichen würde, Tabellen in seinem eigenen Schema CREATE ANY TABLE
zu 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.
Sie können einfach eine Rolle mit diesen Berechtigungen erstellen und die Rolle jedem zuweisen, der diese Fähigkeit benötigt.
CREATE TABLE
, dass er Tabellen in einem eigenen Schema CREATE ANY TABLE
erstellen 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.