Überblick

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