9. Sicherheitsaspekte

Werbung
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
Herunterladen