Sinnvolle Mindestrechte für neuen Benutzer

Amibobo

Neuer Benutzer
Beiträge
2
Hallo Forum,

ich habe OracleXE installiert um erste Erfahrungen zu sammeln. Dafür wollte ich mit zwei Benutzern arbeiten, einem Standardbenutzer (ohne Adminrechte) und einem Read-only-Benutzer.

Die 1.Frage ist nur, welche Rechte benötigen diese Benutzer mindestens?

Die 2.Frage ist, welche Rechte benötigt der Standardbenutzer um auch Tabellen / Views / Jobs / Index anlegen / ändern / löschen zu können


Folgende Rechte hätte ich ins Auge gefasst (angelesenes gefährliches Halb-Wissen):
Für den Benutzer XEstandard
- connect
- create session
- create any index
- alter any index
- drop any index
- create any job
- create any materialized View
- alter any materialized View
- drop any materialized View
- create any procedure
- alter any procedure
- drop any procedure
- execute any procedure
- create any table
- alter any table
- backup any table
- delete any table
- drop any table
- select any table
- update any table
- create any trigger
- alter any trigger
- drop any trigger
- create any view
- drop any view


Für den Benutzer XEreadonly
- connect
- create session


Angelegt habe ich die Benutzer mit:
create user XEstandard identified by passwort1
default tablespace users
temporary tablespace temp
quota unlimited on users
account unlock
;

create user XEreadonly identified by passwort2
default tablespace users
temporary tablespace temp
quota unlimited on users
account unlock
;

Beste Grüße
 
Werbung:
connect ist überflüssig wenn Du CREATE SESSION vergibst.

Einem normalen Benutzer würde ich niemals Rechte geben die "ANY" enthalten. Das ist eine ganz schlechte Idee - damit dürfte der Benutzer beliebige Tabellen DROPen (auch solche die ihm gar nicht gehören) bzw. in beliebigen Schemata welche anlegen.

Der read only Benutzer benötigt noch SELECT Rechte auf die Tabellen die er lesen darf.
 
connect ist überflüssig wenn Du CREATE SESSION vergibst.
Wofür ist dann das "connect"-Recht nötig?


Einem normalen Benutzer würde ich niemals Rechte geben die "ANY" enthalten. Das ist eine ganz schlechte Idee - damit dürfte der Benutzer beliebige Tabellen DROPen (auch solche die ihm gar nicht gehören) bzw. in beliebigen Schemata welche anlegen.

Wie lauten dann die richtigen Rechte?
Im Selbststudium hatte ich versucht mir das Wissen anzulesen, aber auf der Webseite
GRANT
finde ich z.B. für Indexe nur "any"-Rechte. Die Liste ist wohl unvollständig?


Der read only Benutzer benötigt noch SELECT Rechte auf die Tabellen die er lesen darf.

Wie steuert man, welche Tabellen / Views der Benutzer sehen kann?
In der oben genannten Webseite von Oracle gibt es nur das Recht "SELECT ANY TABLE".
 
Werbung:
Wofür ist dann das "connect"-Recht nötig?

CONNECT ist gar kein "Recht" sondern eine Rolle die mehrere Rechte bündelt (darunter auch CREATE SESSION).

Früher (< Oracle 10) war das der einzige Weg. Seit Oracle 10 sollte man die Rolle nicht mehr verwenden.

Wie lauten dann die richtigen Rechte?
Im Prinzip genau die, die Du schon verwendest, nur nimm das ANY überall weg. Also statt "CREATE ANY TABLE", nur "CREATE TABLE".

Alle DROP ANY ... Privilegien solltest Du komplett entfernen, die sind überhaupt nicht notwendig. Die Tabellen/Objekte die ein Benutzer selber anlegt, darf dieser Benutzer immer DROPen. Das Gleiche gilt für ALTER.

Also brauchst Du letztendlich nur diese Rechte:
  • create session
  • create index
  • create materialized View
  • create procedure
  • create table
  • create trigger
  • create view
Wie steuert man, welche Tabellen / Views der Benutzer sehen kann?
Indem der "Owner" (=Ersteller) der Tabelle das entsprechende SELECT Privileg an den Benutzer vergibt der Zugriff erhalten soll:

z.B. als Benutzer "arthur":
Code:
grant select on some_table to marvin;

Dann kann "marvin" die Tabelle mit
Code:
select * from arthur.some_table;
abfragen.
 
Zurück
Oben