Zum Inhalt springen

Rollen entziehen


DeadNovum

Empfohlene Beiträge

Wunderschönen guten Morgen,

ich hätte da grad ein Problem.

Habe ca 120 Benutzer, denen ich eine Rolle entziehen muss.

mit

REVOKE ROLLE FROM USER
kann ich einem User die Rolle entziehen. Ist es möglich diese 120 User in einem Aufwisch durchzuarbeiten? Geht sowas wie:
REVOKE ROLLE FROM IN (USER1, USER2,...)

??

Danke für die Antwort.

Grüße

Link zu diesem Kommentar
Auf anderen Seiten teilen

D.h.

Ginge dann folgender Befehl:

UPDATE DBA_ROLE_PRIVS SET GRANTED_ROLE='ROLLE' WHERE GRANTEE IN ('User1','User2','User3'...) AND GRANTED_ROLE = 'aktuelle_rolle'; 

Die 2. Bedinung soll nochmal absichern.

Sind den Usern dann wirklich die neun Rollen zugewiesen?

Danke übrigends für die Hilfe.

Wieder was dazugelernt ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

nein. DBA_ROLE_PRIVS ist eine systemsicht im oracle data dictionary. diese sollten unter keinen umständen direkt geändert werden!

du solltest dir ein dynamisches SQL bauen, das einzelne REVOKE-befehle absetzt oder (falls so etwas existiert, was ich nicht in erinnerung habe) ein systempackage oder eine systemfunktion verwenden.

ich weiss aus deinem post im übrigen noch immer nicht, ob es sich um oracle (oder was anderes) handelt.

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

so oder ähnlich:

select 'REVOKE ' || granted_role || ' FROM ' || grantee || ';' from dba_role_privs

das liefert dir ein REVOKE-statement für jedes durch GRANT vergebene privileg.

ist ungetestet, in dem sinne dass ich es nicht ausgeführt habe, gegen ein system mit 5000 usern geschossen, kann das fatal sein :)

s'Amstel

Bearbeitet von Amstelchen
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi, also so hab ich es bisher gemacht,

bei 150 Usern, macht das aber keinen Spaß mehr, jedes einzelne Statement herauszukopieren, ins Tool zu klopfen und einzeln auszuführen, da ja schließlich das Kommande mit einem ";" abgeschlossen wird.

Bin recht neu in dem Umfeld und kenn die Möglichkeiten von Oracle noch nicht wirklich.

Über ein PHP Script wäre es denk ich realisierbar, aber auf dem Server läuft kein Apache.

Mit Perl bekomm ich Datenkbankverbindung nicht hin, da es wie schon gesagt eine 8.1 oder 8.2 Datenbank ist, das aktuelle Modul abe rnicht mehr auf diese alte DB zugreifen kann und das Modul mit der Version 1.17 bekomm ich auch nicht installiert....

Link zu diesem Kommentar
Auf anderen Seiten teilen

leite meine obige dynamische abfrage mittels sqlplus und dem befehl SPOOL in eine datei um und führe diese anschliessend mit @ aus.

somit benötigst du dann keine datenbanklayer oder PHP oder sonst etwas, in sqlplus ergibt sich daraus ein dreizeiler - 1. spool in ein .sql-file, 2. select wie oben, 3. ausführen des gespoolten SQL.

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

3. ausführen des gespoolten SQL.

Und danach kannst dich dann direkt mit den Recoverymöglichkeiten beschäftigen die Oracle bietet, denn wenn du dieses generierte Statement ausführst, hat keiner deiner User incl. SYS und SYSTEM mehr irgendwelche Rollen. Das dürfte nicht unbedingt zur Verbesserung des Systems beitragen.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

das argument ist ein gutes, allerdings gehe ich von mindestens ein paar von mehreren voraussetzungen aus:

- es existiert eine testumgebung.

- es existiert eine wiederherstellbare instanz.

- der user führt DDL/DML/DCL nicht blind als SYS/SYSDBA aus, sondern hat im regelfall einen selbsterstellten user / eine rolle mit dementsprechenden privilegien. REVOKE * FROM SYS ist zweifelsohne immer kritisch, da auch systemprozesse / patchscripte als SYS oder SYSTEM laufen.

- der user arbeitet nicht permanent als SYS - manche meinen sogar, SYS ist nur zum installieren von DBen da.

- der user übernimmt nicht blind alles was ich schreibe, sondern informiert sich.

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...