19 ................................. Rollen verwalten Lektion 19: Rollen verwalten ..................................................................................................................................................... Ziele Ziele Nach dieser Lektion sollten Sie Folgendes können: • • • • • 19-2 Rollen anlegen und ändern Verfügbarkeit von Rollen steuern Rollen löschen Vordefinierte Rollen verwenden Rollen-Informationen aus dem Data Dictionary ausgeben Copyright Oracle Corporation, 1999. All rights reserved. ..................................................................................................................................................... 19-2 Oracle8i Datenbankadministration Teil I Überblick ..................................................................................................................................................... Überblick Rollen Benutzer A Rollen C B HR_MGR HR_CLERK Privilegien SELECT ON EMP CREATE TABLE 19-3 INSERT ON EMP CREATE SESSION UPDATE ON EMP Copyright Oracle Corporation, 1999. All rights reserved. Was ist eine Rolle? Oracle bietet mit Rollen eine einfache und sichere Privilegienverwaltung. Rollen sind benannte Gruppen von zusammengehörenden Privilegien, die an andere Benutzer oder andere Rollen vergeben werden können. Sie vereinfachen die Verwaltung von Privilegien in der Datenbank. Eigenschaften von Rollen • werden mit denselben Befehlen wie System-Privilegien an Benutzer vergeben und Benutzern entzogen • können an Benutzer oder andere Rollen vergeben werden, außer sich selbst (auch nicht indirekt) • können aus System- und Objekt-Privilegien bestehen • können für jeden Benutzer, der die Rolle zugewiesen hat, aktiviert oder deaktiviert werden • können Passwörter zum Aktivieren benötigen • der Name einer Rolle muss innerhalb der bestehenden Benutzernamen und Rollennamen eindeutig sein • haben keinen Eigentümer; gehören in kein Schema • Rollen-Beschreibungen werden im Data Dictionary gespeichert ..................................................................................................................................................... Oracle8i Datenbankadministration Teil I 19-3 Lektion 19: Rollen verwalten ..................................................................................................................................................... Vorteile von Rollen • • • • • • 19-4 Vereinfachte Vergabe von Privilegien Dynamische Privilegienverwaltung Selektive Verfügbarkeit von Privilegien Vergabe durch das Betriebssystem Kein kaskadierendes Entziehen von Privilegien Verbesserte Performance Copyright Oracle Corporation, 1999. All rights reserved. Vergabe von Privilegien vereinfachen Verwenden Sie Rollen, um die Privilegienverwaltung zu vereinfachen. Sie müssen nicht immer wieder dieselben Privilegien an mehrere Benutzer vergeben, sondern vergeben die Privilegien an eine Rolle und vergeben dann die Rolle an die Benutzer. Dynamische Privilegienverwaltung Wenn die zu einer Rolle gehörenden Privilegien geändert werden, erhalten alle Benutzer, denen die Rolle zugewiesen wurde, automatisch und sofort die geänderten Privilegien. Selektive Verfügbarkeit von Privilegien Rollen können aktiviert und deaktiviert werden, um Privilegien temporär ein- oder auszuschalten. Mit dem Aktivieren einer Rolle können Sie auch überprüfen, ob diese Rolle an einen Benutzer vergeben wurde. Vergabe durch das Betriebssystem Sie können mit Befehlen oder Utilities des Betriebssystems Rollen an Benutzer in der Datenbank zuweisen. Kein kaskadierendes Entziehen von Privilegien Objekt-Privilegien können entzogen werden, ohne dass Privilegien kaskadierend entzogen werden. ..................................................................................................................................................... 19-4 Oracle8i Datenbankadministration Teil I Überblick ..................................................................................................................................................... Verbesserte Performance Wenn Rollen deaktiviert werden, müssen weniger Privilegien beim Ausführen einer Anweisung überprüft werden. Die Verwendung von Rollen verringert die Anzahl der Grant-Einträge, die im Data Dictionary gespeichert sind. ..................................................................................................................................................... Oracle8i Datenbankadministration Teil I 19-5 Lektion 19: Rollen verwalten ..................................................................................................................................................... Rollen anlegen und ändern Rollen anlegen CREATE ROLE sales_clerk; CREATE ROLE hr_clerk IDENTIFIED BY bonus; CREATE ROLE hr_manager IDENTIFIED EXTERNALLY; 19-5 Copyright Oracle Corporation, 1999. All rights reserved. Syntax Mit dem folgenden Befehl legen Sie eine Rolle an CREATE ROLE role [NOT IDENTIFIED | IDENTIFIED {BY password | EXTERNALLY }] mit: role NOT IDENTIFIED IDENTIFIED BY password EXTERNALLY Name der Rolle es wird keine Überprüfung durchgeführt, wenn die Rolle aktiviert wird es wird eine Überprüfung durchgeführt, wenn die Rolle aktiviert wird Passwort, das der Benutzer zum Aktivieren der Rolle eingeben muss der Benutzer wird beim Aktivieren der Rolle von einem externen Service überprüft (Betriebssystem oder Service eines DrittAnbieters) ..................................................................................................................................................... 19-6 Oracle8i Datenbankadministration Teil I Rollen anlegen und ändern ..................................................................................................................................................... So legen Sie mit dem Oracle Enterprise Manager eine Rolle an 1 Starten Sie den Security Manager und melden Sie sich direkt bei der Datenbank an: Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack —>Security Manager 2 Geben Sie die Anmelde-Informationen ein und klicken Sie OK. 3 Wählen Sie den Ordner Roles. Wählen Sie Create aus dem Kontext-Menü, das Sie mit der rechten Maustaste anzeigen. 4 Geben Sie den Namen der Rolle ein und wählen Sie die Identifizierungsmethode. 5 Optional können Sie Rollen und Privilegien an die neue Rolle vergeben, indem Sie die Register Roles, System Privileges oder Object Privileges anklicken (wurde in einer früheren Lektion bereits behandelt). 6 Klicken Sie Create. Hinweis: Der Befehl CREATE ROLE IDENTIFIED GLOBALLY legt fest, dass die Überprüfung von Rollen vom Oracle Security Server durchgeführt wird. Der Oracle Security Server ist ein Sicherheits-Produkt, mit dem Sie Rollen und Benutzer in einer verteilten Umgebung von Oracle zentral einrichten können. Benutzer und Rollen, die mit dem Oracle Security Server definiert werden, können übergreifend über mehrere Datenbanken verwendet werden. Diese Benutzer und Rollen werden globale Benutzer bzw. globale Rollen genannt. Weitere Informationen finden Sie im Handbuch Oracle8i Server Distributed Database Systems. ..................................................................................................................................................... Oracle8i Datenbankadministration Teil I 19-7 Lektion 19: Rollen verwalten ..................................................................................................................................................... Vordefinierte Rollen verwenden Rollen-Name Beschreibung CONNECT, RESOURCE Diese beiden Rollen werden für Abwärtskompatibilität angeboten. DBA Alle System-Privilegien mit WITH ADMIN OPTION EXP_FULL_DATABASE Privilegien zum Exportieren der Datenbank IMP_FULL_DATABASE Privilegien zum Importieren der Datenbank DELETE_CATALOG_ROLE DELETE-Privilegien auf Data Dictionary-Tabellen EXECUTE_CATALOG_ROLE EXECUTE-Privilegien auf Data Dictionary Packages SELECT_CATALOG_ROLE SELECT-Privilegien auf Data Dictionary-Tabellen 19-6 Copyright Oracle Corporation, 1999. All rights reserved. Vordefinierte Rollen Die aufgeführten Rollen sind automatisch für Oracle Datenbanken definiert. Die Rollen CONNECT und RESOURCE werden zur Abwärtskompatibilität zu früheren Versionen von Oracle angeboten. Sie können auf die gleiche Weise geändert werden, wie die anderen Rollen einer Oracle Datenbank. Die Rollen EXP_FULL_DATABASE und IMP_FULL_DATABASE dienen der Vereinfachung beim Aufruf der Import- und Export-Utilities. Die Rollen DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE und SELECT_CATALOG_ROLE dienen dem Zugriff auf Data Dictionary-Views und Packages. Diese Rollen können an Benutzer vergeben werden, die nicht die Rolle DBA besitzen, aber Zugriff auf Views und Tabellen des Data Dictionary benötigen. Andere spezielle Rollen Der Oracle Server legt noch andere Rollen an, die Sie für die Administration der Datenbank autorisieren. Bei vielen Betriebssystemen werden diese Rollen OSOPER und OSDBA genannt. Diese Namen können auf Ihrem Betriebssystem anders lauten. Weitere Rollen werden von SQL-Skripts angelegt, die mit der Datenbank geliefert werden. Zum Beispiel werden die Rollen AQ_ADMINISTRATOR_ROLE und AQ_USER_ROLE durch das Skript dbmsaqad.sql angelegt. Diese Rollen werden von der Funktion Advanced Queuing verwendet. Andere spezielle Rollen (Fortsetzung) Hinweise • Auf manchen Plattformen, wie Solaris, erhalten Privilegienempfänger der Rolle ..................................................................................................................................................... 19-8 Oracle8i Datenbankadministration Teil I Rollen anlegen und ändern ..................................................................................................................................................... • RESOURCE explizit auch das Privileg UNLIMITED TABLESPACE, obwohl dieses Privileg nicht der Rolle zugewiesen ist. Sie sollten sich nicht auf diese Rollen verlassen. Es wird empfohlen, dass Sie Ihre eigenen Rollen für die Datenbanksicherheit entwerfen. Diese Rollen werden eventuell von zukünftigen Oracle Server Versionen nicht automatisch angelegt. ..................................................................................................................................................... Oracle8i Datenbankadministration Teil I 19-9 Lektion 19: Rollen verwalten ..................................................................................................................................................... Rollen ändern ALTER ROLE sales_clerk IDENTIFIED BY commission; ALTER ROLE hr_clerk IDENTIFIED EXTERNALLY; ALTER ROLE hr_manager NOT IDENTIFIED; 19-7 Copyright Oracle Corporation, 1999. All rights reserved. Rollen ändern Für eine Rolle kann nur die Berechtigungsmethode geändert werden. Syntax Mit dem folgenden Befehl ändern Sie die Rolle: ALTER ROLE role {NOT IDENTIFIED | IDENTIFIED {BY password | EXTERNALLY }}; mit: role NOT IDENTIFIED IDENTIFIED BY password EXTERNALLY Name der Rolle es wird keine Überprüfung durchgeführt, wenn die Rolle aktiviert wird es wird eine Überprüfung durchgeführt, wenn die Rolle aktiviert wird Passwort, das der Benutzer zum Aktivieren der Rolle eingeben muss der Benutzer wird beim Aktivieren der Rolle von einem externen Service überprüft (Betriebssystem oder Service eines DrittAnbieters) So ändern Sie mit dem Oracle Enterprise Manager eine Rolle 1 Starten Sie den Security Manager und melden Sie sich direkt bei der Datenbank an: Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack —>Security Manager ..................................................................................................................................................... 19-10 Oracle8i Datenbankadministration Teil I Rollen anlegen und ändern ..................................................................................................................................................... 2 Geben Sie die Anmelde-Informationen ein und klicken Sie OK. 3 Erweitern Sie den Ordner Roles. 4 Wählen Sie die Rolle. 5 Bestimmen Sie die Identifizierungsmethode. 6 Klicken Sie Apply. ..................................................................................................................................................... Oracle8i Datenbankadministration Teil I 19-11 Lektion 19: Rollen verwalten ..................................................................................................................................................... Rollen zuweisen Rollen zuweisen GRANT sales_clerk TO scott; GRANT hr_clerk, TO hr_manager; GRANT hr_manager TO scott WITH ADMIN OPTION; Copyright Oracle Corporation, 1999. All rights reserved. 19-8 Syntax Sie weisen einem Benutzer ein Rolle mit dem gleichen Befehl zu, mit dem ein SystemPrivileg an einen Benutzer vergeben wird: GRANT role [, role ]... TO {user|role|PUBLIC} [, {user|role|PUBLIC} ]... [WITH ADMIN OPTION] mit: role Rolle, die vergeben wird oder Rolle, die die zu vergebende Rolle erhält user Benutzer, der die Rolle erhält role Rolle, die die Rolle erhält PUBLIC vergibt die Rolle an alle Benutzer WITH ADMIN OPTION erlaubt dem Berechtigungsempfänger, die Rolle an andere Benutzer oder Rollen weiterzugeben. Wenn Sie eine Rolle mit dieser Option vergeben, kann der Berechtigungsempfänger die Rollen an andere Benutzer vergeben und sie entziehen, ändern oder löschen. ..................................................................................................................................................... 19-12 Oracle8i Datenbankadministration Teil I Rollen zuweisen ..................................................................................................................................................... Dem Benutzer, der eine Rolle anlegt, wird implizit die Rolle mit ADMIN OPTION zugewiesen. Ein Benutzer, der eine Rolle nicht mit ADMIN OPTION erhalten hat, benötigt das System-Privileg GRANT ANY ROLE, um Rollen an andere Benutzerr zu vergeben und sie zu entziehen. So weisen Sie mit dem Oracle Enterprise Manager eine Rolle zu 1 Starten Sie den Security Manager und melden Sie sich direkt bei der Datenbank an Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack —>Security Manager 2 Geben Sie die Anmelde-Informationen ein und klicken Sie Ok. 3 Erweitern Sie die Ordner Users oder Roles. 4 Wählen Sie den Benutzer oder die Rolle. 5 Wählen Sie das Register Role oder System Privileges. 6 Wählen Sie die Rolle, die vergeben werden soll. 7 Klicken Sie auf den Pfeil nach unten, um die Rolle zur Liste der vergebenen Rollen hinzuzufügen. 8 Sie können, wenn nötig, weitere Rollen hinzufügen. 9 Klicken Sie Apply. ..................................................................................................................................................... Oracle8i Datenbankadministration Teil I 19-13 Lektion 19: Rollen verwalten ..................................................................................................................................................... Verfügbarkeit von Rollen steuern Default-Rollen einrichten ALTER USER scott DEFAULT ROLE hr_clerk, sales_clerk; ALTER USER scott DEFAULT ROLE ALL; ALTER USER scott DEFAULT ROLE ALL EXCEPT hr_clerk; ALTER USER scott DEFAULT ROLE NONE; Copyright Oracle Corporation, 1999. All rights reserved. 19-9 Default-Rollen Einem Benutzer können viele Rollen zugewiesen sein. Eine Default-Rolle ist eine Untermenge dieser Rollen, die automatisch eingeschaltet ist, wenn sich der Benutzer anmeldet. Defaultmäßig werden beim Anmelden alle Rollen eingeschaltet, die dem Benutzer zugewiesen sind. Mit dem Befehl ALTER USER begrenzen Sie die DefaultRollen für einen Benutzer. Syntax Mit folgendem Befehl weisen Sie einem Benutzer Default-Rollen zu: ALTER USER user DEFAULT ROLE {role [,role]... | ALL [EXCEPT role [,role]... ] | NONE} mit: user role ALL EXCEPT Name des Benutzers, an den die Rolle vergeben wird Default-Rolle für den Benutzer außer den in der Klausel EXCEPT angegebenen Rollen werden alle an den Benutzer vergebenen Rollen DefaultRollen. ALL ist der Defaultwert. legt fest, dass die folgenden Rollen nicht Default-Rollen werden ..................................................................................................................................................... 19-14 Oracle8i Datenbankadministration Teil I Verfügbarkeit von Rollen steuern ..................................................................................................................................................... Syntax (Fortsetzung) NONE der Benutzer hat keine Default-Rolle. Die einzigen Privilegien, die der Benutzer nach dem Anmelden besitzt, sind die ihm direkt zugeordneten Privilegien. Da die Rollen vergeben sein müssen, bevor sie als Default definiert werden können, können Sie die Default-Rolle nicht mit dem Befehl CREATE USER setzen. Bei Rollen, die mit einem Passwort authentisiert werden, wird das Passwort nicht benötigt, wenn die Rolle eine Default-Rolle ist. So weisen Sie mit dem Oracle Enterprise Manager Default-Rollen zu 1 Starten Sie den Security Manager und melden Sie sich direkt bei der Datenbank an: Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack —>Security Manager 2 Geben Sie die Anmelde-Informationen ein und klicken Sie OK. 3 Erweitern Sie den Ordner Users. 4 Wählen Sie den Benutzer. 5 Wählen Sie das Register Role. 6 Wählen Sie die Default-Rollen in der Spalte Default aus. 7 Klicken Sie Apply. ..................................................................................................................................................... Oracle8i Datenbankadministration Teil I 19-15 Lektion 19: Rollen verwalten ..................................................................................................................................................... Rollen aktivieren und deaktivieren • Deaktivieren Sie eine Rolle, um die Rollen einen Benutzer temporär zu entziehen. • Aktivieren Sie eine Rolle, um sie temporär zu vergeben. • Der Befehl SET ROLE aktiviert und deaktiviert Rollen. • Default-Rollen für Benutzer werden beim Anmelden aktiviert. • Ein Passwort kann für das Aktivieren einer Rolle erforderlich sein. 19-10 Copyright Oracle Corporation, 1999. All rights reserved. Rollen aktivieren und deaktivieren Sie können Rollen aktivieren und deaktivieren, um temporär die mit den Rollen verbundenen Privilegien verfügbar zu machen oder sie einzuschränken. Eine Rolle muss zuerst an einen Benutzer vergeben sein, bevor sie aktiviert werden kann. Wenn eine Rolle aktiviert ist, kann der Benutzer die Privilegien verwenden, die an die Rolle vergeben sind. Wenn eine Rolle deaktiviert ist, kann der Benutzer die an die Rolle vergebenen Privilegien nicht verwenden, außer das Privileg wurde an den Benutzer direkt vergeben oder an eine andere aktivierte Rolle des Benutzers. Rollen werden für eine Session aktiviert. Bei der nächsten Session sind die Default-Rollen wieder die aktiven Rollen des Benutzers. s Rollen zum Aktivieren angeben Der Befehl SET ROLE und die Prozedur DBMS_SESSION.SET_ROLE aktivieren alle im Befehl angegebenen Rollen und deaktivieren alle anderen Rollen. Rollen können von jedem Werkzeug oder Programm aktiviert werden, das PL/SQL-Befehle erlaubt; eine Rolle kann jedoch in einer gespeicherten Prozedur nicht aktiviert werden. Mit dem Befehl ALTER USER...DEFAULT ROLE können Sie die Rollen angeben, die für einen Benutzer beim Anmelden aktiviert werden. Alle anderen Rollen sind deaktiviert. Ein Passwort kann für das Aktivieren einer Rolle erforderlich sein. Das Passwort muss im Befehl SET ROLE angegeben werden, um die Rolle zu aktivieren. Default-Rollen eines Benutzers benötigen kein Passwort; sie werden beim Anmelden aktiviert, genauso wie Rollen ohne Passwort. ..................................................................................................................................................... 19-16 Oracle8i Datenbankadministration Teil I Verfügbarkeit von Rollen steuern ..................................................................................................................................................... Einschränkungen Eine Rolle kann nicht aus einer gespeicherten Prozedur aktiviert werden, da diese Aktion möglicherweise die Sicherheitsdomäne ändert (Menge von Privilegien), die den Aufruf der Prozedur erlaubt. In PL/SQL können also Rollen in anonymen Blöcken und Anwendungs-Prozeduren (z.B. Prozeduren von Oracle Forms) aktiviert und deaktiviert werden, aber nicht in gespeicherten Prozeduren. Wenn eine gespeicherte Prozedur den Befehl SET ROLE enthält, wird zur Laufzeit folgender Fehler erzeugt: ORA-06565: cannot execute SET ROLE from within stored procedure ..................................................................................................................................................... Oracle8i Datenbankadministration Teil I 19-17 Lektion 19: Rollen verwalten ..................................................................................................................................................... Rollen aktivieren und deaktivieren: Beispiele SET ROLE hr_clerk; SET ROLE sales_clerk IDENTIFIED BY commission; SET ROLE ALL EXCEPT sales_clerk; SET ROLE NONE; 19-11 Copyright Oracle Corporation, 1999. All rights reserved. Syntax Mit dem folgenden Befehl aktivieren oder deaktivieren Sie Rollen: SET ROLE {role [ IDENTIFIED BY PASSWORD ] [, role [ IDENTIFIED BY PASSWORD ]]... | ALL [ EXCEPT role [, role ] ...] | NONE } Der Befehl SET ROLE schaltet alle anderen, an den Benutzer vergebenen Rollen aus. mit: role Name der Rolle IDENTIFIED BY password Passwort, das der Benutzer zum Aktivieren der Rolle eingeben muss ALL außer den in der Klausel EXCEPT angegebenen Rollen werden alle an den Benutzer vergebenen Rollen aktiviert. Sie können mit dieser Option keine Rollen mit Passwort aktivieren. EXCEPT role legt fest, dass die folgenden Rollen nicht aktiviert werden NONE keine an den Benutzer vergebene Rolle wird Default-Rolle. Nur Privilegien, die direkt an den Benutzer vergeben wurden, sind beim Anmelden aktiv. Die Option ALL ohne die Klausel EXCEPT funktioniert nur, wenn keine der zu aktivierenden Rollen ein Passwort besitzt. ..................................................................................................................................................... 19-18 Oracle8i Datenbankadministration Teil I Verfügbarkeit von Rollen steuern ..................................................................................................................................................... Benutzern Rollen entziehen REVOKE sales_clerk FROM scott; REVOKE hr_manager FROM PUBLIC; Copyright Oracle Corporation, 1999. All rights reserved. 19-12 Syntax Sie entziehen eine Rollen einem Benutzer mit dem gleichen Befehl, mit dem ein System-Privileg einem Benutzer entzogen wird: REVOKE role [, role ]... FROM {user|role|PUBLIC} [, {user|role|PUBLIC} ]... mit: role user PUBLIC Rolle, die entzogen wird oder Rolle, von der Rollen entzogen werden Benutzer, dem die System-Privilegien oder Rollen entzogen werden entzieht das Privileg oder die Rolle allen Benutzern So entziehen Sie mit dem Oracle Enterprise Manager eine Rolle 1 Starten Sie den Security Manager und melden Sie sich direkt an der Datenbank an: Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack —>Security Manager 2 Geben Sie die Anmelde-Informationen ein und klicken Sie OK. 3 Erweitern Sie den Ordner Users oder Roles. 4 Wählen Sie den Benutzer oder die Rollen. 5 Wählen Sie das Register Roles oder System Privileges. 6 Wählen Sie unter Granted die Rollen, die Sie entziehen wollen. ..................................................................................................................................................... Oracle8i Datenbankadministration Teil I 19-19 Lektion 19: Rollen verwalten ..................................................................................................................................................... 7 Klicken Sie auf den Pfeil nach oben, um die Rolle aus der Liste der vergebenen Rollen zu entfernen. 8 Klicken Sie Apply. ..................................................................................................................................................... 19-20 Oracle8i Datenbankadministration Teil I Verfügbarkeit von Rollen steuern ..................................................................................................................................................... Rollen löschen DROP ROLE hr_manager; 19-13 Copyright Oracle Corporation, 1999. All rights reserved. Syntax Sie können mit dem folgenden Befehl eine Rolle aus der Datenbank entfernen: DROP ROLE role mit: role Rolle, die entfernt wird Wenn Sie eine Rolle löschen, entzieht der Oracle Server die Rolle allen Benutzern und Rollen, an die sie vergeben wurde und entfernt sie aus der Datenbank. Um eine Rolle löschen zu können, müssen Sie die Rolle mit ADMIN OPTION erhalten haben oder das System-Privileg DROP ANY ROLE besitzen. So entfernen Sie mit dem Oracle Enterprise Manager eine Rolle 1 Starten Sie den Security Manager und melden Sie sich direkt bei der Datenbank an: Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack —>Security Manager 2 Geben Sie die Anmelde-Informationen ein und klicken Sie OK. 3 Erweitern Sie den Ordner Roles. 4 Wählen Sie die Rolle. 5 Wählen Sie Object—>Remove. 6 Bestätigen Sie die Dialogbox mit Yes. ..................................................................................................................................................... Oracle8i Datenbankadministration Teil I 19-21 Lektion 19: Rollen verwalten ..................................................................................................................................................... Richtlinien zum Anlegen von Rollen Benutzer BenutzerRollen AnwendungsRollen HR_CLERK HR_MANAGER PAY_CLERK BENEFITS PAYROLL Privilegien für BENEFITS Privilegien für PAYROLL AnwendungsPrivilegien 19-14 Copyright Oracle Corporation, 1999. All rights reserved. Richtlinien zum Anlegen von Rollen Da Rollen Privilegien für das Ausführen von Aufgaben enthalten, wird als Name der Rollen üblicherweise die Anwendungsaufgabe oder der Job-Titel verwendet. Das obige Beispiel verwendet sowohl Anwendungsaufgaben als auch Job-Titel für die Rollennamen. 1 Legen Sie eine Rolle für jede Anwendungsaufgabe an. Der Name der Anwendungsrolle entspricht einer Aufgabe der Anwendung, wie PAYROLL (Lohnliste). 2 Weisen Sie der Anwendungsrolle die nötigen Privilegien zu, um die Aufgaben der Anwendungsrolle ausführen zu können. 3 Legen Sie für jeden Benutzertyp eine Rolle an. Der Name der Benutzerrolle entspricht einem Job-Titel, wie PAY_CLERK (Lohnabrechnung). 4 Vergeben Sie an Benutzerrollen nur Anwendungsrollen, keine individuellen Privilegien. 5 Vergeben Sie Benutzer- und Anwendungsrollen an Benutzer. Wenn eine Änderung der Anwendung neue Privilegien erfordert, um die Aufgabe Lohnliste durchzuführen, muss der DBA die neuen Privilegien nur der Anwendungsrolle PAYROLL zuweisen. Alle Benutzer, die aktuell diese Aufgabe durchführen, erhalten die neuen Privilegien. ..................................................................................................................................................... 19-22 Oracle8i Datenbankadministration Teil I Verfügbarkeit von Rollen steuern ..................................................................................................................................................... Richtlinien für die Verwendung von Passwörtern und Default-Rollen Passwort-geschützte Nicht-Default-Rolle 19-15 Default-Rolle PAY_CLERK PAY_CLERK_RO INSERT-, UPDATE-, DELETE- und SELECT-Privilegien SELECT-Privilegien Copyright Oracle Corporation, 1999. All rights reserved. Passwörter verwenden • Passwörter bieten zusätzliche Sicherheit, wenn eine Rolle aktiviert wird. Zum Beispiel kann eine Anwendung von einem Benutzer ein Passwort verlangen, wenn die Rolle PAY_CLERK aktiviert wird, da diese Rolle zum Ausstellen von Schecks verwendet wird. • Passwörter ermöglichen es, dass eine Rolle nur über eine Anwendung aktiviert wird. Diese Methode wird im obigen Beispiel gezeigt. – Der DBA hat den Benutzern zwei Rollen zugewiesen, PAY_CLERK und PAY_CLERK_RO. – An PAY_CLERK wurden alle Privilegien vergeben, die für die Lohnbuchhaltung benötigt werden. – Die Rolle PAY_CLERK_RO (RO für Read-Only) besitzt nur die SELECTPrivilegien auf den Tabellen, die für die Lohnbuchhaltung nötig sind. – Der Benutzer kann sich bei SQL*Plus anmelden, um Abfragen durchzuführen, aber er kann die Daten nicht verändern, da PAY_CLERK nicht die DefaultRolle ist und der Benutzer nicht das Passwort für PAY_CLERK kennt. – Wenn sich der Benutzer bei der Lohn-Anwendung (payroll) anmeldet, aktiviert diese die Rolle PAY_CLERK mit dem Passwort, das im Programm codiert ist. Der Benutzer wird nicht zur Eingabe des Passworts aufgefordert. ..................................................................................................................................................... Oracle8i Datenbankadministration Teil I 19-23 Lektion 19: Rollen verwalten ..................................................................................................................................................... Informationen über die Rolle anzeigen Informationen über die Rolle anzeigen Rollen-View Beschreibung DBA_ROLES Alle Rollen in der Datenbank DBA_ROLE_PRIVS An Benutzer und Rollen zugewiesene Rollen ROLE_ROLE_PRIVS An Rollen zugewiesene Rollen DBA_SYS_PRIVS An Benutzer und Rollen zugewiesene System-Privilegien ROLE_SYS_PRIVS An Rollen zugewiesene SystemPrivilegien ROLE_TAB_PRIVS An Rollen zugewiesene TabellenPrivilegien SESSION_ROLES Rollen, die für den Benutzer aktuell aktiviert sind 19-16 Copyright Oracle Corporation, 1999. All rights reserved. Informationen über die Rolle abfragen Viele der Data Dictionary-Views, die Informationen über Benutzer-Privilegien enthalten, enthalten auch Informationen über Rollen-Privilegien. SQL> SELECT role, password_required FROM dba_roles; ROLE PASSWORD ---------------------------------------CONNECT NO RESOURCE NO DBA NO ... .. SELECT_CATALOG_ROLE NO EXECUTE_CATALOG_ROLE NO DELETE_CATALOG_ROLE NO IMP_FULL_DATABASE NO EXP_FULL_DATABASE NO SALES_CLERK YES HR_CLERK EXTERNAL ..................................................................................................................................................... 19-24 Oracle8i Datenbankadministration Teil I Fein-abgestimmte Zugriffskontrolle ..................................................................................................................................................... Fein-abgestimmte Zugriffskontrolle Fein-abgestimmte Zugriffskontrolle Benutzer A B C HR_ACCESS Richtlinie SELECT INSERT UPDATE ORDERS 19-17 Copyright Oracle Corporation, 1999. All rights reserved. Was bedeutet fein-abgestimmte Zugriffskontrolle? Mit der fein-abgestimmten Zugriffskontrolle können Sie Sicherheits-Richtlinien (Policies) mit Funktionen implementieren; diese Sicherheits-Richtlinien weisen Sie dann Tabellen oder Views zu. Die Datenbank erzwingt automatisch die Einhaltung der Sicherheits-Richtlinien, egal wie auf die Daten zugegriffen wird. Sie können: • verschiedene Richtlinien verwenden für SELECT, INSERT, UPDATE und DELETE • Sicherheits-Richtlinien nur dann verwenden, wenn Sie sie benötigen; zum Beispiel für Abrechnungsinformationen • mehr als eine Richtlinie für jede Tabelle verwenden Das PL/SQL-Package DBMS_RLS erlaubt Ihnen die Verwaltung von SicherheitsRichtlinien. Mit diesem Package können Sie Richtlinien hinzufügen, löschen, aktivieren, deaktivieren und erneuern, die Sie erzeugt haben. Hinweis: Die Implementierung fein-abgestimmter Zugriffskontrolle wird nicht in diesem Kurs behandelt. ..................................................................................................................................................... Oracle8i Datenbankadministration Teil I 19-25 Lektion 19: Rollen verwalten ..................................................................................................................................................... Fein-abgestimmte Zugriffskontrolle: wie sie arbeitet • Direkter oder indirekter Zugriff von Benutzern auf Objekte mit einer zugewiesenen Richtlinie (Policy) ruft automatisch die Richtlinie auf. • Package der Richtlinie gibt ein Prädikat zurück (eine WHERE-Bedingung). • Die Datenbank hängt dynamisch das Prädikat an die SQL-Anweisung an. 19-18 Copyright Oracle Corporation, 1999. All rights reserved. Wie arbeitet die fein-abgestimmte Zugriffskontrolle? Die Implementation der fein-abgestimmten Zugriffskontrolle geschieht durch dynamische Modifikation. Wenn ein Benutzer auf ein Objekt zugreift (direkt oder über eine Unterabfrage), das eine Sicherheits-Richtlinie zugewiesen hat, konsultiert das RDBMS automatisch das Package, das die Richtlinien für diese View oder Tabelle implementiert. Die Richtlinie gibt ein Prädikat (Zugriffsbedingung) zurück, das an die Abfrage angehängt wird. Die Anweisung wird dann geparst, optimiert und ausgeführt. Sind einer Tabelle mehrere Richtlinien zugewiesen, verbindet der Data Server die Prädikate, die jede Richtlinie zurückgibt, mit „AND“. Zum Beispiel können Sie eine Richtlinie für Abfragen und eine andere für alle anderen DML-Anweisungen (INSERT, UPDATE, DELETE) planen. ..................................................................................................................................................... 19-26 Oracle8i Datenbankadministration Teil I Zusammenfassung ..................................................................................................................................................... Zusammenfassung Zusammenfassung In dieser Lektion sollten Sie Folgendes gelernt haben: • • • • Rollen anlegen Privilegien an Rollen zuweisen Rollen an Benutzer oder Rollen zuweisen Default-Rollen einrichten 19-19 Copyright Oracle Corporation, 1999. All rights reserved. ..................................................................................................................................................... Oracle8i Datenbankadministration Teil I 19-27 Lektion 19: Rollen verwalten ..................................................................................................................................................... Kurzreferenz Kontext Initialisierungsparameter Dynamische Performance-Views Data Dictionary-Views Referenz keine keine DBA_ROLES DBA_ROLE_PRIVS DBA_SYS_PRIVS ROLE_ROLE_PRIVS ROLE_SYS_PRIVS ROLE_TAB_PRIVS Befehle SESSION_ROLES CREATE_ROLE ALTER ROLE DROP ROLE SET ROLE ALTER USER ... DEFAULT ROLES GRANT Prozeduren und Funktionen in Packages REVOKE DBMS_SESSION.SET_ROLE ..................................................................................................................................................... 19-28 Oracle8i Datenbankadministration Teil I