2017-02-17 13 views
3

In Oracle DB 11g habe ich mit SQL Developer einen Benutzer mit einem zugeordneten Schema erstellt, das nur über Leseberechtigungen verfügt. Jetzt möchte ich diesen neuen Benutzer davon abhalten, die anderen Benutzer/Schemas zu sehen, mit Ausnahme einiger ausgewählter Benutzer. Wenn sie (in SQL Developer) unter ihrem eigenen Schema in den Ordner "Andere Benutzer" wechseln, möchte ich nicht, dass dieser Benutzer ALLE anderen Benutzer sehen kann, die sich in dieser Datenbank befinden. Ich will nur, dass sie ein paar Auserwählte sehen.Oracle SQL Developer - Beschränken des Benutzers auf nur bestimmte Schemas

Wie machst du das wenn möglich?

Btw ... Ich weiß, dass ich sie beschränken kann, etwas mit diesen anderen Benutzern (z. B. Tabellen erstellen, Abfragen ausführen, usw.) zu können. Ich möchte sie jedoch davon abhalten, selbst zu sehen oder zu sehen, dass diese anderen Benutzer da sind.

Antwort

2

Im Wesentlichen können Sie in SQL Developer nur tun, was Sie sonst in der Datenbank tun können.

Wie Alex gesagt hat, verwendet SQL Developer einen SELECT von SYS.ALL_USERS, um alle Benutzer im System zu sehen. Dies ist kein Problem mit SQL Developer. Ihr Benutzer könnte, wenn er Zugriff auf SQL * Plus hätte, select username from sys.all_users direkt für die Datenbank ausführen und die gleichen Informationen erhalten.

Das Entfernen dieser Informationen von Ihrem Benutzer folgt demselben Pfad. Man kann nur SELECT aus Tabellen auswählen, denen das SELECT-Privileg erteilt wurde. Die Auswahl aus Katalogtabellen und -sichten (und speziell aus ALL_USERS im SYS-Schema) ist normalerweise eine indirekte Berechtigung: Die PUBLIC-Rolle hat das Recht SELECT aus diesen Tabellen und in den meisten Fällen (vielleicht standardmäßig - abhängig von Ihrem Admin-Tool) neu Benutzer erhalten die Rolle PUBLIC.

Je nach Ihren geschäftlichen Anforderungen können Sie die PUBLIC-Rolle entweder von ausgewählten Benutzern REVOKEN (und dann Bündel von Berechtigungen erstellen, die sie ersetzen möchten, oder die - drastisch und vielleicht auch nicht) etwas, was Sie tun sollten - Sie können einfach revoke select on all_users from public; (während mit SYSDBA-Berechtigung angemeldet, oder ein anderes Privileg, das ausreicht, um diese Operation auszuführen).

Bearbeiten - Ich habe gerade überprüft, und leider kann man die PUBLIC-Rolle nicht widerrufen; Es wird automatisch allen Benutzern in der Datenbank gewährt, die nicht geändert werden können. Dies lässt nur die weniger wünschenswerte Alternative übrig, sich mit den Privilegien, die PUBLIC selbst besitzt, zu messen. Ende bearbeiten

ich das gerade getestet - ich in as sysdba angemeldet, widerrufen wählen Sie auf SYS.ALL_USERS von PUBLIC, fahren Sie dann SQL Developer und neu gestartet es. Sicher genug, ich bin nicht mehr in der Lage, "andere Benutzer" von den benutzerdefinierten Benutzern zu sehen, die ich in meiner Datenbank erstellt habe (dh von SQL Developer-Verbindungen, die ich für diese Benutzer erstellt habe).

+0

Ausgezeichnet. Danke für Ihre Hilfe. – ptownbro

+0

@ptownbro - bitte beachten Sie meine ** Bearbeiten ** - leider kann PUBLIC nicht von Benutzern entfernt werden; Die einzige Lösung ist das Widerrufen von SELECT für SYS.ALL_USERS von PUBLIC, was sich auf andere Benutzer (und höchstwahrscheinlich auf Prozesse und Anwendungen, die möglicherweise auf diese Tabelle zugreifen müssen) auswirken könnte. – mathguy

2

Sie können nicht, im Wesentlichen. Wenn Sie auf Anweisungsprotokoll in SQL Developer aussehen, wie Sie die ‚andere Benutzer‘ Abschnitt im Panel-Verbindungen erweitern, werden Sie den Befehl sehen es mit ist:

select * from (select USERNAME 
FROM SYS.ALL_USERS au 
WHERE au.USERNAME != USER 
); 

Eine ganz neue Benutzer, die nur erteilt wurde Verbindungsberechtigungen können alle Benutzer anzeigen, die in dieser Systemansicht aufgeführt sind.

Da diese Abfrage den Objektnamen all_users mit dem Schema sys qualifiziert, können Sie nicht einmal eine Ansicht oder ein privates Synonym für Ihren Benutzer erstellen, das eine eingeschränkte Liste enthält. Natürlich könnte der Benutzer das umgehen, wenn er es trotzdem möchte.

Mit SQL Developer können Sie Dinge im Verbindungsbereich filtern. Wenn Sie auf "anderer Nutzer der rechten Maustaste und wählen Sie‚Filter anwenden ...‘ein Dialogfeld angezeigt werden wie:

apply filter dialog

Sie könnten das mit‚entsprechen jeder‘und alle Schemata einrichten Sie möchten sichtbar sein, indem Sie auf das grüne Pluszeichen klicken, um weitere hinzuzufügen. Nur diese Benutzer würden dann unter "andere Benutzer" angezeigt. Wenn Sie die Anweisung Protokoll zeigt diese geänderte Abfrage 'anderer Nutzer erweitern statt:

select * from (select USERNAME 
FROM SYS.ALL_USERS au 
WHERE au.USERNAME != USER 
) WHERE (UPPER(USERNAME) = (UPPER(:SCHEMA)) OR UPPER(USERNAME) = (UPPER(:SCHEMA0))) 

... und es zeigt sich die Bindeparameter "SCHEMA"="SOUSER1", "SCHEMA0"="SOUSER2" sind

Aber man kann das nicht zentral steuern, würden Sie haben um es auf jeder Kopie von SQL Developer einzurichten (wahrscheinlich manuell, obwohl Sie eine Konfigurationsdatei bereitstellen könnten), und die Benutzer können den Filter einfach entfernen oder ändern. Es wirkt sich eher auf den Kunden als auf den Benutzer aus und kann wiederum leicht umgangen werden.

+0

Grrr. OK. Also selbst wenn ich den Filter an meinem Ende anwende, wird es nicht an ihrem Ende angezeigt? Meinst du damit, dass es nicht zentral gesteuert werden kann? – ptownbro

+0

Ja, das Ändern der Filter oder Einstellungen auf Ihrem Client (d. H. SQL Developer auf Ihrem PC) hat keine Auswirkungen auf andere Benutzer. Wenn Sie die richtige Konfigurationsdatei und das Bit finden, das sich auf Filter bezieht, könnten Sie vielleicht einen Weg finden, es zu verteilen, aber nicht leicht. (Oracle hat VPD ... aber ich bin mir nicht sicher, ob kann (oder sollte) auf Systemansichten angewendet werden, könnte etwas sein, um sicherzustellen, dass ...) –

+0

Wenn Sie interessiert sind - das ist ein Datenbankproblem , kein SQL Developer Problem. Ich erkläre das weiter in einer Antwort, die ich gerade gepostet habe. – mathguy

Verwandte Themen