Benutzerverwaltung
Durch Installation angelegte Benutzer
Wenn eine Oracle-Datenbank installiert wird, dann werden die folgenden Benutzer eingerichtet:
User-ID | durch die Installation vergebenes Passwort | Verwendung |
SYS | CHANGE_ON_INSTALL | Systemstart und Betrieb |
SYSTEM | MANAGER | Administration |
Der User SYS hat die DBA-Rolle und das SYSDBA-Recht. Er kann sich an der Datenbank-Instanz anmelden, wenn diese noch nicht hochgefahren ist. SYS darf den STARTUP-Befehl ausführen. SYS kann nicht nur die Datenbank administrieren, sondern darf auch alle Tabelleninhalte der anderen Benutzer anzeigen lassen. Der User SYS kann selber Tabellen erstellen. Diese Möglichkeit sollte nur dafür genutzt werden, um Tabellen zu erstellen, die vom System oder für die Systemverwaltung genutzt werden. Benutzer die dieses Privileg erlangen wollen müssen in der Betriebssystemgruppe dba
sein und müssen sich mit dem Kommandozeilenzusatz as sysdba
anmelden. Aus Sicherheitsgründen sollte dieses Konto geLOCKED
sein, damit keine Loginmöglichkeit mehr über den Listener
, trotz bekanntem Passwort, besteht. Ein lokaler Login ist weiterhin möglich.
Der User SYSTEM hat ebenfalls die DBA-Rolle und das SYSDBA-Recht. Er kann jedoch - im Vergleich zum SYS - nicht die Tabellen der anderen Benutzer anzeigen. Auch das SYSTEM Konto sollte aus Sicherheitsgründen geLOCKED
sein, damit keine Loginmöglichkeit mehr über den Listener, trotz bekanntem Passwort, besteht. Ein lokaler Login ist weiterhin möglich.
Die oben angegebenen Passwörter werden bei einer Installation bis zur Version 9 automatisch vergeben. Ab der Version 10g muss man die Initial-Passwörter während der Installation selber bestimmen.
Weiter User-ID's, die bei der Installation zusätzlicher Komponenten erstellt werden:
User-ID | durch die Installation vergebenes Passwort | Verwendung |
SCOTT | TIGER | Bis zur Version 8 wurde der User SCOTT immer als Beispiel-User mitinstalliert.
Seit der Version 9 (?) wird er nur noch dann erstellt, wenn die Beispiel-Datenbank SAMPLE installiert wird. Handelt es sich bei der Instanz nicht um eine Test- Beispieldatenbank sollte der User, inklusiv aller Objekte, gelöscht werden. Dies gilt erst recht für Produktivdatenbanken. |
SYSMAN | CHANGE_ON_INSTALL | für die Administration der Datenbank aus dem Oracle Enterprise Manager |
DBSNMP | DBSNMP | für Zugriffe aus dem Oracle Enterprise Manager |
CTXSYS | CTXSYS | für die Administration der Text-Extender-Funktionen |
DIP | DIP | Administration der Directory Integration Platform (DIP), die Änderungen im OID (Oracle Internet Directory) mit Applikationen in der Datenbank synchronisieren kann |
DMSYS | DMSYS | für die Administration der data mining-Funktionen |
EXFSYS | EXFSYS | für die Administration der Expression-Filter-Indizierungs-Funktionen |
MDDATA | MDDATA | für die Administration der Oracle Spatial- und Geodaten-Funktionen |
MDSYS | MDSYS | für die Administration der Oracle Spatial- und interMedia-Locator-Funktionen |
MGMT_VIEW | wird generiert | wird für die Kontrolle durch den Oracle Enterprise Manager benutzt |
OLAPSYS | MANAGER | für die Administration der OLAP metadata-Strukturen |
ORDPLUGINS | ORDPLUGINS | der Oracle interMedia User |
ORDSYS | ORDSYS | der Oracle interMedia Administrator Account |
OUTLN | OUTLN | für die Administration der Tuning-Statistiken |
SI_INFORMTN_SCHEMA | SI_INFORMTN_SCHEMA | für die Administration der Oracle interMedia-Funktionen |
Einen neuen Benutzer anlegen
Dem Benutzer muss ein Default-Tablespace zugewiesen werden. Falls dieser noch nicht existiert, oder falls der User einen eigenen Default-Tablespace erhalten soll, dann muss dieser zuvor eingerichtet werden.
create tablespace sjm DATAFILE 'c:\oracle\oradata\oracle\sjm.dbf' size 5M reuse DEFAULT STORAGE (INITIAL 10K NEXT 50K MINEXTENTS 1 MAXEXTENTS 999) ONLINE;
create user jm -- Die User-ID lautet: jm identified by geheim -- Passwort default tablespace sjm temporary tablespace temp profile default account unlock -- Der Account soll nicht gesperrt sein quota 1M on sjm -- Der User darf 1MB Platz verbrauchen ;
Die Minimalangaben zum Einrichten eines neuen Users sind der Name des Users und sein Passwort.
Einige Berechtigungen für den User jm vergeben:
grant connect to jm; -- Connect-Berechtigung (erst dann ist ein Connect möglich) grant create procedure to jm; -- Prozeduren erstellen grant create trigger to jm; -- Trigger erstellen grant create sequence to jm; -- Sequence erstellen grant create public synonym to jm; -- Synonyme erstellen grant drop public synonym to jm; -- Synonyme löschen grant execute on sys.sp1 to jm; -- Prozedur sys.sp1 ausführen grant select on pr_tab to jm; -- Lesezugriffe auf Tabelle pr_tab grant create tablespace to jm; -- Tablespace erstellen
Anmeldung als der neu erstellte User jm:
connect jm/geheim;
Bei der externen Autorisierung übernimmt das Betriebssystem die Passwortprüfung für die Autentifizierung. In diesem Fall wird innerhalb der Oracle-Datenbank kein Passwort für einen Benutzer gespeichert bzw. überprüft. Der Benutzer muss lediglich der Oracle-Datenbank bekannt gemacht werden.
create user jmex identified externally default tablespace sjm temporary tablespace sjm profile default account unlock quota 1M on sjm ;
Passwort ändern:
alter user jm identified by tiger;
Das Passwort des eigenen Users kann man immer ändern. Das Passwort eines anderen Users kann nur der Administrator ändern.
Einen bestehenden Benutzer löschen
Sollten für den Benutzer bereits abhängige Daten existieren, muss die 'cascade' Option angegeben werden um alle Abhängigkeiten mitzulöschen.
drop user username cascade;
Systemprivilegien
Systemprivilegien sind Rechte zur Administration der Datenbank. Sie sind unabhängig von bestimmten Objekten (z.B. Tabellen, Spalten, Indices)
Welche Systemprivilegien hat ein User erhalten?
select * from user_sys_privs; select * from dba_sys_privs; select * from session_privs;
Objektprivilegien
Objektprivilegien sind Berechtigungen zur Administration bestimmter Datenbank-Objekte. Bei der Vergabe dieser Berechtigungen muss immer das betreffende Objekt genannt werden, auf das sich das Recht bezieht.
Welche Objektprivilegien hat ein User erhalten?
select * from all_tab_privs; select * from user_tab_privs; select * from dba_tab_privs;
Durch die Quota wird festgelegt, wie viel Platz ein Benutzer in Anspruch nehmen darf für die Tabellen, die er erstellt und mit Daten füllt. Die Quota kann ein Administrator ändern:
alter user jm quota 15M on stest;
Welche Spaltenprivilegien wurden vergeben?
select * from all_col_privs; select * from user_col_privs; select * from dba_col_privs;
Welche Objektprivilegien hat er weitergegeben?
select * from all_tab_privs_made; select * from user_tab_privs_made;
Welche Objektprivilegien hat er von anderen Usern erhalten?
select * from all_tab_privs_recd; select * from user_tab_privs_recd;
Welche Spaltenprivilegien hat er erhalten?
select * from all_col_privs_recd; select * from user_col_privs_recd;
Welche Spaltenprivilegien hat er weitergegeben?
select * from all_col_privs_made; select * from user_col_privs_made;
Welche Quotas hat er erhalten?
select * from user_ts_quotas; select * from all_ts_quotas; select * from dba_ts_quotas;
Profil
Jeder User hat ein Profil, in dem verschiedene Ressource- und Passwort-Parameter festgelegt sind. Über die Ressource-Parameter kann ein Benutzer eingeschränkt werden in der Benutzung der Systemressourcen ( z.B. maximal zulässige Anzahl Sessions, CPU-Nutzung) Die Passwort-Parameter legen z.B. fest, wie lange ein Passwort verwendet werden darf und die zulässige Anzahl der Fehleingaben. Welches Profil ein User hat, ist in DBA_USERS eingetragen.
select profile from dba_users where username = 'JM';
Welche Profile gibt es und welche Einstellungen sind z.B. in dem Profil 'DEFAULT' festgelegt?
select * from dba_profiles where profile = 'DEFAULT'
Der Systemadministrator kann auch weitere Profile anlegen. Beispiel:
create profile pr_develop limit password_reuse_max 10 password_reuse_time 30 sessions_per_user unlimited cpu_per_session unlimited cpu_per_call 3000 connect_time 45 ;
Rolle
Meistens gibt es in einem Unternehmen verschiedene Gruppen von Mitarbeiter, die bestimmte Berechtigungen haben. Beispiel: Softwareentwickler, Administratoren, Anwender. Jeder Oracle-User braucht eine Vielzahl von Berechtigungen, die davon abhängig ist, in welcher Gruppe er tätig ist. Damit nun diese vielen Einzel-Berechtigungen nicht bei jeder personellen Veränderung einzeln zugewiesen oder entzogen werden müssen, gibt es in Oracle das Rollen-Konzept.
Eine Rolle wird eingerichtet und die dafür vorgesehenen Berechtigungen werden dieser Rolle gegeben.
create role anwend_a; grant select on a01.umsatz to anwend_a; grant select, delete on a01.log to anwend_a; grant execute on prog035 to anwend_a;
Dann wird diese Rolle an die einzelnen User vergeben.
grant anwend_a to jm;
Jedem User kann eine Default-Rolle zugewiesen werden. Beispiel:
alter user jm default role r_default;
Wenn ein User mehrere Rollen erhalten hat, dann kann er diese aktivieren und deaktivieren durch den Befehl SET:
set role r01, r02, r03; -- Nur diese Rollen werden aktiviert set role all; -- Alle Rollen werden aktiviert set role none; -- Alle Rollen werden deaktiviert
Welche Rollen sind in der aktuellen Session gerade aktiv?
select * from session_roles;
Welche Rollen gibt es?
select * from dba_roles;
Welche System- und Objektprivilegien wurden einer Rolle gegeben? Wurden einer Rolle noch weitere Rollen zugewiesen?
select * from role_sys_privs; select * from role_tab_privs; select * from role_role_privs;
Welche Rollen hat der User JM erhalten?
select * from dba_role_privs where grantee = 'JM';
Was machen die einzelnen User gerade?
select EXECUTIONS, USERS_EXECUTING, username, sql_text from v$session se , v$sql sq where se.sql_address = sq.address;
In der Katalog-View v$session sind alle gerade aktiven Sessions verzeichnet. In der View v$sql sind die zuletzt ausgeführten SQL-Statements eingetragen. Bei einer Verknüpfung dieser beiden Views kann man sich ausgeben lassen, welche SQL-Statements die einzelnen Benutzer ausgeführt haben und wie oft diese Statements ausgeführt wurden.
Übersicht über das User-Profil
select * from user_users; select * from all_users; select * from dba_users;
No Comments