GRANT

Mit dieser Anweisung können differenziert auf einzelnen Objekten der Datenbank, wie Tabellen, Benutzerrechte vergeben werden. Diese hier beschriebenen Rechte heißen auch Objektprivilegien.

Syntax der GRANT-Anweisung:

  <GRANT-Anweisung> ::= 
         GRANT <Privileg> ON [<Datenbankobjekt>]
                          TO <Person> [WITH GRANT OPTION] 
                             [, <Person> [WITH GRANT OPTION]]...;

         <Person>   ::= {  PUBLIC | <Benutzername> } 
         <Privileg> ::= {  ALL    | SELECT | DELETE | INSERT
                         | UPDATE [ Spaltenname [, Spaltenname ]... ] }

<Privileg> gibt das Recht an, welches verliehen werden soll (also das t im Quintupel). Hier unterscheiden sich die unterschiedlichen DBMS in ihren Implementierungen. In Oracle stehen folgende Objekt-Privilegien zur Verfügung:

  • Select (Select – Statement ausführen)
  • Insert (Insert – Statement ausführen)
  • Update (Update –Statement ausführen)
  • Delete (Delete–Statement ausführen)

Neben diesen Objektprivilegien gibt es unter Oracle noch Systemprivilegien, wie z.B. 'GRANT CREATE ANY TABLE', die hier nicht weiter dargestellt sind. Ein Systemprivileg gibt dem Datenbankbenutzer das Recht, bestimmmte Aktionen in der Datenbank auszuführen, wie z.B. eine Tabelle anzulegen oder sich mit der Dstenbank zu verbinden. Ein Objektprivileg dagegen gibt dem Benutzer das Recht, bestimmmte Aktionen auf Datenbankobjekten, wie z.B. das Ändern von Daten in einer Datenbanktabelle, auszuführen.

<datenbankobjekt> ist der Name des Datenbankenobjektes, für welches das neue Recht gelten soll (entspricht o im [[DAC |Quintupel]. Ein Datenbankobjekt kann eine Tabelle oder eine View sein. Es ist immer nur möglich, innerhalb eines GRANT-Befehls, auf ein Datenbankobjekt, nicht auf mehrere, Rechte zu vergeben.

PUBLIC | <Benutzername> : An dieser Stelle müssen alle Subjekte eingetragen werden, an die das Recht verliehen werden soll (entspricht dem s im Quintupel). Es können hier sowohl Benutzernamen als auch Gruppennamen genutzt werden. Das Schlüsselwort „PUBLIC“ gibt an, dass dieses Recht für alle Subjekte gilt.

WITH GRANT OPTION: Wenn ein Recht “WITH GRANT OPTION” generiert wird, bedeutet es, dass alle Subjekte, welches dieses Recht inne haben, dieses an andere Subjekte weitergeben dürfen (dies entspricht dem f im Quintupel).

Das Zugriffsfenster p kann durch den GRANT-Befehl nicht dargestellt werden. Dieses wird im Normalfall über Gruppenrichtlinien umgesetzt.

Unter Oracle-SQL können auch Rechte auf Verzeichnissen eingeräumt werden, die zuvor mit CREATE-DIRECTORY? angelegt wurden. Lesender /Schreibender Zugriff wird durch ein GRANT READ /WRITE ON DIRECTORY TO USER; vergeben.

GRANT#EXECUTE

Unter ORACLE-SQL kann man mit GRANT EXECUTE on <Modulname> to <person>; auch das Recht zur Ausführung eines PL/SQL-Moduls (Prozedur, Funktion) oder eines selbstdefinierten Typs (CREATE-TYPE) vergeben. Dabei werden die Objektprivilegien des Prozedureigentümers an den Aurufer der Prozedur oder der Funktion weitergegeben.

Beispiel 1

Der Benutzer "STUDENT" führt folgende Datenbankstatements aus:

        CREATE TABLE STUDENT_NAMES
        (
            MAT_NR INT,
            VORNAME VARCHAR(50),
            NACHNAME VARCHAR(50)
        );

        GRANT SELECT ON STUDENT_NAMES TO TEACHER;

Nun ist der Benutzer “TEACHER” mit folgendem SQL Statement in der Lage ein “SELECT” Statement auf die Daten des Benutzers “STUDENT” durchzuführen:

        SELECT * FROM STUDENT.STUDENT_NAMES;

Beispiel 2

        GRANT ALL ON Teile TO PUBLIC;
        GRANT SELECT ON Teile TO Hugo;
        GRANT UPDATE (Typ, Bezeichnung) ON Teile TO Fritz; 

Siehe auch: REVOKE

Kategorie: SQL, Sicherheit, G

Quellen:

  • Für eine ausführliche Darstellung der SQL-Standard-Syntax vgl.: Melton, Jim, Simon, Alan, R.: SQL:1999, Understanding Relational Language Components, Morgan Kaufmann Publishers, San Franncisco, 2002, ISBN 1-55860-456-1
  • Für SQL-ORACLE: Oracle® Database SQL Language Reference 11g Release 2 (11.2), E10592-04, http://download.oracle.com/docs/cd/E11882_01/server.112/e10592.pdf
  • Kemper/Eickler - Datenbanksysteme - ISBN: 3-486-57690-9