Datenbanksysteme I Zugriffskontrolle (kleiner Einschub) 18.1.2007 Felix Naumann Überblick 2 Zugriffsrechte Zugriffsrechte erzeugen Zugriffsrechte prüfen Zugriffsrechte vergeben Zugriffsrechte entziehen 1
Grundaufbau 3 SQL geht von Authorization IDs aus Einzelne Nutzer logins Nutzergruppen Zugriffsrechte werden für einzelne Authorization IDs vergeben. Dimensionen der Rechte Wer? (Authorization ID) Nutzername Was? (Operation) read, write, Wofür? (Datenbankobjekt) Relation, Attribut, Schema, Sicht, Zugriffsrechte 4 UNIX definiert drei Arten von Zugriffsrechten read, write, execute SQL definiert neun Arten von Zugriffsrechten (privileges) 1. SELECT Anfragen auf Tabelle oder Sicht erlaubt Kann mit Attributliste weiter eingeschränkt werden 2. INSERT Einfügen von Tupeln auf Tabelle (oder Sicht) erlaubt Kann mit Attributliste weiter eingeschränkt werden 3. DELETE Löschen von Tupeln auf Tabelle (oder Sicht) erlaubt 4. UPDATE Verändern von Tupeln auf Tabelle (oder Sicht) erlaubt Kann mit Attributliste weiter eingeschränkt werden 5. REFERENCES Relation in einer Integritätsbedingung verwenden Kann auf Attributliste eingeschränkt werden 6. USAGE Für Schemata 7. TRIGGER Erlaubt die Definition von Triggern auf einer Relation 8. EXECUTE Erlaubt ein Stück Code (procedure, function) auszuführen 9. UNDER Erlaubt Subtypen zu erstellen Nicht in dieser VL 2
Zugriffsrechte - Beispiel 5 INSERT INTO Studios(Name) SELECT DISTINCT StudioName FROM Filme WHERE StudioName NOT IN (SELECT Name FROM Studios); Welche Rechte werden benötigt? INSERT für Studios INSERT(Name) wäre ausreichend SELECT für Filme SELECT(StudioName) wäre ausreichend SELECT für Studios SELECT(Name) wäre ausreichend Zugriffsrechte erzeugen 6 Zu jedem Datenbankelement existiert ein Besitzer (owner). Drei Arten der Erzeugung von Zugriffsrechten Erzeugung eines Schemas: Der Erzeuger eines Schemas ist zugleich Besitzer des Schemas und aller darin liegenden Elemente (Relationen, Trigger, ). Erstellen einer DB Verbindung (session): CONNECT TO meindb2 AS connection1 AUTHORIZATION ; Passwort! Später: DISCONNECT connection1 Erzeugung eines Moduls (PSM Programm) Option AUTHORIZATION 3
Zugriffsrechte prüfen 7 Jede SQL Operation betrifft zwei Dinge Eine Menge von Datenbankelementen Den Auslöser der Operation hat aktuelle Autorisierungs ID ; entweder Modul AutorisierungsID Verbindungs-AutorisierungsID (session) SQL Operation wird nur ausgeführt falls aktuelle AutorisierungsID alle nötigen Zugriffsrechte besitzt. Beispiel 8 INSERT INTO Filmschema.Studios(Name) SELECT DISTINCT StudioName FROM Filmschema.Filme WHERE StudioName NOT IN (SELECT Name FROM Filmschema.Studios); n besitzt FilmSchema Alle Zugriffsrechte für die beiden Relationen und alle anderen Elemente im Schema Varianten, die Ausführung ermöglichen 1. Einfügeoperation als Teil eines Moduls, das durch erzeugt wurde und das die Option AUTHORIZATION enthält. Aktuelle AutorisierungsID ist AutorisierungsID des Moduls. Modul und Operation haben gleiche Zugriffsrechte wie. 2. Einfügeoperation als Teil eines Moduls, das keinen Besitzer hat. verbindet sich mit CONNECT TO filmdb AUTHORIZATION Aktuelle AutorisierungsID ist. 3. vergibt alle Zugriffsrechte für Tabellen Filme und Studios an Nutzer (oder an Nutzer PUBLIC) Operation Teil eines Moduls mit AUTHORIZATION Aktuelle AutorisierungsID ist. 4. vergibt alle Zugriffsrechte für Tabellen Filme und Studios an Nutzer (oder an Nutzer PUBLIC) Operation aus einer Verbindung mit AUTHORIZATION Aktuelle AutorisierungsID ist. 4
Prinzipien zur Prüfung von Zugriffsrechten 9 1. Falls Schemaelemente vom Nutzer besessen werden, der die aktuelle AutorisierungsID hält, kann Operation ausgeführt werden. Fälle 1 und 2 im Beispiel 2. Falls der Nutzer, der die aktuelle AutorisierungsID hält, entsprechende Rechte zugewiesen bekommen hat, kann die Operation ausgeführt werden. Fälle 3 und 4 im Beispiel 3. Ausführung eines Moduls, das besessen wird von Besitzer der Daten oder von jemanden, der die Rechte zugewiesen bekommen hat, ist möglich. EXECUTE Zugriffsrecht auf Modul ist nötig Fälle 1 und 3 im Beispiel 4. Ausführung eine öffentlich verfügbaren Moduls aus einer Verbindung eines Nutzer mit entsprechenden Zugriffsrechten erlaubt Ausführung der Operation. Fälle 2 und 4 im Beispiel Zugriffsrechte vergeben 10 GRANT Befehl in SQL Erzeugt Kopie eines Zugriffsrechts (Vergeber behält gleiches Zugriffsrecht) Aber mit Kopierschutz: nur WITH GRANT OPTION erlaubt die Weitervergabe GRANT <Zugriffsrechteliste> ON <Datenbankelement> TO <Nutzerliste> WITH GRANT OPTION GRANT ALL PRIVILEGES ON <Datenbankelement> TO <Nutzerliste> WITH GRANT OPTION Voraussetzungen zu Ausführung des GRANT Befehls Ausführer muss selbst alle entsprechenden Rechte haben Oder allgemeinere Rechte: INSERT Studios vs. INSERT Studios(Name) Ausführer muss diese Rechte WITH GRANT OPTION haben. 5
Zugriffsrechte vergeben Beispiel 11 Nutzer führt aus GRANT SELECT, TO, WITH GRANT OPTION; GRANT TO, WITH GRANT OPTION; Nutzer führt aus GRANT SELECT, TO ; GRANT TO ; Mueller führt aus GRANT SELECT, INSERT(Name) ON Studios TO ; GRANT To ; Überblick mittels eines GRANT-Diagramms GRANT-Diagramm 12 Überblick über Netz aus Nutzern und Rechten Visualisierung dessen, was ein DBMS speichert Datenstruktur Knoten speichert ein Paar: (Nutzer, Zugriffsrecht) WITH GRANT OPTION gesondert darstellen Kanten speichern Vergabe des Zugriffsrechts 6
GRANT-Diagramm Beispiel 13 INSERT ON Filme Besitzer WITH GRANT OPTION Einfaches Zugriffsrecht INSERT(Name) ON Studios Fnaumann:GRANT SELECT, TO, WITH GRANT OPTION; GRANT TO, WITH GRANT OPTION; Meier: GRANT SELECT, TO ; GRANT TO ; Mueller: GRANT SELECT, INSERT(Name) ON Studios TO ; GRANT To ; Zugriffsrechte entziehen 14 REVOKE <Zugriffsrechtliste> ON <DB-Element> FROM <Nutzerliste> CASCADE Entzug kaskadiert: Alle Rechte, die einzig aufgrund des nun entzogenen Rechtes vergeben wurden. Jeder Knoten muss von einem Besitzerknoten erreichbar sein. REVOKE <Zugriffsrechtliste> ON <DB-Element> FROM <Nutzerliste> RESTRICT REVOKE wird nicht ausgeführt falls es kaskadierende Auswirkungen hätte. REVOKE GRANT OPTION FOR <DB-Element> FROM <Nutzerliste> CASCADE RESTRICT 7
Zugriffsrechte entziehen - Beispiel 15 INSERT ON Filme Besitzer WITH GRANT OPTION Einfaches Zugriffsrecht INSERT(Name) ON Studios führt aus REVOKE SELECT, FROM CASCADE; REVOKE FROM CASCADE; Zugriffsrechte entziehen - Spezialfälle 16 Entzug eines allgemeinen Zugriffsrechts entzieht nicht ein spezielleres Zugriffsrecht GRANT INSERT ON Filme TO GRANT INSERT(Titel) ON Filme TO REVOKE INSERT ON Filme FROM RESTRICT behält Schreibrecht INSERT(Titel) Eigener Knoten im GRANT-Diagramm Entzug der GRANT-Option : GRANT TO WITH GRANT OPTION : GRANT TO : REVOKE GRANT OPTION FÜR FROM CASCADE verliert ebenfalls die Zugriffsrechte 8
Zugriffsrechteverwaltung in der DB2 Steuerungszentrale 17 9