Datenbanksysteme I Zugriffskontrolle (kleiner Einschub) 18.1.2007 Felix Naumann Überblick 2 ■ Zugriffsrechte ■ Zugriffsrechte erzeugen ■ Zugriffsrechte prüfen ■ Zugriffsrechte vergeben ■ Zugriffsrechte entziehen Felix Naumann | Datenbanksysteme I | WS 06/07 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, … Felix Naumann | Datenbanksysteme I | WS 06/07 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 5. REFERENCES ■ Relation in einer Integritätsbedingung verwenden ■ Kann auf Attributliste eingeschränkt werden 6. USAGE ■ ■ 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 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 4. UPDATE ■ Verändern von Tupeln auf Tabelle (oder Sicht) erlaubt ■ Kann mit Attributliste weiter eingeschränkt werden Felix Naumann | Datenbanksysteme I | WS 06/07 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 Felix Naumann | Datenbanksysteme I | WS 06/07 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 fnaumann; – Passwort! – Später: DISCONNECT connection1 □ Erzeugung eines Moduls (PSM Programm) – Option AUTHORIZATION fnaumann Felix Naumann | Datenbanksysteme I | WS 06/07 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. Felix Naumann | Datenbanksysteme I | WS 06/07 Beispiel 8 ■ INSERT INTO Filmschema.Studios(Name) SELECT DISTINCT StudioName FROM Filmschema.Filme WHERE StudioName NOT IN (SELECT Name FROM Filmschema.Studios); ■ fnaumannn 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 fnaumann erzeugt wurde und das die Option AUTHORIZATION fnaumann enthält. – Aktuelle AutorisierungsID ist AutorisierungsID des Moduls. – Modul und Operation haben gleiche Zugriffsrechte wie fnaumann. 2. Einfügeoperation als Teil eines Moduls, das keinen Besitzer hat. – fnaumann verbindet sich mit CONNECT TO filmDB AUTHORIZATION fnaumann – Aktuelle AutorisierungsID ist fnaumann. 3. fnaumann vergibt alle Zugriffsrechte für Tabellen Filme und Studios an Nutzer mueller (oder an Nutzer PUBLIC) – Operation Teil eines Moduls mit AUTHORIZATION mueller – Aktuelle AutorisierungsID ist mueller. 4. fnaumann vergibt alle Zugriffsrechte für Tabellen Filme und Studios an Nutzer mueller (oder an Nutzer PUBLIC) – Operation aus einer Verbindung mit AUTHORIZATION mueller – Aktuelle AutorisierungsID ist mueller. Felix Naumann | Datenbanksysteme I | WS 06/07 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 Felix Naumann | Datenbanksysteme I | WS 06/07 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. Felix Naumann | Datenbanksysteme I | WS 06/07 5 Zugriffsrechte vergeben – Beispiel 11 ■ Nutzer fnaumann führt aus □ GRANT SELECT, INSERT ON Studios TO mueller, meier WITH GRANT OPTION; □ GRANT SELECT ON Filme TO mueller, meier WITH GRANT OPTION; ■ Nutzer meier führt aus □ GRANT SELECT, INSERT ON Studios TO schmidt; □ GRANT SELECT ON Filme TO schmidt; ■ Mueller führt aus □ GRANT SELECT, INSERT(Name) ON Studios TO schmidt; □ GRANT SELECT ON Filme To schmidt; ■ Überblick mittels eines GRANT-Diagramms Felix Naumann | Datenbanksysteme I | WS 06/07 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 Felix Naumann | Datenbanksysteme I | WS 06/07 6 GRANT-Diagramm – Beispiel 13 fnaumann SELECT ON Filme fnaumann INSERT ON Filme fnaumann SELECT ON Studios meier SELECT ON Filme mueller SELECT ON Filme meier SELECT ON Studios Besitzer mueller SELECT ON Studios WITH GRANT OPTION Einfaches Zugriffsrecht mueller INSERT ON Studios schmidt INSERT(Name) ON Studios ■ ■ ■ Fnaumann:GRANT GRANT Meier: GRANT GRANT Mueller: GRANT GRANT fnaumann INSERT ON Studios schmidt SELECT ON Filme schmidt SELECT ON Studios meier INSERT ON Studios schmidt INSERT ON Studios SELECT, INSERT ON Studios TO mueller, meier WITH GRANT OPTION; SELECT ON Filme TO mueller, meier WITH GRANT OPTION; SELECT, INSERT ON Studios TO schmidt; SELECT ON Filme TO schmidt; SELECT, INSERT(Name) ON Studios TO schmidt; SELECT ON Filme To schmidt; Felix Naumann | Datenbanksysteme I | WS 06/07 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 Felix Naumann | Datenbanksysteme I | WS 06/07 7 Zugriffsrechte entziehen - Beispiel 15 fnaumann SELECT ON Filme fnaumann INSERT ON Filme fnaumann SELECT ON Studios meier SELECT ON Filme mueller SELECT ON Filme mueller SELECT ON Studios meier SELECT ON Studios Besitzer WITH GRANT OPTION Einfaches Zugriffsrecht mueller INSERT ON Studios schmidt INSERT(Name) ON Studios fnaumann INSERT ON Studios schmidt SELECT ON Filme schmidt SELECT ON Studios meier INSERT ON Studios schmidt INSERT ON Studios fnaumann führt aus ■ REVOKE SELECT, INSERT ON Studios FROM meier CASCADE; ■ REVOKE SELECT ON Filme FROM meier CASCADE; Felix Naumann | Datenbanksysteme I | WS 06/07 Zugriffsrechte entziehen - Spezialfälle 16 ■ Entzug eines allgemeinen Zugriffsrechts entzieht nicht ein spezielleres Zugriffsrecht □ GRANT INSERT ON Filme TO mueller □ GRANT INSERT(Titel) ON Filme TO mueller □ REVOKE INSERT ON Filme FROM mueller RESTRICT □ mueller behält Schreibrecht INSERT(Titel) – Eigener Knoten im GRANT-Diagramm ■ Entzug der GRANT-Option □ fnaumann: GRANT SELECT ON Studios TO mueller WITH GRANT OPTION □ mueller: GRANT SELECT ON Studios TO schmidt □ fnaumann: REVOKE GRANT OPTION FÜR SELECT ON Studios FROM mueller CASCADE □ schmidt verliert ebenfalls die Zugriffsrechte Felix Naumann | Datenbanksysteme I | WS 06/07 8 Zugriffsrechteverwaltung in der DB2 Steuerungszentrale 17 Felix Naumann | Datenbanksysteme I | WS 06/07 9