9. Sicherheitsaspekte Motivation § Datenbanken enthalten häufig sensible Daten (z.B. personenbezogene oder unternehmenskritische) § Vielzahl verschiedener Benutzer hat Zugriff (z.B. Anwendungen, Mitarbeiter, Management) § RDBMSs erlauben Kontrolle der Sichtbarkeit der Daten, um sie gezielt vor unbefugten Zugriffen zu schützen Datenbanken / Kapitel 9: Sicherheitsaspekte 2 Motivation § Beispiel: Tabelle Studenten in Hochschulanwendung Studenten MatrNr Vorname Name Geburtsdatum E-Mail Fach Semester 13765 18877 18879 Moritz Peter Marty Müller Parker McFly 12.01.1987 23.07.1985 10.08.1990 [email protected] [email protected] [email protected] INF BWL INF 1 7 3 § Studenten sollen ihre eigenen Daten sehen und zudem die angegebene E-Mail ändern können § Professoren sollen für Studenten in ihren Vorlesungen alle Daten außer Geburtsdatum und Semester sehen können § Hochschulverwaltung soll alle Daten sehen und ändern können Datenbanken / Kapitel 9: Sicherheitsaspekte 3 Inhalt § 9.1 Sichten § 9.2 Authentisierung § 9.3 Autorisierung Datenbanken / Kapitel 9: Sicherheitsaspekte 4 9.1 Sichten § Sichten (views) definieren einen Ausschnitt der Daten § Ausschnitt der Daten kann Spalten und/oder Zeilen einer einzelnen Tabelle umfassen oder Ergebnis einer möglicherweisen komplexen Anfrage sein § Sichten beim Anfragen nicht von Tabellen unterscheidbar § Reduzierung der Anfragekomplexität und Kontrolle der Sichtbarkeit von Daten u.a. als mögliche Anwendungen Datenbanken / Kapitel 9: Sicherheitsaspekte 5 Sichten § Beispiel: Tabelle Studenten in Hochschulanwendung Studenten MatrNr Vorname Name Geburtsdatum E-Mail Fach Semester 13765 18877 18879 Moritz Peter Marty Müller Parker McFly 12.01.1987 23.07.1985 10.08.1990 [email protected] [email protected] [email protected] INF BWL INF 1 7 3 § Sicht Erstsemester Studenten MatrNr Vorname Name Geburtsdatum E-Mail Fach Semester 13765 Moritz Müller 12.01.1987 [email protected] INF 1 § Sicht Studentenstatistik Studentenstatistik Datenbanken / Kapitel 9: Sicherheitsaspekte Fach Anzahl INF BWL 2 1 6 Sichten in SQL § Views lassen sich mittels CREATE VIEW anlegen 1 CREATE VIEW < Name der Sicht > AS < Anfrage > § Views lassen sich mittels DROP VIEW löschen 1 DROP VIEW < Name der Sicht > § Beispiele: 1 2 CREATE VIEW Erstsemester AS SELECT * FROM Studenten WHERE Semester = 1 1 2 3 4 CREATE VIEW St ud en te ns ta ti st ik AS SELECT Fach , COUNT (*) AS Anzahl FROM Studenten GROUP BY Fach Datenbanken / Kapitel 9: Sicherheitsaspekte 7 Sichten in SQL § Sichten werden von RDBMSs ähnlich zu Makros in Programmiersprachen gehandhabt § Wird eine Sicht in einer Anfrage verwendet, so ersetzt das RDBMS den Namen der Sicht durch die dahinter stehende Anfrage § Sicht führen zu keiner Beschleunigung von Anfragen Datenbanken / Kapitel 9: Sicherheitsaspekte 8 Sichten in SQL § Beispiel: Von Erstsemestern gehörte Vorlesungen 1 2 3 SELECT * FROM Erstsemester e , h ö ren h , Vorlesungen v WHERE e . MatrNr = h . MatrNr AND h . VorlNr = v . VorlNr wird übersetzt nach 1 2 3 4 SELECT * FROM ( SELECT * FROM Studenten WHERE Semester = 1) e , h ö ren h , Vorlesungen v WHERE e . MatrNr = h . MatrNr AND h . VorlNr = v . VorlNr Datenbanken / Kapitel 9: Sicherheitsaspekte 9 Anwendungen von Sichten § Auslagerung wiederkehrender Teilanfragen in Sichten, um die Komplexität anderer Anfragen zu reduzieren 1 2 3 4 CREATE VIEW AS FROM WHERE Vorlesungsverzeichnis SELECT * Professoren p , lesen l , Vorlesungen v p . PersNr = l . PersNr AND l . VorlNr = v . VorlNr § Definition eines Teilausschnitts der Daten, welcher nur für bestimmten Benutzerkreis sichtbar sein soll 1 2 3 CREATE VIEW Studenten_f ü r_Professoren AS SELECT MatrNr , Name , Vorname , E - Mail FROM Studenten Datenbanken / Kapitel 9: Sicherheitsaspekte 10 Änderbare Sichten § Sichten nur dann mittels UPDATE und INSERT änderbar, wenn Zeilen der Sicht genau Zeilen einer einzelnen Tabelle entsprechen, d.h. folgende Bedingungen gelten § die Sicht verwendet genau eine Tabelle als Ursprung, welche selbst verändert werden darf § die Sicht enthält keine Aggregatfunktion, keine Gruppierung und kein DISTINCT § die Spaltennamen sind eindeutig und es ist ein Schlüssel der Ursprungstabelle enthalten § Nicht alle RDBMSs unterstützen änderbare Sichten Datenbanken / Kapitel 9: Sicherheitsaspekte 11 Materialisierte Sichten § RDBMSs unterstützen zudem z.T. materialisierte Sichten 1 CREATE MATERIALIZED VIEW < Name der Sicht > AS < Anfrage > § Materialisierte Sichten werten die dahinter liegenden Anfragen beim Anlegen oder bei der ersten Verwendung aus und speichern die enthaltenen Daten § Materialisierte Sichten können zu einer Beschleunigung von Anfragen führen, benötigen jedoch Speicherplatz und müssen aktualisiert werden, sobald sich die zugrundeliegenden Daten ändern Datenbanken / Kapitel 9: Sicherheitsaspekte 12 9.2 Authentisierung § RDBMS muss Benutzer identifizieren können, um zu entscheiden, welche Daten für ihn sichtbar sein sollen § Identifikation findet meist über Kombination von Benutzernamen und Passwort statt, welche das RDBMS selbst verwaltet § Identifikation kann alternativ über Host-Betriebssystem erfolgen, bei dem sich der Benutzer dann bereits angemeldet haben muss Datenbanken / Kapitel 9: Sicherheitsaspekte 13 Authentisierung in SQL § Benutzer lassen sich mittels CREATE USER anlegen 1 CREATE USER < Benutzername > IDENTIFIED BY < Passwort > oder bei Authentisierung durch Host-Betriebssystem 1 CREATE USER < Benutzername > IDENTIFIED EXTERNALLY § Benutzer lassen sich mittels DROP USER löschen 1 DROP USER < Benutzername > § Syntax und Optionen der Kommandos systemabhängig Datenbanken / Kapitel 9: Sicherheitsaspekte 14 9.3 Autorisierung § Autorisierung legt fest, welche Subjekte (z.B. Benutzer) auf welchen Objekte (z.B. Tabellen) über welche Privilegien (z.B. Einfügen) verfügen, und ob diese weitergegeben werden dürfen § Explizite Autorisierung legt dies für jeden Benutzer separat fest § Implizite Autorisierung legt dies für Rollen fest und weist Benutzern eine oder mehrere Rollen zu Datenbanken / Kapitel 9: Sicherheitsaspekte 15 Explizite Autorisierung john SELECT (Songs) paul INSERT (Songs) ringo george DELETE (Songs) § Privilegien werden Benutzern direkt zugewiesen Datenbanken / Kapitel 9: Sicherheitsaspekte 16 Implizite Autorisierung SELECT (Songs) john Songwriter paul ringo INSERT (Songs) Member DELETE (Songs) george § Privilegien werden Rollen zugewiesen; Benutzer verfügen über eine oder mehrere Rollen und können diese je Sitzung separat aktivieren Datenbanken / Kapitel 9: Sicherheitsaspekte 17 Implizite Autorisierung § Vorteile impliziter Autorisierung sind u.a. § einfachere Verwaltung der Privilegien bei großer Anzahl von Benutzern bzw. häufigen Änderungen § höhere Sicherheit gegenüber versehentlicher Änderung von Daten bzw. Schema, da Rollen für jede Sitzung ausgewählt werden können Datenbanken / Kapitel 9: Sicherheitsaspekte 18 Privilegien in SQL § SQL stellt im Rahmen der Data Control Language (DCL) die Kommandos GRANT und REVOKE bereit, um Benutzern oder Rollen Privilegien zu gewähren oder entziehen § Privilegien auf Tabellen analog zu SQL Kommandos § INSERT, UPDATE, DELETE § Option WITH GRANT OPTION zeigt an, dass das gewährte Privileg weitergegeben werden darf Datenbanken / Kapitel 9: Sicherheitsaspekte 19 Privilegien in SQL § RDBMSs verwalten Tabellen in Schemas (Datenbanken); eine Instanz des RDBMS kann Datenbanken z.B. mehrerer Anwendungen verwalten § Privilegien auf Schema § CREATE TABLE, ALTER TABLE, DROP TABLE § CREATE INDEX, ALTER INDEX, DROP INDEX § REFERENCES (erlaubt Verweis durch Fremdschlüssel) § CONNECT (erlaubt Verbinden mit der Datenbank) § Syntax und Optionen der Kommandos systemabhängig Datenbanken / Kapitel 9: Sicherheitsaspekte 20 Gewähren von Privilegien in SQL § Privilegien lassen sich mittels GRANT gewähren 1 2 3 4 GRANT ON TO WITH < Privilegien > < Tabelle oder Schema und evtl . Spalten > < Benutzer oder ROLLE > GRANT OPTION § Beispiel: Benutzer dknuth soll MatrNr, Name, Vorname sowie E-Mail von Studenten lesen dürfen, dieses Privileg aber nicht weitergeben dürfen 1 2 3 GRANT SELECT ON Studenten ( MatrNr , Name , Vorname , E - Mail ) TO dknuth Datenbanken / Kapitel 9: Sicherheitsaspekte 21 Entziehen von Privilegien in SQL § Privilegien lassen sich mittels REVOKE entziehen 1 2 3 4 REVOKE < Privilegien > ON < Tabelle oder Schema > FROM < Benutzer oder ROLLE > CASCADE § Beispiel: Benutzer aeinstein soll keine Daten in Vorlesungen löschen dürfen; hat er das Privileg zwischenzeitlich an andere weitergegeben, sollen diese Benutzer es behalten dürfen 1 2 3 Datenbanken / Kapitel 9: Sicherheitsaspekte REVOKE DELETE ON Vorlesungen FROM aeinstein 22 Übung Sichten/Sicherheitsaspekte Versandhandel § Zur Überprüfung der regionalen Werbemaßnahmen soll der Umsatz je PLZ in einer Sicht UmsPlz verfügbar sein Datenbanken / Kapitel 9: Sicherheitsaspekte 23 Übung Sichten/Sicherheitsaspekte Versandhandel § Zur Überprüfung der regionalen Werbemaßnahmen soll der Umsatz je PLZ in einer Sicht UmsPlz verfügbar sein 1 2 3 4 CREATE VIEW AS FROM GROUP Datenbanken / Kapitel 9: Sicherheitsaspekte UmsPlz SELECT PLZ , SUM ( Wert ) AS Umsatz Kunden BY PLZ 24 Übung Sichten/Sicherheitsaspekte Versandhandel § Bernd Becker ist Vertriebsbeauftragter für das PLZ-Gebiet 66XXX; er soll alle Daten von dortigen Kunden sehen können; seine Assistentin Sonja Sommer jedoch nur deren Kundennummer, Name und Vorname Datenbanken / Kapitel 9: Sicherheitsaspekte 25 Übung Sichten/Sicherheitsaspekte Versandhandel § Bernd Becker ist Vertriebsbeauftragter für das PLZ-Gebiet 66XXX; er soll alle Daten von dortigen Kunden sehen können; seine Assistentin Sonja Sommer jedoch nur deren Kundennummer, Name und Vorname 1 2 3 4 CREATE VIEW AS FROM WHERE 1 2 3 1 2 3 Kunden66 SELECT * Kunden 65999 < PLZ AND 67000 > PLZ GRANT SELECT ON Kunden66 TO bbecker GRANT SELECT ON Kunden66 ( KundenNr , Name , Vorname ) TO ssommer Datenbanken / Kapitel 9: Sicherheitsaspekte 26 Zusammenfassung § Sichten (views) definieren einen Ausschnitt der Daten und dienen der Komplexitätsreduktion von Anfragen sowie der Kontrolle der Sichtbarkeit von Daten § Authentisierung durch eigene Benutzerverwaltung des RDBMS oder durch das Host-Betriebssystem § Autorisierung gewährt oder entzieht Privilegien (z.B. Einfügen) auf Objekten (z.B. Tabellen) an Subjekte (z.B. Benutzer) Datenbanken / Kapitel 9: Sicherheitsaspekte 27 Literatur [1] A. Kemper und A. Eickler: Datenbanksysteme – Eine Einführung, De Gruyter Oldenbourg, 2015 (Kapitel 12) [2] G. Saake, K.-U. Sattler und A. Heuer: Datenbanken - Konzepte und Sprachen, mitp Professional, 2013 (Kapitel 14 & 15) Datenbanken / Kapitel 9: Sicherheitsaspekte 28